> RecordComponent class has _attributes_count field. > The only user of the field is JvmtiClassFileReconstituter. Incorrect value of > the field causes producing incorrect data for Record attribute. > Parsing Record attribute ClassFileParser skips unknown attributes and may > skip RuntimeInvisibleAnnotations/RuntimeInvisibleTypeAnnotations. > Also annotations can be changed (added/removed) by class redefinition. > The fix removes attributes_count from RecordComponent; > JvmtiClassFileReconstituter calculates correct attributes_count generating > class bytes. > > Testing: > - tier1,tier2,hs-tier5-svc; > - redefineClasses/retransformClasses tests: > - test/jdk/java/lang/instrument > - test/hotspot/jtreg/serviceability/jvmti/RedefineClasses > - test/hotspot/jtreg/vmTestbase/nsk/jvmti/RedefineClasses > - test/hotspot/jtreg/vmTestbase/nsk/jvmti/RetransformClasses
Alex Menkov has updated the pull request incrementally with one additional commit since the last revision: Updated the fix and the test for multiple annotations ------------- Changes: - all: https://git.openjdk.org/jdk/pull/18161/files - new: https://git.openjdk.org/jdk/pull/18161/files/671c71e1..9a53d4ca Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=18161&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=18161&range=03-04 Stats: 82 lines in 2 files changed: 58 ins; 11 del; 13 mod Patch: https://git.openjdk.org/jdk/pull/18161.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/18161/head:pull/18161 PR: https://git.openjdk.org/jdk/pull/18161