> Please review this change re-implementing the FieldInfo data structure. > > The FieldInfo array is an old data structure storing fields metadata. It has > poor extension capabilities, a complex management code because of lack of > strong typing and semantic overloading, and a poor memory efficiency. > > The new implementation uses a compressed stream to store those metadata, > achieving better memory density and providing flexible extensibility, while > exposing a strongly typed set of data when uncompressed. The stream is > compressed using the unsigned5 encoding, which alreay present in the JDK > (because of pack200) and the JVM (because JIT compulers use it to comrpess > debugging information). > > More technical details are available in the CR: > https://bugs.openjdk.org/browse/JDK-8292818 > > Those changes include a re-organisation of fields' flags, splitting the > previous heterogeneous AccessFlags field into three distincts flag > categories: immutable flags from the class file, immutable fields defined by > the JVM, and finally mutable flags defined by the JVM. > > The SA, CI, and JVMCI, which all used to access the old FieldInfo array, have > been updated too to deal with the new FieldInfo format. > > Tested with mach5, tier 1 to 7. > > Thank you.
Frederic Parain has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains ten commits: - Style fixes - Merge remote-tracking branch 'upstream/master' into fieldinfo_unsigned5 - Style fixes - SA and JVMCI fixes - Fixes includes and style - SA additional caching from Chris Plummer - Addressing comments from first reviews - Merge remote-tracking branch 'upstream/master' into fieldinfo_unsigned5 - Reimplementation of FieldInfo as an unsigned5 stream ------------- Changes: https://git.openjdk.org/jdk/pull/12855/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12855&range=06 Stats: 1790 lines in 54 files changed: 927 ins; 483 del; 380 mod Patch: https://git.openjdk.org/jdk/pull/12855.diff Fetch: git fetch https://git.openjdk.org/jdk pull/12855/head:pull/12855 PR: https://git.openjdk.org/jdk/pull/12855