On Tue, 20 Aug 2024 14:51:03 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:
>> also interesting, but probably preexisting, and might be platform-specific >> (tested on Cygwin): >> - compile benchmarks with `make test TEST=jaxp:tier1` >> - edit `test/micro/org/openjdk/bench/javax/crypto/full/AESGCMBench.java` >> - touch `test/micro/org/openjdk/bench/javax/crypto/full/BenchBase.java` >> - compile again with `make test TEST=jaxp:tier1` - fails - cannot find >> CryptoBase >> - touch `test/micro/org/openjdk/bench/javax/crypto/full/CryptoBase.java` >> - run the modified benchmark with `make test TEST=micro:small.AESGCMBench` - >> succeeds, but uses the old AESGCMBench.class file >> >> if you touch all 3 files at once (AESGCMBench, BenchBase, CryptoBase) and >> then make, the correct (new) file is used. >> >> (I changed 128 to 129 in [this >> line](https://github.com/openjdk/jdk/blob/b9d49dcef22ab81a087d890bbac0329a5244a2ef/test/micro/org/openjdk/bench/javax/crypto/full/AESGCMBench.java#L45). >> With that change the benchmark throws an exception, so it's easy to check >> if the file was recompiled or not) > > @djelinski (and others), thanks for finding the problem, and I apologize for > nor figuring this out myself. The problem is that when compiling (Java) named > modules, if javac needs to read something from a classfile, it will (also) > look into the output directory (besides system classes, etc.) So, the > incremental build works, because any class that is necessary, but its > compilation has been skipped, is load from output directory. > > That is not the case when compiling code inside the unnamed module - javac > will not, by itself, look into the output directory for classfiles. And the > microbenchmarks are in the unnnamed module. So, when we skip compilation of > e.g. `BenchBase`, there's no place where javac could read it from. The > traditional way to solve this issue was to put the output directory to the > classpath. I have an update for this patch that adds the output directory to > the classpath, running tests on it now. > > Sorry for not realizing/finding this myself. @lahodaj no apologies necessary! I very much appreciate the effort you put into improving the build system. Thanks for making it better! ------------- PR Comment: https://git.openjdk.org/jdk/pull/20616#issuecomment-2299092652