RFR(XL) 8166417: Integrate Graal-core into JDK for AOT compiler
erik.joelsson at oracle.com
Sat Dec 10 07:42:35 UTC 2016
This looks ok to me.
On 2016-12-09 10:13, Vladimir Kozlov wrote:
> Thank you, Magnus, for review.
> I updated webrevs with merge from latest jdk9/hs which now has Jigsaw
> Removed hotspot/make/Tools.gmk
> Removed all overview.html files in graal sources.
> Fixed hotspot.m4 and changed condition in hotspot.m4 to build graal
> only on linux-x64. The condition will be changed to check ENABLE_AOT
> when merged with AOT changes later.
> Moved module-info.java.extra from share/classes to unix/classes per
> Mandy suggestion since we will build graal only for AOT.
> I have to modify make/Javadoc.gmk to avoid next JPRT failure:
> javadoc: error - No source files for package
> make: ***
> Error 1
> We did not generate docs for Graal before because its package was
> com.oracle.graal. I think it is fine to not generate it now too.
> Please, help if you think make/Javadoc.gmk should be fixed other way.
> By Mandy request changed code in
> hotspot/make/gensrc/Gensrc-jdk.vm.compiler.gmk to produce
> module-info.java.extra with one `provides` clause of the same SPI like
> provides org.graalvm.compiler.hotspot.CompilerConfigurationFactory with
> About moving preprocessors .java files into make/src and .test files
> into hotspot/test.
> First, they are unit tests and not jtreg. Second, we did experiment
> during AOT development with tests move but found that it is merge
> (from graal-core) nightmare and tests execution problems.
> For now we want sources in JDK exactly match sources in
> Oracle Labs continue Graal development very actively and we want to be
> in sync with them without big merge overhead.
> On 12/8/16 5:08 AM, Doug Simon wrote:
>>> On 8 Dec 2016, at 13:50, Magnus Ihse Bursie
>>> <magnus.ihse.bursie at oracle.com> wrote:
>>> On 2016-12-07 23:10, Vladimir Kozlov wrote:
>>>> It is part of JEP 295: Ahead-of-Time Compilation
>>> * In CompileJavaModules.gmk, there is an *extreme* list of excludes.
>>> I note that most of them end in ".test". The proper solution to this
>>> is to move the test code to the test/ directory instead of the src/
>>> directory. Also, four of them are the javac processor build tools.
>>> These should move to make/src, as other build tools.
>> Keeping like it is simplifies pulling changes from
>> https://github.com/graalvm/graal-core. It's possible to write a more
>> sophisticated tool for pulling changes in from the github and places
>> the sources into more openjdk compatible locations. It's up to the
>> HotSpot compiler team whether investing in such a tool makes sense.
>>> * In hotspot.m4: AC_MSG_CHECKING must always be matched by a
>>> AC_MSG_RESULT, even before AC_MSG_ERROR, otherwise the output will
>>> be garbled.
>>> * In hotspot.m4: The test to determine if we should set
>>> INCLUDE_GRAAL is incorrect. It only tests for the default value, not
>>> for the explicitely set (i.e., HOTSPOT_CHECK_JVM_FEATURE(graal)).
>>> * The file hotspot/make/Tools.gmk is broken ("ifeq ($(ENABLE_AOT),
>>> true)" will never evaluate to true). But on the other hand, it is
>>> not needed, and should just be removed. :-)
>>> * The file hotspot/src/jdk.vm.compiler/share/classes/overview.html
>>> seems a bit dangling. Is this supposed to be included in some
>>> Javadoc generation? The html file refers to a projects.jpg and
>>> projects.html that does not exist. Maybe it should just be removed?
>> I would recommend omitting all graal-core overview.html files in
>>> * Finally, just for the record, I too think the source should be
>>> structured according to the OpenJDK praxis. (But I won't fight about
>>>> This is formal review request for integration Graal-core sources
>>>> into OpenJDK. AOT compiler uses Graal-core as backend compiler. We
>>>> need to integrated Graal-core sources into JDK and add build
>>>> changes to build Graal module.
>>>> Note, changes are based on latest jdk9/hs sources which do not have
>>>> latest jigsaw update yet. With jigsaw update small changes will be
>>>> done to module-info.java.extra in java.base:
>>>> exports jdk.internal.misc to jdk.vm.compiler;
>>>> + opens jdk.internal.misc to jdk.vm.compiler;
>>>> - exports com.sun.crypto.provider to jdk.vm.compiler;
>>>> + opens com.sun.crypto.provider to jdk.vm.compiler;
>>>> And changes in top make/GensrcModuleInfo.gmk will not be needed.
>>>> Graal is a dynamic compiler written in Java that integrates with
>>>> the HotSpot JVM. It has a focus on high performance and
>>>> extensibility. In addition, it provides optimized performance for
>>>> Truffle based languages running on the JVM.
>>>> Oracle Labs is developing and maintaining it.
>>>> Here are people who contributed into Graal development (sorry if
>>>> someone is missing or misspelled, please speak):
>>>> ~70k LOC: Douglas Simon
>>>> ~60k LOC: Lukas Stadler
>>>> ~30k LOC: Thomas Wuerthinger
>>>> ~30k LOC: Tom Rodriguez
>>>> ~30k LOC: Roland Schatz
>>>> ~30k LOC: Josef Eisl
>>>> ~30k LOC: Christian Wimmer
>>>> ~16k LOC: Chris Thalinger
>>>> ~13k LOC: Gilles Duboscq
>>>> ~11k LOC: David Leopoldseder
>>>> ~ 8k LOC: Stefan Anzinger
>>>> ~ 8k LOC: Christian Humer
>>>> Other contributors >100 LOC in approximate order of contribution size:
>>>> Michael Berg, Bernhard Urban, Miguel Garcia, Yudi Zheng, Christos
>>>> Kotselidis, Andreas Woess, Stefan Rumzucker, Aleksandar Prokopec,
>>>> Christian Haeubl, Morris Meyer, Matthias Grimmer, Erik Eckstein,
>>>> Josef Haider, Manuel Rigger, Michael Haupt, Niclas Adlertz,
>>>> Jaroslav Tulach, Chris Seaton, Peter B. Kessler, Christian Wirth,
>>>> Benoit Daloze.
More information about the hotspot-dev