mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
8338728: Misc issues in memory layout javadoc
Reviewed-by: pminborg, psandoz
This commit is contained in:
parent
414d23cb8f
commit
b25095b08e
2 changed files with 32 additions and 7 deletions
|
@ -664,14 +664,15 @@ public sealed interface MemoryLayout
|
|||
* <p>
|
||||
* If the provided layout path has size {@code m} and contains a dereference path
|
||||
* element in position {@code k} (where {@code k <= m}) then two layout paths
|
||||
* {@code P} and {@code P'} are derived, where P contains all the path elements from
|
||||
* 0 to {@code k - 1} and {@code P'} contains all the path elements from {@code k + 1}
|
||||
* to {@code m} (if any). Then, the returned var handle is computed as follows:
|
||||
* {@code P} and {@code Q} are derived, where P contains all the path elements from
|
||||
* 0 to {@code k - 1} and {@code Q} contains all the path elements from {@code k + 1}
|
||||
* to {@code m} ({@code Q} could be an empty layout path if {@code k == m}).
|
||||
* Then, the returned var handle is computed as follows:
|
||||
*
|
||||
* {@snippet lang = "java":
|
||||
* VarHandle baseHandle = this.varHandle(P);
|
||||
* MemoryLayout target = ((AddressLayout)this.select(P)).targetLayout().get();
|
||||
* VarHandle targetHandle = target.varHandle(P);
|
||||
* VarHandle targetHandle = target.varHandle(Q);
|
||||
* targetHandle = MethodHandles.insertCoordinates(targetHandle, 1, 0L); // always access nested targets at offset 0
|
||||
* targetHandle = MethodHandles.collectCoordinates(targetHandle, 0,
|
||||
* baseHandle.toMethodHandle(VarHandle.AccessMode.GET));
|
||||
|
@ -944,7 +945,7 @@ public sealed interface MemoryLayout
|
|||
* is computed as follows:
|
||||
* <ul>
|
||||
* <li>if {@code F > 0}, then {@code B = ceilDiv(C - S, F)}</li>
|
||||
* <li>if {@code F < 0}, then {@code B = ceilDiv(-(S + 1), -F)}</li>
|
||||
* <li>if {@code F < 0}, then {@code B = ceilDiv(S + 1, -F)}</li>
|
||||
* </ul>
|
||||
* That is, the size of the returned open path element is {@code B}.
|
||||
*
|
||||
|
@ -972,8 +973,8 @@ public sealed interface MemoryLayout
|
|||
}
|
||||
|
||||
/**
|
||||
* {@return a path element that dereferences an address layout as its
|
||||
* {@linkplain AddressLayout#targetLayout() target layout} (where set)}
|
||||
* {@return a path element that selects the {@linkplain AddressLayout#targetLayout() target layout} of
|
||||
* an address layout (where set)}
|
||||
*/
|
||||
static PathElement dereferenceElement() {
|
||||
return LayoutPath.DereferenceElement.instance();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue