RFR (L, tedious again, sorry) 8189610: Reconcile jvm.h and all jvm_md.h between java.base and hotspot

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Wed Nov 1 18:09:58 UTC 2017



On 11/1/17 12:51 PM, Daniel D. Daugherty wrote:
> Just one comment about the location of "jvm.h".
>
>
> On 10/30/17 8:07 AM, coleen.phillimore at oracle.com wrote:
>>
>>
>> On 10/28/17 3:46 AM, David Holmes wrote:
>>> On 28/10/2017 3:47 AM, mandy chung wrote:
>>>> On 10/27/17 7:08 AM, coleen.phillimore at oracle.com wrote:
>>>>>
>>>>>
>>>>> On 10/27/17 9:37 AM, David Holmes wrote:
>>>>>>
>>>>>> The one file that is needed is a hotspot file - jvm.h defines the 
>>>>>> interface that hotspot exports via jvm.cpp.
>>>>>>
>>>>>> If you leave jvm.h in hotspot/prims then a very large chunk of 
>>>>>> your boilerplate changes are not needed. The JDK code doesn't 
>>>>>> care what the name of the directory is - whatever it is just gets 
>>>>>> added as a -I directive (the JDK code will include "jvm.h" not 
>>>>>> "prims/jvm.h" the way hotspot sources do.
>>>>>>
>>>>>> This isn't something we want to change back or move again later. 
>>>>>> Whatever we do now we live with.
>>>>>
>>>>> I think it belongs with jni.h and I think the core libraries group 
>>>>> would agree.   It seems more natural there than buried in the 
>>>>> hotspot prims directory.  I guess this is on hold while we have 
>>>>> this debate.   Sigh.
>>>>>
>>>>> Actually with -I directives, changing to jvm.h from prims/jvm.h 
>>>>> would still work.   Maybe we should change the name to jvm.hpp 
>>>>> since it's jvm.cpp though?   Or maybe just have two divergent 
>>>>> copies and close this as WNF. 
>>>>
>>>> I also think hotspot/prims is not a good location. 
>>>> src/java.base/share/include is a well-defined location for native 
>>>> header files.  Maybe internal header files could be placed in 
>>>> include/internal but this is a separate issue .  I should create an 
>>>> issue for jvm.h and jmm.h (I looked at the files under the include 
>>>> directory and jvm.h and jmm.h are the only two internal header 
>>>> files in the include directory).
>>>
>>> Keeping it in prims avoids the need to touch many hotspot files, and 
>>> with no changes needed on the JDK side because we use a -I directive 
>>> to set the include path anyway. This is the exported VM interface so 
>>> it makes sense to me for it to be located in the VM sources.
>>>
>>> But I'm not going to oppose this either way so it's up to Coleen.
>>
>> I've already disagreed that this file belongs in 
>> src/hotspot/share/prims, so the include directive without prims is 
>> preferred.  This allows putting jvm.h in a new place if/when that is 
>> agreed upon.
>
> The jvm.h file describes the internal JVM_* API implemented by 
> prims/jvm.cpp.
> Because this is an internal interface, the jvm.h file would 
> traditionally be
> co-located with the implementation (jvm.cpp) (and not in an include 
> directory).
>
> So I disagree with the proposal to move jvm.h and believe the single copy
> should be in prims/jvm.h.

So, we have a variety of opinions.   Please open another ticket to 
discuss this.
thanks,
Coleen
>
> Dan
>
>
>>>
>>>> I do think removing the duplicated copy of jvm.h is a good change. 
>>>> This is finally possible with the consolidated repository and we no 
>>>> longer need to update two copies of jvm.h for any change to the JVM 
>>>
>>> Unfortunately we did not do this though - hence the divergence 
>>> between the two. The use of int versus long for jint is causing a 
>>> real problem.
>>>
>>> Coleen also hit the other issue on the head. The JNI and JVM 
>>> interfaces are C interfaces, not C++. The JDK code that uses them is 
>>> compiled as C - so all good. But the JVM code that implements them 
>>> is compiled as C++, and that is why we are getting issues with 
>>> differing linkage directives.
>>
>> Well, there is now one source file for jvm.h and jni.h and their 
>> machine dependent counterparts and 2500 lines of duplicated code is 
>> removed with this change.  The issues with jint and linkages are 
>> resolved and tested as well with this changeset.
>>
>> Thanks,
>> Coleen
>>>
>>> David
>>> -----
>>>
>>>> interface.   This change will work with -I directive setting to the 
>>>> new location, if changed later.
>>>>
>>>> What do you think?
>>>>
>>>> Mandy
>>
>



More information about the hotspot-dev mailing list