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

FieldLayout/OldLayoutCheck.java fails in 32-bit VMs

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: 15
    • Fix Version/s: 15
    • Component/s: hotspot
    • Labels:
    • Subcomponent:
    • Resolved In Build:
      b16

      Description

      Fails with:

      java.lang.RuntimeException: Misplaced long field: expected 8 to equal 16
      at jdk.test.lib.Asserts.fail(Asserts.java:594)
      at jdk.test.lib.Asserts.assertEquals(Asserts.java:205)
      at OldLayoutCheck.main(OldLayoutCheck.java:67)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.base/java.lang.reflect.Method.invoke(Method.java:564)
      at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
      at java.base/java.lang.Thread.run(Thread.java:832)

      In 32 bit VM, header size is smaller, so fields are at different layouts.

      JOL says for 11u:

       $ ~/Install/jdk11.0.6-ea.32/bin/java -jar jol-cli.jar internals LIClass -cp .
      # Running 32-bit HotSpot VM.
      # Objects are 8 bytes aligned.
      # Field sizes by type: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes]
      # Array element sizes: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes]

      Instantiated the sample instance via default constructor.

      LIClass object internals:
       OFFSET SIZE TYPE DESCRIPTION VALUE
            0 4 (object header) 05 00 00 00 (00000101 00000000 00000000 00000000) (5)
            4 4 (object header) 50 e9 5c a2 (01010000 11101001 01011100 10100010) (-1570969264)
            8 8 long LIClass.l 0
           16 4 int LIClass.i 0
           20 4 (loss due to the next object alignment)
      Instance size: 24 bytes
      Space losses: 0 bytes internal + 4 bytes external = 4 bytes total

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                shade Aleksey Shipilev
                Reporter:
                shade Aleksey Shipilev
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: