MemoryLayoutPREVIEW
AddressLayoutPREVIEW
, ValueLayout.OfBooleanPREVIEW
, ValueLayout.OfBytePREVIEW
, ValueLayout.OfCharPREVIEW
, ValueLayout.OfDoublePREVIEW
, ValueLayout.OfFloatPREVIEW
, ValueLayout.OfIntPREVIEW
, ValueLayout.OfLongPREVIEW
, ValueLayout.OfShortPREVIEW
ValueLayout
is a preview API of the Java platform.
A layout that models values of basic data types. Examples of values modelled by a value layout are
integralvalues (either signed or unsigned),
floating-pointvalues and
addressvalues.
Each value layout has a size, an alignment (both expressed in bytes), a byte order, and a carrier, that is, the Java type that should be used when accessingPREVIEW a region of memory using the value layout.
This class defines useful value layout constants for Java primitive types and addresses.
ByteBuffer
. Moreover, the alignment constraint of JAVA_LONG
and JAVA_DOUBLE
is set to 8 bytes on 64-bit platforms, but only to 4 bytes on 32-bit platforms.
Nested Classes
static interface
Preview.
A value layout whose carrier is boolean.class
.
static interface
Preview.
A value layout whose carrier is byte.class
.
static interface
Preview.
A value layout whose carrier is char.class
.
static interface
Preview.
A value layout whose carrier is double.class
.
static interface
Preview.
A value layout whose carrier is float.class
.
static interface
Preview.
A value layout whose carrier is int.class
.
static interface
Preview.
A value layout whose carrier is long.class
.
static interface
Preview.
A value layout whose carrier is short.class
.
Fields
An address layout constant whose size is the same as that of a machine address (
size_t
), byte alignment set to
sizeof(size_t)
, byte order set to
ByteOrder.nativeOrder()
.
An unaligned address layout constant whose size is the same as that of a machine address (
size_t
), and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
boolean
, byte alignment set to 1, and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
byte
, byte alignment set to 1, and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
char
, byte alignment set to 2, and byte order set to
ByteOrder.nativeOrder()
.
An unaligned value layout constant whose size is the same as that of a Java
char
and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
double
, (platform-dependent) byte alignment set to
ADDRESS.byteSize()
, and byte order set to
ByteOrder.nativeOrder()
.
An unaligned value layout constant whose size is the same as that of a Java
double
and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
float
, byte alignment set to 4, and byte order set to
ByteOrder.nativeOrder()
.
An unaligned value layout constant whose size is the same as that of a Java
float
and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
int
, byte alignment set to 4, and byte order set to
ByteOrder.nativeOrder()
.
An unaligned value layout constant whose size is the same as that of a Java
int
and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
long
, (platform-dependent) byte alignment set to
ADDRESS.byteSize()
, and byte order set to
ByteOrder.nativeOrder()
.
An unaligned value layout constant whose size is the same as that of a Java
long
and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
short
, byte alignment set to 2, and byte order set to
ByteOrder.nativeOrder()
.
An unaligned value layout constant whose size is the same as that of a Java
short
and byte order set to
ByteOrder.nativeOrder()
.
Creates a strided var handle that can be used to access a memory segment as multi-dimensional array.
Returns the carrier associated with this value layout.
Returns the value's byte order.
Returns a memory layout with the same characteristics as this layout, but with the given alignment constraint (in bytes).
Returns a memory layout with the same characteristics as this layout, but with the given name.
Returns a value layout with the same characteristics as this layout, but with the given byte order.
Returns a memory layout with the same characteristics as this layout, but with no name.
Methods declared in interface java.lang.foreign.MemoryLayoutPREVIEWbyteAlignment, byteOffset, byteOffsetHandle, byteSize, equals, hashCode, name, select, sliceHandle, toString, varHandle
An address layout constant whose size is the same as that of a machine address (
size_t
), byte alignment set to
sizeof(size_t)
, byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
byte
, byte alignment set to 1, and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
boolean
, byte alignment set to 1, and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
char
, byte alignment set to 2, and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
short
, byte alignment set to 2, and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
int
, byte alignment set to 4, and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
long
, (platform-dependent) byte alignment set to
ADDRESS.byteSize()
, and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
float
, byte alignment set to 4, and byte order set to
ByteOrder.nativeOrder()
.
A value layout constant whose size is the same as that of a Java
double
, (platform-dependent) byte alignment set to
ADDRESS.byteSize()
, and byte order set to
ByteOrder.nativeOrder()
.
An unaligned address layout constant whose size is the same as that of a machine address (
size_t
), and byte order set to
ByteOrder.nativeOrder()
. Equivalent to the following code:
ADDRESS.withByteAlignment(1);
An unaligned value layout constant whose size is the same as that of a Java
char
and byte order set to
ByteOrder.nativeOrder()
. Equivalent to the following code:
JAVA_CHAR.withByteAlignment(1);
An unaligned value layout constant whose size is the same as that of a Java
short
and byte order set to
ByteOrder.nativeOrder()
. Equivalent to the following code:
JAVA_SHORT.withByteAlignment(1);
An unaligned value layout constant whose size is the same as that of a Java
int
and byte order set to
ByteOrder.nativeOrder()
. Equivalent to the following code:
JAVA_INT.withByteAlignment(1);
An unaligned value layout constant whose size is the same as that of a Java
long
and byte order set to
ByteOrder.nativeOrder()
. Equivalent to the following code:
JAVA_LONG.withByteAlignment(1);
An unaligned value layout constant whose size is the same as that of a Java
float
and byte order set to
ByteOrder.nativeOrder()
. Equivalent to the following code:
JAVA_FLOAT.withByteAlignment(1);
An unaligned value layout constant whose size is the same as that of a Java
double
and byte order set to
ByteOrder.nativeOrder()
. Equivalent to the following code:
JAVA_DOUBLE.withByteAlignment(1);
Returns the value's byte order.
Returns a value layout with the same characteristics as this layout, but with the given byte order.
order
- the desired byte order.
Returns a memory layout with the same characteristics as this layout, but with no name.
withoutName
in interface MemoryLayoutPREVIEW
Creates a
stridedvar handle that can be used to access a memory segment as multi-dimensional array. This array has a notional sequence layout featuring
shape.length
nested sequence layouts. The element layout of the innermost sequence layout in the notional sequence layout is this value layout. The resulting var handle is obtained as if calling the
MemoryLayout.varHandle(PathElement...)
PREVIEW
method on the notional layout, with a layout path containing exactly
shape.length + 1
open sequence layout path elementsPREVIEW
.
For instance, the following method call:
VarHandle arrayHandle = ValueLayout.JAVA_INT.arrayElementVarHandle(10, 20);
Is equivalent to the following code:
SequenceLayout notionalLayout = MemoryLayout.sequenceLayout(
MemoryLayout.sequenceLayout(10, MemoryLayout.sequenceLayout(20, ValueLayout.JAVA_INT)));
VarHandle arrayHandle = notionalLayout.varHandle(PathElement.sequenceElement(),
PathElement.sequenceElement(),
PathElement.sequenceElement());
The resulting var handle
arrayHandle
will feature 3 coordinates of type
long
; each coordinate is interpreted as an index into the corresponding sequence layout. If we refer to the var handle coordinates, from left to right, as
x
,
y
and
z
respectively, the final offset accessed by the var handle can be computed with the following formula:
offset = (10 * 20 * 4 * x) + (20 * 4 * y) + (4 * z)
Additionally, the values of
x
,
y
and
z
are constrained as follows:
0 <= x < notionalLayout.elementCount()
0 <= y < 10
0 <= z < 20
Consider the following access expressions:
int value1 = (int) arrayHandle.get(10, 2, 4); // ok, accessed offset = 8176
int value2 = (int) arrayHandle.get(0, 0, 30); // out of bounds value for z
In the first case, access is well-formed, as the values for
x
,
y
and
z
conform to the bounds specified above. In the second case, access fails with
IndexOutOfBoundsException
, as the value for
z
is outside its specified bounds.
shape
- the size of each nested array dimension.
shape.length + 1
long
coordinates.
IllegalArgumentException
- if shape[i] < 0
, for at least one index i
.
UnsupportedOperationException
- if byteAlignment() > byteSize()
.
Returns the carrier associated with this value layout.
Returns a memory layout with the same characteristics as this layout, but with the given name.
withName
in interface MemoryLayoutPREVIEW
name
- the layout name.
Returns a memory layout with the same characteristics as this layout, but with the given alignment constraint (in bytes).
withByteAlignment
in interface MemoryLayoutPREVIEW
byteAlignment
- the layout alignment constraint, expressed in bytes.
IllegalArgumentException
- if byteAlignment
is not a power of two.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4