public final class StoredContinuationImpl extends Object
StoredContinuation.
Memory layout of a StoredContinuation instance:
Each StoredContinuation has a fixed-size header (16 bytes) which stores the size of the
instance, after which follows the data of the stored frame(s).
+-0x0-|-0x4-|-0x8-|-0xa-+
0x00 | hub | (1) | - (2) - | instance header: 1) number of stored frame; 2) size in bytes as long
+-----------------------+
0x10 | - (1) - | (2) | (3) | 8-byte shared header for all frames: 1) nonmovable address of reference map, which should be same for all frames.
: more per-frame headers: 8-byte per-frame header: 2) size of frame in bytes; 3) reference map index of frame
: continuous frame data :
| Constructor and Description |
|---|
StoredContinuationImpl() |
| Modifier and Type | Method and Description |
|---|---|
static byte[] |
allocateBuf(StoredContinuation f)
A non-uninterruptible function to allocate temporary buffer.
|
static int |
allocateFromCurrentStack(Target_java_lang_Continuation contRef,
org.graalvm.word.Pointer rootSp,
org.graalvm.word.Pointer leafSp,
org.graalvm.nativeimage.c.function.CodePointer leafIp) |
static int |
allocateFromForeignStack(Target_java_lang_Continuation contRef,
org.graalvm.word.Pointer rootSp,
org.graalvm.nativeimage.IsolateThread thread) |
protected static int |
getByteArrayBaseOffset() |
static org.graalvm.word.Pointer |
payloadFrameStart(StoredContinuation f) |
static long |
readAllFrameSize(StoredContinuation f) |
static int |
readFrameCount(StoredContinuation f) |
static int |
readFrameSize(StoredContinuation f,
int frameIndex) |
static long |
readSize(StoredContinuation f) |
static boolean |
walkStoredContinuationFromPointer(org.graalvm.word.Pointer baseAddress,
ObjectReferenceVisitor visitor,
Object holderObject)
|
static void |
writeBuf(StoredContinuation f,
byte[] buf) |
public static long readAllFrameSize(StoredContinuation f)
public static long readSize(StoredContinuation f)
public static int readFrameCount(StoredContinuation f)
public static int readFrameSize(StoredContinuation f, int frameIndex)
public static org.graalvm.word.Pointer payloadFrameStart(StoredContinuation f)
public static byte[] allocateBuf(StoredContinuation f)
public static void writeBuf(StoredContinuation f, byte[] buf)
public static int allocateFromCurrentStack(Target_java_lang_Continuation contRef, org.graalvm.word.Pointer rootSp, org.graalvm.word.Pointer leafSp, org.graalvm.nativeimage.c.function.CodePointer leafIp)
public static int allocateFromForeignStack(Target_java_lang_Continuation contRef, org.graalvm.word.Pointer rootSp, org.graalvm.nativeimage.IsolateThread thread)
public static boolean walkStoredContinuationFromPointer(org.graalvm.word.Pointer baseAddress,
ObjectReferenceVisitor visitor,
Object holderObject)
protected static int getByteArrayBaseOffset()