On Wed, 1 Mar 2023 10:12:41 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

> The OpenJDK build is using a Plugin called Depend to avoid building Java code 
> unnecessarily. It has two parts, one is checking module APIs (and forces 
> rebuild of dependent modules if a dependency changes), and second takes 
> modified files in a module, and attempts to detect whether it is enough to 
> recompile these files, or if the whole module must be rebuilt.
> 
> There's a bug in the second part, it does not track changes in primitive 
> types, so e.g. a change of a type of a public field form `int` to `long` does 
> not cause recompile.
> 
> This patch fixes that by visiting the primitive types, and including them in 
> the hash computed for the given file.
> 
> There's also another problem - if a module is being recompiled from scratch 
> due to a change in a file hash, the new/updated file hashes are written 
> immediately. And if the compilation consequently fails, the state is not 
> compared to the original hash, but to the hash from the broken compilation, 
> which may lead to missing compilation of some files.
> 
> This patch moves the code to write the new hashes to the end of compilation, 
> and only do that when there were no compile-time errors during the 
> compilation.

This pull request has now been integrated.

Changeset: dbb562d3
Author:    Jan Lahoda <jlah...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/dbb562d3b128094cb5bca55237e1331e83526adb
Stats:     113 lines in 2 files changed: 77 ins; 23 del; 13 mod

8303355: The Depend plugin does fully recompile when primitive type changes

Reviewed-by: erikj, vromero

-------------

PR: https://git.openjdk.org/jdk/pull/12801

Reply via email to