[9] RFR(M) 8166416: [AOT] Integrate JDK build changes and launcher 'jaotc' for AOT compiler

Erik Joelsson erik.joelsson at oracle.com
Fri Oct 28 08:34:07 UTC 2016

On 2016-10-27 20:18, Doug Simon wrote:
>> On 27 Oct 2016, at 20:12, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
>> On 10/27/16 10:55 AM, Christian Thalinger wrote:
>>>> On Oct 27, 2016, at 2:40 AM, Erik Joelsson <erik.joelsson at oracle.com> wrote:
>>>> On 2016-10-27 02:45, Vladimir Kozlov wrote:
>>>>> AOT JEP:
>>>>> https://bugs.openjdk.java.net/browse/JDK-8166089
>>>>> Subtask:
>>>>> https://bugs.openjdk.java.net/browse/JDK-8166416
>>>>> Webrev:
>>>>> http://cr.openjdk.java.net/~kvn/aot/top.webrev/
>>>> hotspot.m4: 296: Comment is misleading. Should just be removed.
>>>> CompileJavaModules.gmk: Use of -g flag for java compilation is controlled globally. Please remove.
>>> There is a reason for that.  Some debugging related Graal code makes use of classfile information to provide better information.  Since this is Java and not C++ it *is* possible to have pleasant debugging experience even in product builds.  I want this to be there.
>> Chris, do we need -g for JVMCI module too for that?
> I’m assuming Chris is referring to the use of debug info for snippet parameter names:
> https://github.com/graalvm/graal-core/blob/7c94891d06f08a635367df6078696b9388332f3b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java#L191
> For that use case, -g is not necessary for JVMCI. That said, I think it’s always useful for Java code to be compiled with -g ;-)
I'm sure most people do. To my knowledge, -g is disabled by default for 
footprint reasons in the JRE. This has been up for discussion before and 
I think the conclusion was that ideally we want -g in the JDK image but 
not in the JRE image. That has not been possible before (without 
compiling everything twice), but maybe jlink is able to strip the debug 
info from java classes now? In that case we could consider globally 
enabling -g for product builds.

For now if you have a special case for needing -g on specific modules, 
at the very least provide a comment explaining why. Otherwise it will 
just be cleaned away in the future.


> -Doug
>>>> Main.gmk: buildtools-hotspot should be declared inside the CREATING_BUILDJDK conditional like all other buildtools targets.
>>>>> http://cr.openjdk.java.net/~kvn/aot/jdk.webrev/
>>>> The extra exports from java.base needs to go in a new jdk/src/java.base/share/classes/module-info.java.extra since the module jdk.vm.compiler is optional.
>>>>> http://cr.openjdk.java.net/~kvn/aot/hs.make.webrev/
>>>> Lib-jdk.aot.gmk: Please inline LDFLAGS and LIBS and add $(LIBS_JDKLIB) to LIBS since that will provide -lc on Solaris automatically. No need to set DEBUG_SYMBOLS or STRIP_SYMBOLS as the defaults should be correct and controlled globally.
>>>> /Erik
>>>>> Please, review build changes for AOT.  Only Linux/x64 platform is supported. 'jaotc' and AOT part of Hotspot will be build only on Linux/x64.
>>>>> Changes include new 'jaotc' launcher, makefile changes to build jdk.vm.compiler (Graal) and jdk.aot modules used by 'jaotc'.
>>>>> Both modules sources are located in Hotspot: hotspot/src/jdk.aot and hotspot/src/jdk.vm.compiler.
>>>>> 'jaotc' requires installed libelf package on a system to build native part of 'jaotc'. It is used to generated AOT shared libraries (.so) as result of AOT compilation.
>>>>> Hotspot makefile changes will be pushed together with Hotspot AOT changes.
>>>>> Thanks,
>>>>> Vladimir

More information about the build-dev mailing list