On Fri, 9 Sep 2022 11:41:08 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:
>> Currently, when doing a small change inside a module that does not affect >> the API of the module, the build system will skip rebuild of the dependent >> modules. If there's a change that affects the module's API, the dependent >> modules are recompiled. So far, this seems to work reasonably. >> >> But, for large modules, like `java.base`, any change to any of the module's >> sources will cause a full rebuild of that module, which may take tens of >> seconds. This patch strives to improve that, by: >> -parsing only sources that were modified first, >> -computing an "API" hash for them, >> -if there is not a significant change in the file(s), only recompile the >> files, if there are significant changes to the files, recompile the whole >> module, as before >> >> There is no attempt made to determine the minimal set of files that needs to >> be reparsed, all module's files are reparsed when the internal API check >> fails. This is in line with the existing code to skip the build of dependent >> modules. >> >> Sadly, this is overall a bit more difficult to do, so the implementation >> uses some javac internals. The existing build-only `Depend` plugin is >> enhanced so that parsing of the initial files is redirected to go through >> the plugin, and it decides parses either only the modified files, or all >> files. This redirection requires a change to `main/JavaCompiler`, which is >> not in the boot JDK, so reflection is currently used to install the >> redirection. Once the new classes are in a boot JDK, we could clean up, and >> avoid the reflection. >> >> On my laptop, doing: >> >> touch src/java.base/share/classes/java/lang/Object.java ; time make >> >> can take well over 30s without this patch. With this patch, it takes <5s for >> me. Changes to e.g. only method bodies should typically not require rebuild >> of the whole module. >> >> The caveats of this patch include: >> -it is more involved than the existing plugin >> -it only speeds up only incremental Java compilation, so the other tasks the >> build system is doing when running `make`, like timestamp checks or starting >> the build server, are still happening. This may slow down builds on >> platforms with slow I/O >> -for modules that are part of the interim toolchain (like jdk.compiler), the >> interim build is not using this new approach, and it will likely be slow. We >> might try to improve once the required hooks are part of the boot JDK >> -as the check for modified "internal" API cannot use attribution (as it runs >> too early), it tries to be safe, and will mark some changes as "internal API >> changes", even if they in fact don't affect the file's API. This may be >> especially true for some changes to imports. >> -it is necessary to store an (internal) API hash for every file, in addition >> to one for every module which is stored currently > > Jan Lahoda has updated the pull request incrementally with one additional > commit since the last revision: > > Regenerating modfiles as necessary. I ran some tests (in a semi-automated fashion), results seem reasonable: ## Non-API change in java.base: sed -e 's/^}//* */}/' <src/java.base/share/classes/java/lang/Object.java.orig >src/java.base/share/classes/java/lang/Object.java time make result: Building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' Compiling up to 3192 files for java.base [stderr] compiling module: java.base, all Java inputs: 3192, modified files (Java or non-Java): 1, full recompile: false, non-Java modified files: Stopping sjavac server Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' real 0m3,414s user 0m5,188s sys 0m1,328s ## Non-API change in java.compiler: sed -e 's/^}//* */}/' <src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java.orig >src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java time make result: Building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' Compiling up to 127 files for BUILD_java.compiler.interim Compiling up to 127 files for java.compiler [stderr] compiling module: java.compiler, all Java inputs: 127, modified files (Java or non-Java): 1, full recompile: false, non-Java modified files: Stopping sjavac server Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' real 0m15,530s user 0m22,948s sys 0m2,337s ## Package-private method added to java.base: sed -e 's/^}/static void testMethod() {} }/' <src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java.orig >src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java time make result: Building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' Compiling up to 3192 files for java.base [stderr] compiling module: java.base, all Java inputs: 3192, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: Optimizing the exploded image Stopping sjavac server Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' real 0m30,190s user 0m6,852s sys 0m1,548s ## Package-private method added to java.compiler: sed -e 's/^}/static void testMethod() {} }/' <src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java.orig >src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java time make | tee -a test-output result: Building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' Compiling up to 127 files for BUILD_java.compiler.interim Compiling up to 127 files for java.compiler [stderr] compiling module: java.compiler, all Java inputs: 127, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: Optimizing the exploded image Stopping sjavac server Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' real 0m17,368s user 0m23,831s sys 0m2,328s ## Public method added to java.base: sed -e 's/^}//** test. */public static void testMethod() {} }/' <src/java.base/share/classes/java/lang/Object.java.orig >src/java.base/share/classes/java/lang/Object.java time make result: Building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' Compiling up to 3192 files for java.base [stderr] compiling module: java.base, all Java inputs: 3192, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: [stderr] compiling module: java.datatransfer, all Java inputs: 18, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.instrument, all Java inputs: 10, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.logging, all Java inputs: 35, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.compiler, all Java inputs: 127, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.scripting, all Java inputs: 15, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.net.http, all Java inputs: 142, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.management, all Java inputs: 330, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.transaction.xa, all Java inputs: 5, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.smartcardio, all Java inputs: 22, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.internal.jvmstat, all Java inputs: 61, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.zipfs, all Java inputs: 14, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.charsets, all Java inputs: 120, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.crypto.ec, all Java inputs: 35, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.xml, all Java inputs: 1848, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.internal.ed, all Java inputs: 3, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.dynalink, all Java inputs: 68, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.httpserver, all Java inputs: 60, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.incubator.concurrent, all Java inputs: 4, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.internal.opt, all Java inputs: 51, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.incubator.vector, all Java inputs: 50, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.internal.le, all Java inputs: 103, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jartool, all Java inputs: 31, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.internal.vm.ci, all Java inputs: 203, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.management, all Java inputs: 24, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jdwp.agent, all Java inputs: 1, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jfr, all Java inputs: 260, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jsobject, all Java inputs: 4, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.net, all Java inputs: 9, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.nio.mapmode, all Java inputs: 2, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.random, all Java inputs: 11, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.sctp, all Java inputs: 33, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.unsupported, all Java inputs: 9, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.security.sasl, all Java inputs: 30, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.rmi, all Java inputs: 106, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.attach, all Java inputs: 15, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.crypto.cryptoki, all Java inputs: 76, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.internal.vm.compiler, all Java inputs: 1, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.localedata, all Java inputs: 1838, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.internal.vm.compiler.management, all Java inputs: 1, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jcmd, all Java inputs: 40, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.compiler, all Java inputs: 413, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jstatd, all Java inputs: 11, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jdi, all Java inputs: 254, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.management.jfr, all Java inputs: 15, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.naming, all Java inputs: 198, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.naming.dns, all Java inputs: 16, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.naming.rmi, all Java inputs: 8, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.management.rmi, all Java inputs: 16, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.security.jgss, all Java inputs: 212, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.sql, all Java inputs: 77, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.prefs, all Java inputs: 15, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.xml.dom, all Java inputs: 94, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.xml.crypto, all Java inputs: 271, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.management.agent, all Java inputs: 30, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.sql.rowset, all Java inputs: 56, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.security.jgss, all Java inputs: 16, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.security.auth, all Java inputs: 30, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jdeps, all Java inputs: 139, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jshell, all Java inputs: 97, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.javadoc, all Java inputs: 243, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jlink, all Java inputs: 90, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.desktop, all Java inputs: 2769, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: java.se, all Java inputs: 1, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.unsupported.desktop, all Java inputs: 8, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.editpad, all Java inputs: 3, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.accessibility, all Java inputs: 18, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jconsole, all Java inputs: 64, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.jpackage, all Java inputs: 57, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi [stderr] compiling module: jdk.hotspot.agent, all Java inputs: 940, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.base/_the.java.base_pubapi Optimizing the exploded image Stopping sjavac server Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' real 1m27,775s user 0m52,536s sys 0m7,856s ## Public method added to java.compiler: sed -e 's/^}//** test. */public static void testMethod() {} }/' <src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java.orig >src/java.compiler/share/classes/javax/lang/model/util/ElementFilter.java time make result: Building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' Compiling up to 127 files for BUILD_java.compiler.interim Compiling up to 127 files for java.compiler [stderr] compiling module: java.compiler, all Java inputs: 127, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: [stderr] compiling module: java.se, all Java inputs: 1, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.compiler/_the.java.compiler_pubapi [stderr] compiling module: jdk.compiler, all Java inputs: 413, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.compiler/_the.java.compiler_pubapi [stderr] compiling module: jdk.jdeps, all Java inputs: 139, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.compiler/_the.java.compiler_pubapi [stderr] compiling module: jdk.jshell, all Java inputs: 97, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.compiler/_the.java.compiler_pubapi [stderr] compiling module: jdk.javadoc, all Java inputs: 243, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: /home/jlahoda/src/jdk/jdk/build/linux-x86_64-server-release/jdk/modules/java.compiler/_the.java.compiler_pubapi Optimizing the exploded image Stopping sjavac server Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' real 0m36,685s user 0m30,044s sys 0m3,273s ## Error in a newly added added public method to java.base: sed -e 's/^}/public static void testMethod() {} }/' <src/java.base/share/classes/java/lang/Object.java.orig >src/java.base/share/classes/java/lang/Object.java time make git diff src/java.base/share/classes/java/lang/Object.java | patch -R -p1 sed -e 's/^}//** test. */public static void testMethod() {} }/' <src/java.base/share/classes/java/lang/Object.java.orig >src/java.base/share/classes/java/lang/Object.java echo Fixed: time make result: Building target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' Compiling up to 3192 files for java.base [stderr] compiling module: java.base, all Java inputs: 3192, modified files (Java or non-Java): 1, full recompile: true, non-Java modified files: ------------- PR: https://git.openjdk.org/jdk/pull/10104