Class TruffleString.FromNativePointerNode
java.lang.Object
com.oracle.truffle.api.nodes.Node
com.oracle.truffle.api.strings.TruffleString.FromNativePointerNode
- All Implemented Interfaces:
NodeInterface, Cloneable
- Enclosing class:
TruffleString
Node to create a new
TruffleString from an interop object representing a native
pointer. See execute(Object, int, int, TruffleString.Encoding, boolean) for details.- Since:
- 22.1
-
Nested Class Summary
Nested classes/interfaces inherited from class Node
Node.Child, Node.Children -
Method Summary
Modifier and TypeMethodDescriptioncreate()Create a newTruffleString.FromNativePointerNode.abstract TruffleStringexecute(Object pointerObject, int byteOffset, int byteLength, TruffleString.Encoding encoding, boolean copy) Create a newTruffleStringfrom an interop object representing a native pointer (isPointer(pointerObject)must returntrue).Get the uncached version ofTruffleString.FromNativePointerNode.Methods inherited from class Node
accept, adoptChildren, atomic, atomic, copy, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, getSourceSection, insert, insert, isAdoptable, isSafelyReplaceableBy, notifyInserted, onReplace, replace, replace, reportPolymorphicSpecialize, reportReplace, toString
-
Method Details
-
execute
public abstract TruffleString execute(Object pointerObject, int byteOffset, int byteLength, TruffleString.Encoding encoding, boolean copy) Create a newTruffleStringfrom an interop object representing a native pointer (isPointer(pointerObject)must returntrue). The pointer is immediately unboxed with (asPointer(pointerObject)) and saved in theTruffleStringinstance, i.e.TruffleStringassumes that the pointer address does not change. The pointer's content is assumed to be encoded in the given encoding already. Ifcopyisfalse, the native pointer is used directly as the new string's backing storage. Caution:TruffleStringassumes the pointer's content to be immutable, do not modify the pointer's content after passing it to this operation!WARNING:
TruffleStringcannot 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 thepointerObjectis alive (ifcopyisfalse). To help with this the TruffleString keeps a reference to the givenpointerObject, so thepointerObjectis 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 viaTruffleString.AsManagedNodebefore the native pointer is freed.If
This operation requires native access permissions (copyistrue, 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()).- Since:
- 22.1
-
create
Create a newTruffleString.FromNativePointerNode.- Since:
- 22.1
-
getUncached
Get the uncached version ofTruffleString.FromNativePointerNode.- Since:
- 22.1
-