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

FieldLayout/OldLayoutCheck.java fails in 32-bit VMs

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 15
    • 15
    • hotspot
    • b16

      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

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

              Created:
              Updated:
              Resolved: