public abstract static class TruffleString.FromNativePointerNode extends Node
TruffleString from an interop object representing a native
pointer. See TruffleString.FromNativePointerNode.execute(Object, int, int, TruffleString.Encoding, boolean) for details.Node.Child, Node.Children| Modifier and Type | Method and Description |
|---|---|
static TruffleString.FromNativePointerNode |
create()
Create a new
TruffleString.FromNativePointerNode. |
abstract TruffleString |
execute(Object pointerObject,
int byteOffset,
int byteLength,
TruffleString.Encoding encoding,
boolean copy)
Create a new
TruffleString from an interop object representing a native pointer (
isPointer(pointerObject) must return true). |
static TruffleString.FromNativePointerNode |
getUncached()
Get the uncached version of
TruffleString.FromNativePointerNode. |
accept, adoptChildren, atomic, atomic, copy, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, getSourceSection, insert, insert, isAdoptable, isSafelyReplaceableBy, notifyInserted, onReplace, replace, replace, reportPolymorphicSpecialize, toStringpublic abstract TruffleString execute(Object pointerObject, int byteOffset, int byteLength, TruffleString.Encoding encoding, boolean copy)
TruffleString from an interop object representing a native pointer (
isPointer(pointerObject) must return true). The pointer is immediately
unboxed with (asPointer(pointerObject)) and saved in the TruffleString
instance, i.e. TruffleString assumes that the pointer address does not change.
The pointer's content is assumed to be encoded in the given encoding already. If
copy is false, the native pointer is used directly as the new string's
backing storage. Caution: TruffleString assumes the pointer's content to be
immutable, do not modify the pointer's content after passing it to this operation!
WARNING: TruffleString cannot reason about the lifetime of the native
pointer, so it is up to the user to make sure that the native pointer is valid to
access and not freed as long the pointerObject is alive (if copy is
false). To help with this the TruffleString keeps a reference to the given
pointerObject, so the pointerObject is kept alive at least as long as the
TruffleString is used. In order to be able to use the string past the native pointer's
life time, convert it to a managed string via TruffleString.AsManagedNode before the native
pointer is freed.
If copy is true, the pointer's contents are copied to a Java byte array,
and the pointer can be freed safely after the operation completes.
TruffleLanguage.Env#isNativeAccessAllowed()).public static TruffleString.FromNativePointerNode create()
TruffleString.FromNativePointerNode.public static TruffleString.FromNativePointerNode getUncached()
TruffleString.FromNativePointerNode.