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

Reply via email to