2424/*
2525 * @test
2626 * @requires vm.bits == 64
27+ * @modules java.base/sun.nio.ch
2728 * @run testng/othervm -Xmx4G -XX:MaxDirectMemorySize=1M --enable-native-access=ALL-UNNAMED TestSegments
2829 */
2930
@@ -58,6 +59,12 @@ public void testZeroLengthNativeSegment() {
5859 try (Arena arena = Arena .ofConfined ()) {
5960 var segment = arena .allocate (0 , 1 );
6061 assertEquals (segment .byteSize (), 0 );
62+ if (segment .address () == 0 ) {
63+ fail ("Segment address is zero" );
64+ }
65+ if (segment .address () == arena .allocate (0 , 1 ).address ()) {
66+ fail ("Segment address was not distinct" );
67+ }
6168 MemoryLayout seq = MemoryLayout .sequenceLayout (0 , JAVA_INT );
6269 segment = arena .allocate (seq );
6370 assertEquals (segment .byteSize (), 0 );
@@ -71,6 +78,20 @@ public void testZeroLengthNativeSegment() {
7178 }
7279 }
7380
81+ @ Test
82+ public void testZeroLengthNativeSegmentHyperAligned () {
83+ long byteAlignment = 1024 ;
84+ try (Arena arena = Arena .ofConfined ()) {
85+ var segment = arena .allocate (0 , byteAlignment );
86+ assertEquals (segment .byteSize (), 0 );
87+ if (segment .address () == 0 ) {
88+ fail ("Segment address is zero" );
89+ }
90+ assertTrue (segment .maxByteAlignment () >= byteAlignment );
91+ }
92+ }
93+
94+
7495 @ Test (expectedExceptions = { OutOfMemoryError .class ,
7596 IllegalArgumentException .class })
7697 public void testAllocateTooBig () {
0 commit comments