RFR: 8247536: Support for pre-generated java.lang.invoke classes in CDS static archive [v12]

Yumin Qi minqi at openjdk.java.net
Tue Oct 6 20:46:17 UTC 2020


> This patch is reorganized after 8252725, which is separated from this patch to refactor jlink glugin code. The previous
> webrev with hg can be found at: http://cr.openjdk.java.net/~minqi/2020/8247536/webrev-05. With 8252725 integrated, the
> regeneration of holder classes is simply to call the new added GenerateJLIClassesHelper.cdsGenerateHolderClasses
> function.  Tests: tier1-4

Yumin Qi has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains
23 commits:

 - Added new separate function to CDS for logging species and modified the existing function to log lambda form invokers.
   Changed isDumpLoadedClassList to a reasonable name isDumpingClassList as read only in CDS.
 - Merge branch 'master' of https://github.com/openjdk/jdk into jdk-8247536
 - Removed unused imports.
 - Fixed comments with correct class and method name in CDS, removed unused variables after last change.
 - Moved and renamed cdsGenerateHolderClasses from GenerateJLIClassesHelp to CDS as generateLambdaFormHolderClasses. Added
   input verification function in CDS before class generation. Added more test scenarios. Removed trailing unused ending
   words for output of lambda form trace line in case of DumpLoadedClassList.
 - Move the check work to java, restore code in VM. Modified test code according to the changes. The invoke name
   verififcation is not implemented since not all the holder class are processed, not all the functions of processed
   holder classes are added. For holder class with DirectMethodHandle in its name, only the name in the
   DMH_METHOD_TYPE_MAP keyset is added, ithe line with other names just gets skipped silently. This makes the verification
   on invoke names difficul, a name not in the keyset should not fail the test. Also add a boolean to
   cdsGenerateHolderClasses to indicate call path.
 - Remove trailing word of line which is not used in holder class regeneration. There is a trailing LF (Line Feed) so trim
   white spaces from both front and end of the line or it will fail method type validation.
 - In case of exception happens during reloading class, CHECK will return without free the allocated buffer for class
   bytes so moved the buffer allocation and freeing to caller. Also removed test 6 since there is not guarantee that we
   can give a signature which will always fail. Additional changes to GenerateJLIClassesHelper according to review
   suggestion.
 - Merge branch 'master' of https://github.com/openjdk/jdk into jdk-8247536
 - Merge branch 'master' of https://git.openjdk.java.net/jdk into jdk-8247536
 - ... and 13 more: https://git.openjdk.java.net/jdk/compare/82fe023b...f5584dcf

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

Changes: https://git.openjdk.java.net/jdk/pull/193/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=193&range=11
  Stats: 567 lines in 21 files changed: 545 ins; 14 del; 8 mod
  Patch: https://git.openjdk.java.net/jdk/pull/193.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/193/head:pull/193

PR: https://git.openjdk.java.net/jdk/pull/193



More information about the build-dev mailing list