Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8238983

[lworld] Incorrect layout/size of inline types.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P4 P4
    • None
    • repo-valhalla
    • hotspot

      It's desirable (wishful thinking) that boxed inline types have the same layout/size as equivalent reference classes (having the same field types).

      https://bugs.openjdk.java.net/browse/JDK-8238768 improves the situation, but not completely.

      Here is the test: http://cr.openjdk.java.net/~skuksenko/valhalla/8238983/

      -XX:+UseNewLayout:
      sizeof(Inline TypeB)=16
      sizeof(Ref TypeB)=16
      sizeof(Inline TypeC)=16
      sizeof(Ref TypeC)=16
      sizeof(Inline TypeI)=16
      sizeof(Ref TypeI)=16
      sizeof(Inline TypeL)=24
      sizeof(Ref TypeL)=24
      sizeof(Inline TypeF)=16
      sizeof(Ref TypeF)=16
      sizeof(Inline TypeD)=24
      sizeof(Ref TypeD)=24
      sizeof(Inline TypeII)=24
      sizeof(Ref TypeII)=24
      sizeof(Inline TypeLL)=32
      sizeof(Ref TypeLL)=32
      sizeof(Inline TypeDD)=32
      sizeof(Ref TypeDD)=32
      sizeof(Inline TypeLI)=32
      sizeof(Ref TypeLI)=24
      sizeof(Inline TypeIL)=32
      sizeof(Ref TypeIL)=24
      sizeof(Inline TypeID)=32
      sizeof(Ref TypeID)=24
      sizeof(Inline TypeDI)=32
      sizeof(Ref TypeDI)=24

      Inline types LI/IL/ID/DI have larger size than their reference analogue.

      For comparison, the old layout has more inconsistencies:
      -XX:-UseNewLayout:
      sizeof(Inline TypeB)=24
      sizeof(Ref TypeB)=16
      sizeof(Inline TypeC)=24
      sizeof(Ref TypeC)=16
      sizeof(Inline TypeI)=24
      sizeof(Ref TypeI)=16
      sizeof(Inline TypeL)=24
      sizeof(Ref TypeL)=24
      sizeof(Inline TypeF)=24
      sizeof(Ref TypeF)=16
      sizeof(Inline TypeD)=24
      sizeof(Ref TypeD)=24
      sizeof(Inline TypeII)=24
      sizeof(Ref TypeII)=24
      sizeof(Inline TypeLL)=32
      sizeof(Ref TypeLL)=32
      sizeof(Inline TypeDD)=32
      sizeof(Ref TypeDD)=32
      sizeof(Inline TypeLI)=32
      sizeof(Ref TypeLI)=24
      sizeof(Inline TypeIL)=32
      sizeof(Ref TypeIL)=24
      sizeof(Inline TypeID)=32
      sizeof(Ref TypeID)=24
      sizeof(Inline TypeDI)=32
      sizeof(Ref TypeDI)=24

            Unassigned Unassigned
            skuksenko Sergey Kuksenko
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: