RFR: JDK-8189861: Refactor CacheFind
Erik Joelsson
erik.joelsson at oracle.com
Mon Apr 1 19:22:50 UTC 2019
The macro CacheFind is a bit awkward to use with FillCacheFind. The
naming is also not that great. This patch tries to improve this
situation. The main difference is naming of the macros. Now the main
entry point is "FindFiles". There are a couple of others as well, see
MakeBase.gmk for details. Another notable difference is that
FillCacheFind is now called FillFindCache and should not be called with
$(eval) anymore.
As an alternative to running $(shell find ...), I have implemented a
recursive macro using $(wildcard ...) that mimics the basic FindFiles
functionality. I have found that on Windows/Cygwin, it's generally a bit
faster than spawning external processes. With this change, the default
FindFiles will use the wildcard find macro on Windows.
My initial idea for this patch was to essentially get rid of
FillFindCache and have FindFiles add everything to the cache
automatically. Unfortunately, that did not do anything to improve
performance as in the large majority of cases, we do not reuse find
results. I think it's better to explicitly cache things in the few
locations where it actually helps.
I have added a decent set of tests in TestMakeBase.gmk that verifies the
functionality of the new macros.
Bug: https://bugs.openjdk.java.net/browse/JDK-8189861
<https://bugs.openjdk.java.net/browse/JDK-8189861?filter=-1>
Webrev: http://cr.openjdk.java.net/~erikj/8189861/webrev.01/index.html
/Erik
More information about the build-dev
mailing list