This commit is contained in:
Jesper Wilhelmsson 2022-07-14 06:19:40 +00:00
commit a7f83582d3
9 changed files with 117 additions and 61 deletions

View File

@ -170,13 +170,13 @@ import static java.util.concurrent.TimeUnit.NANOSECONDS;
* <p> Platform threads inherit the daemon status, thread priority, and when not
* provided (or not selected by a security manager), the thread group.
*
* <p> Inherited Access Control Context:
* Creating a platform thread {@linkplain AccessController#getContext() captures} the
* <p> Creating a platform thread {@linkplain AccessController#getContext() captures} the
* {@linkplain AccessControlContext caller context} to limit the {@linkplain Permission
* permissions} of {@linkplain AccessController#doPrivileged(PrivilegedAction) privileged
* actions} performed by code in the thread. Creating a virtual thread does not capture
* the caller context; virtual threads have no permissions when executing code that
* performs privileged actions.
* permissions} of the new thread when it executes code that performs a {@linkplain
* AccessController#doPrivileged(PrivilegedAction) privileged action}. The captured
* caller context is the new thread's "Inherited {@link AccessControlContext}". Creating
* a virtual thread does not capture the caller context; virtual threads have no
* permissions when executing code that performs a privileged action.
*
* <p> Unless otherwise specified, passing a {@code null} argument to a constructor
* or method in this class will cause a {@link NullPointerException} to be thrown.

View File

@ -167,7 +167,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
}
/**
* Reads a byte at the given offset from this address, with the given layout.
* Reads a byte from this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -188,7 +188,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
byte get(ValueLayout.OfByte layout, long offset);
/**
* Writes a byte at the given offset from this address, with the given layout.
* Writes a byte into this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -209,7 +209,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
void set(ValueLayout.OfByte layout, long offset, byte value);
/**
* Reads a boolean at the given offset from this address, with the given layout.
* Reads a boolean from this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -230,7 +230,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
boolean get(ValueLayout.OfBoolean layout, long offset);
/**
* Writes a boolean at the given offset from this address, with the given layout.
* Writes a boolean into this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -251,7 +251,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
void set(ValueLayout.OfBoolean layout, long offset, boolean value);
/**
* Reads a char at the given offset from this address, with the given layout.
* Reads a char from this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -272,7 +272,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
char get(ValueLayout.OfChar layout, long offset);
/**
* Writes a char at the given offset from this address, with the given layout.
* Writes a char into this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -293,7 +293,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
void set(ValueLayout.OfChar layout, long offset, char value);
/**
* Reads a short at the given offset from this address, with the given layout.
* Reads a short from this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -314,7 +314,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
short get(ValueLayout.OfShort layout, long offset);
/**
* Writes a short at the given offset from this address, with the given layout.
* Writes a short into this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -335,7 +335,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
void set(ValueLayout.OfShort layout, long offset, short value);
/**
* Reads an int at the given offset from this address, with the given layout.
* Reads an int from this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -356,7 +356,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
int get(ValueLayout.OfInt layout, long offset);
/**
* Writes an int at the given offset from this address, with the given layout.
* Writes an int into this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -377,7 +377,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
void set(ValueLayout.OfInt layout, long offset, int value);
/**
* Reads a float at the given offset from this address, with the given layout.
* Reads a float from this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -398,7 +398,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
float get(ValueLayout.OfFloat layout, long offset);
/**
* Writes a float at the given offset from this address, with the given layout.
* Writes a float into this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -419,7 +419,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
void set(ValueLayout.OfFloat layout, long offset, float value);
/**
* Reads a long at the given offset from this address, with the given layout.
* Reads a long from this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -440,7 +440,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
long get(ValueLayout.OfLong layout, long offset);
/**
* Writes a long at the given offset from this address, with the given layout.
* Writes a long into this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -461,7 +461,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
void set(ValueLayout.OfLong layout, long offset, long value);
/**
* Reads a double at the given offset from this address, with the given layout.
* Reads a double from this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -482,7 +482,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
double get(ValueLayout.OfDouble layout, long offset);
/**
* Writes a double at the given offset from this address, with the given layout.
* Writes a double into this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -503,7 +503,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
void set(ValueLayout.OfDouble layout, long offset, double value);
/**
* Reads an address at the given offset from this address, with the given layout.
* Reads an address from this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -524,7 +524,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
MemoryAddress get(ValueLayout.OfAddress layout, long offset);
/**
* Writes an address at the given offset from this address, with the given layout.
* Writes an address into this address at the given offset, with the given layout.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -567,7 +567,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
char getAtIndex(ValueLayout.OfChar layout, long index);
/**
* Writes a char to this address at the given index, scaled by the given layout size.
* Writes a char into this address at the given index, scaled by the given layout size.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -611,7 +611,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
short getAtIndex(ValueLayout.OfShort layout, long index);
/**
* Writes a short to this address at the given index, scaled by the given layout size.
* Writes a short into this address at the given index, scaled by the given layout size.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -655,7 +655,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
int getAtIndex(ValueLayout.OfInt layout, long index);
/**
* Writes an int to this address at the given index, scaled by the given layout size.
* Writes an int into this address at the given index, scaled by the given layout size.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -699,7 +699,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
float getAtIndex(ValueLayout.OfFloat layout, long index);
/**
* Writes a float to this address at the given index, scaled by the given layout size.
* Writes a float into this address at the given index, scaled by the given layout size.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -743,7 +743,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
long getAtIndex(ValueLayout.OfLong layout, long index);
/**
* Writes a long to this address at the given index, scaled by the given layout size.
* Writes a long into this address at the given index, scaled by the given layout size.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -787,7 +787,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
double getAtIndex(ValueLayout.OfDouble layout, long index);
/**
* Writes a double to this address at the given index, scaled by the given layout size.
* Writes a double into this address at the given index, scaled by the given layout size.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash
@ -831,7 +831,7 @@ public sealed interface MemoryAddress extends Addressable permits MemoryAddressI
MemoryAddress getAtIndex(ValueLayout.OfAddress layout, long index);
/**
* Writes an address to this address at the given index, scaled by the given layout size.
* Writes an address into this address at the given index, scaled by the given layout size.
* <p>
* This method is <a href="package-summary.html#restricted"><em>restricted</em></a>.
* Restricted methods are unsafe, and, if used incorrectly, their use might crash

View File

@ -1083,7 +1083,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Reads a byte at the given offset from this segment, with the given layout.
* Reads a byte from this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be read.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1104,7 +1104,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a byte at the given offset from this segment, with the given layout.
* Writes a byte into this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be written.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1126,7 +1126,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Reads a boolean at the given offset from this segment, with the given layout.
* Reads a boolean from this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be read.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1147,7 +1147,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a boolean at the given offset from this segment, with the given layout.
* Writes a boolean into this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be written.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1169,7 +1169,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Reads a char at the given offset from this segment, with the given layout.
* Reads a char from this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be read.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1190,7 +1190,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a char at the given offset from this segment, with the given layout.
* Writes a char into this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be written.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1212,7 +1212,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Reads a short at the given offset from this segment, with the given layout.
* Reads a short from this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be read.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1233,7 +1233,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a short at the given offset from this segment, with the given layout.
* Writes a short into this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be written.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1255,7 +1255,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Reads an int at the given offset from this segment, with the given layout.
* Reads an int from this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be read.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1276,7 +1276,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes an int at the given offset from this segment, with the given layout.
* Writes an int into this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be written.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1298,7 +1298,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Reads a float at the given offset from this segment, with the given layout.
* Reads a float from this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be read.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1319,7 +1319,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a float at the given offset from this segment, with the given layout.
* Writes a float into this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be written.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1341,7 +1341,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Reads a long at the given offset from this segment, with the given layout.
* Reads a long from this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be read.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1362,7 +1362,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a long at the given offset from this segment, with the given layout.
* Writes a long into this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be written.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1384,7 +1384,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Reads a double at the given offset from this segment, with the given layout.
* Reads a double from this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be read.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1405,7 +1405,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a double at the given offset from this segment, with the given layout.
* Writes a double into this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be written.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1427,7 +1427,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Reads an address at the given offset from this segment, with the given layout.
* Reads an address from this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be read.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1448,7 +1448,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes an address at the given offset from this segment, with the given layout.
* Writes an address into this segment at the given offset, with the given layout.
*
* @param layout the layout of the memory region to be written.
* @param offset offset in bytes (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1494,7 +1494,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a char to this segment at the given index, scaled by the given layout size.
* Writes a char into this segment at the given index, scaled by the given layout size.
*
* @param layout the layout of the memory region to be written.
* @param index index (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1543,7 +1543,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a short to this segment at the given index, scaled by the given layout size.
* Writes a short into this segment at the given index, scaled by the given layout size.
*
* @param layout the layout of the memory region to be written.
* @param index index (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1592,7 +1592,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes an int to this segment at the given index, scaled by the given layout size.
* Writes an int into this segment at the given index, scaled by the given layout size.
*
* @param layout the layout of the memory region to be written.
* @param index index (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1641,7 +1641,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a float to this segment at the given index, scaled by the given layout size.
* Writes a float into this segment at the given index, scaled by the given layout size.
*
* @param layout the layout of the memory region to be written.
* @param index index (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1690,7 +1690,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a long to this segment at the given index, scaled by the given layout size.
* Writes a long into this segment at the given index, scaled by the given layout size.
*
* @param layout the layout of the memory region to be written.
* @param index index (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1739,7 +1739,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes a double to this segment at the given index, scaled by the given layout size.
* Writes a double into this segment at the given index, scaled by the given layout size.
*
* @param layout the layout of the memory region to be written.
* @param index index (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,
@ -1788,7 +1788,7 @@ public sealed interface MemorySegment extends Addressable permits AbstractMemory
}
/**
* Writes an address to this segment at the given index, scaled by the given layout size.
* Writes an address into this segment at the given index, scaled by the given layout size.
*
* @param layout the layout of the memory region to be written.
* @param index index (relative to this segment). For instance, if this segment is a {@linkplain #isNative() native} segment,

View File

@ -319,6 +319,9 @@ public interface SegmentAllocator {
*/
default MemorySegment allocateArray(MemoryLayout elementLayout, long count) {
Objects.requireNonNull(elementLayout);
if (count < 0) {
throw new IllegalArgumentException("Negative array size");
}
return allocate(MemoryLayout.sequenceLayout(count, elementLayout));
}

View File

@ -78,7 +78,9 @@ public final class ArenaAllocator implements SegmentAllocator {
return slice;
} else {
long maxPossibleAllocationSize = bytesSize + bytesAlignment - 1;
if (maxPossibleAllocationSize > blockSize) {
if (maxPossibleAllocationSize < 0) {
throw new OutOfMemoryError();
} else if (maxPossibleAllocationSize > blockSize) {
// too big
return newSegment(bytesSize, bytesAlignment);
} else {

View File

@ -148,6 +148,7 @@ vmTestbase/nsk/jvmti/scenarios/jni_interception/JI05/ji05t001/TestDescription.ja
vmTestbase/nsk/jvmti/scenarios/jni_interception/JI06/ji06t001/TestDescription.java 8219652 aix-ppc64
vmTestbase/nsk/jvmti/SetJNIFunctionTable/setjniftab001/TestDescription.java 8219652 aix-ppc64
vmTestbase/nsk/jvmti/AttachOnDemand/attach002a/TestDescription.java 8277812 generic-all
vmTestbase/nsk/jvmti/scenarios/capability/CM03/cm03t001/TestDescription.java 8073470 linux-all
vmTestbase/gc/lock/jni/jnilock002/TestDescription.java 8192647 generic-all

View File

@ -1,3 +1,25 @@
#
# Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
com/sun/jdi/EATests.java#id0 8264699 generic-all
@ -33,6 +55,8 @@ com/sun/jdi/StepTest.java 8285422 generic-all
com/sun/jdi/redefine/RedefineTest.java 8285422 generic-all
com/sun/jdi/redefineMethod/RedefineTest.java 8285422 generic-all
com/sun/jdi/InvokeHangTest.java 8290200 macosx-x64
####
# JDI SDE Tests
# Use custom classpath
@ -42,5 +66,3 @@ com/sun/jdi/sde/MangleTest.java 8285423 generic-all
com/sun/jdi/sde/MangleStepTest.java 8285423 generic-all
com/sun/jdi/sde/TemperatureTableTest.java 8285423 generic-all
com/sun/jdi/sde/SourceDebugExtensionTest.java 8285423 generic-all
com/sun/jdi/EATests.java#id0 8264699 generic-all

View File

@ -160,6 +160,17 @@ public class TestSegmentAllocators {
allocator.allocate(1, 3);
}
@Test(dataProvider = "allocators", expectedExceptions = IllegalArgumentException.class)
public void testBadAllocationArrayNegSize(SegmentAllocator allocator) {
allocator.allocateArray(ValueLayout.JAVA_BYTE, -1);
}
@Test(expectedExceptions = OutOfMemoryError.class)
public void testBadArenaNullReturn() {
SegmentAllocator segmentAllocator = SegmentAllocator.newNativeArena(MemorySession.openImplicit());
segmentAllocator.allocate(Long.MAX_VALUE, 2);
}
@Test
public void testArrayAllocateDelegation() {
AtomicInteger calls = new AtomicInteger();

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2021, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -29,7 +29,7 @@
* @library ..
* @library /test/lib
* @build jdk.test.lib.RandomFactory
* @run main/othervm/timeout=240 -Xmx4G LargeGatheringWrite
* @run main/othervm/timeout=480 -Xmx4G LargeGatheringWrite
* @key randomness
*/
import java.io.IOException;
@ -51,7 +51,17 @@ public class LargeGatheringWrite {
private static final Random RND = RandomFactory.getRandom();
private static long t0;
private static void printTime(String msg) {
System.out.printf("TIMESTAMP: %-16s: %f seconds%n", msg,
(System.nanoTime() - t0)/1000000000.0);
}
public static void main(String[] args) throws IOException {
t0 = System.nanoTime();
printTime("start");
// Create direct and heap buffers
ByteBuffer direct = ByteBuffer.allocateDirect(GB);
ByteBuffer heap = ByteBuffer.allocate(GB);
@ -83,6 +93,7 @@ public class LargeGatheringWrite {
// Write the data to a temporary file
Path tempFile = Files.createTempFile("LargeGatheringWrite", ".dat");
printTime("before writing");
System.out.printf("Writing %d bytes of data...%n", totalLength);
try (FileChannel fcw = FileChannel.open(tempFile, CREATE, WRITE);) {
// Print size of individual writes and total number written
@ -93,11 +104,14 @@ public class LargeGatheringWrite {
bytesWritten += n;
}
System.out.printf("Total of %d bytes written\n", bytesWritten);
printTime("after writing");
// Verify the content written
try (FileChannel fcr = FileChannel.open(tempFile, READ);) {
byte[] bytes = null;
for (ByteBuffer buf : bigBuffers) {
printTime("before verifying");
// For each buffer read the corresponding number of bytes
buf.rewind();
int length = buf.remaining();
@ -117,10 +131,13 @@ public class LargeGatheringWrite {
String msg = String.format("mismatch: %d%n", mismatch);
throw new RuntimeException(msg);
}
printTime("after verifying");
}
}
} finally {
Files.delete(tempFile);
}
printTime("end");
}
}