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 stong 
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.

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

Commit messages:
 - 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=00
  Issue: https://bugs.openjdk.org/browse/JDK-8292818
  Stats: 1699 lines in 52 files changed: 897 ins; 446 del; 356 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

Reply via email to