> Hello,
> 
> Please refer to the JBS issue for a more detailed description of the 
> background of this change. In summary, I suggest we only keep the array of 
> InlineLayoutInfo for InstanceKlasses which need it, which are Klasses that 
> have fields that have been inlined.
> 
> To make the transition to this easier, I suggest we change the following 
> properties in FieldLayoutBuilder: 
> 
> _has_inline_type_fields
> _has_flattening_information
> 
> to
> 
> _has_inlineable_fields
> _has_inlined_fields
> 
> The `_has_inlineable_fields` property is only used for printing and 
> `_has_inlined_fields` is the property we expose out to the ClassFileParser, 
> telling us that this class has inlined fields, so the array of 
> InlineLayoutInfo must be "preserved" and is possible to read from. Hence, the 
> array is now only safe to access if `InstanceKlass::has_inlined_fields` is 
> true, or simply if the actual field being accessed is flat 
> (`fieldDescriptor::is_flat`).
> 
> I only found one place (in ciReplay.cpp) where we access the array of 
> InlineLayoutInfo even though we might not have any inlined fields and only 
> fields that are inlineable. I've changed this to use the normal "reference" 
> path for fields that aren't flat.
> 
> Testing:
> * Oracle's tier1-5, hotspot_valhalla and jdk_valhalla

Joel Sikström has updated the pull request with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains 11 additional commits 
since the last revision:

 - Merge branch 'lworld' into JDK-8376221_inlinelayoutinfo_array_optimization
 - LayoutKind assertion for flat fields
 - Remove mention of 'warning' in comment
 - Exception check should really be an assert
 - Move inlineable check to static helper
 - Comment for second CLEAR_PENDING_EXCEPTION
 - Clear exception before setting inline klass
 - Split assert in field sorting methods
 - IOOB assert message
 - InstanceKlass instead of Klass for set_inline_layout_info_klass
 - ... and 1 more: https://git.openjdk.org/valhalla/compare/d6fdb2aa...b934da63

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

Changes:
  - all: https://git.openjdk.org/valhalla/pull/1966/files
  - new: https://git.openjdk.org/valhalla/pull/1966/files/e28ad2ad..b934da63

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=valhalla&pr=1966&range=04
 - incr: https://webrevs.openjdk.org/?repo=valhalla&pr=1966&range=03-04

  Stats: 1966 lines in 125 files changed: 1215 ins; 317 del; 434 mod
  Patch: https://git.openjdk.org/valhalla/pull/1966.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1966/head:pull/1966

PR: https://git.openjdk.org/valhalla/pull/1966

Reply via email to