JVM interface header src location?

Andrew Leonard andrew_m_leonard at uk.ibm.com
Fri Jan 12 09:03:17 UTC 2018


Thanks for the feedback David. I agree with your point, and understand JVM 
implementors are really just hotspot imitators(!) :-)
It would be as a convenience to 3rd party JVM implementors, and ease the 
job of extracting just those necessary files...
Cheers
Andrew

Andrew Leonard
Java Runtimes Development
IBM Hursley
IBM United Kingdom Ltd
Phone internal: 245913, external: 01962 815913
internet email: andrew_m_leonard at uk.ibm.com 




From:   David Holmes <david.holmes at oracle.com>
To:     Andrew Leonard <andrew_m_leonard at uk.ibm.com>, 
hotspot-dev at openjdk.java.net
Date:   11/01/2018 22:01
Subject:        Re: JVM interface header src location?



Hi Andrew,

On 12/01/2018 1:34 AM, Andrew Leonard wrote:
> Hi, with the new repo consolidation in JDK10+ the JVM interface headers
> (jvm.h and jvm_md.h) have moved from under
> jdk/src/java.base/share|<OS>/native/include/ to
>      src/hotspot/share/include/jvm.h
>      src/hotspot/os/windows/include/jvm_md.h
>      src/hotspot/os/posix/include/jvm_md.h
> This implies these are "hotspot" headers, when they are actually generic

I wouldn't call them generic. They define the API that hotspot provides 
for use by the JDK. The JDK in turn is written to use whatever hotspot 
exports. Now we can treat that as a de-facto generic definition of what 
any VM that works with the JDK needs to provide, but it would be wrong 
to pretend/assume that this is somehow some nice clean abstract 
interface between the JDK and any VM.

In short any VM you want to plug into the JDK has to impersonate hotspot 
from this API perspective.

> JVM interface definitions. So for example if previously a 3rd party JVM
> implementor (eg.Eclipse OpenJ9) who does not clone the hotspot repo, and
> now does not clone the hotspot "folder", will now fail to find these
> generic headers...

Right ... it would have been good to have gotten some feedback on this 
when we did the file consolidation work:

https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8189610&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=NaV8Iy8Ld-vjpXZFDdTbgGlRTghGHnwM75wUPd5_NUQ&m=cmDyJIWgzK0nr0h1WHwc0TKtWEAPcz8g_pN-h1eSKEQ&s=VgwZL88Bpwz77SYajN1T2qt0yfLDzC0WRgTczBJtzSw&e=


and then relocation:

https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8190484&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=NaV8Iy8Ld-vjpXZFDdTbgGlRTghGHnwM75wUPd5_NUQ&m=cmDyJIWgzK0nr0h1WHwc0TKtWEAPcz8g_pN-h1eSKEQ&s=fED9Yhb2hFGVHbWqOIrtjZsOSvhU7FDmv_SwI5ay3nM&e=


> Wouldn't it be better for these headers to be under some generic "jvm" 
or
> "base" include folder?

It would solve your problem. :) And I'm not opposed to moving them as a 
convenience to you. My main concern would be that this is not seen as a 
supported, exported, external contract between the JDK libraries and any 
VM. I would still consider it a private interface between the JDK and 
hotspot that changes whenever hotspot (or the JDK) needs it to.

Cheers,
David

> Thanks
> Andrew
> 
> Andrew Leonard
> Java Runtimes Development
> IBM Hursley
> IBM United Kingdom Ltd
> Phone internal: 245913, external: 01962 815913
> internet email: andrew_m_leonard at uk.ibm.com
> 
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number
> 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 
3AU
> 




Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU


More information about the hotspot-dev mailing list