[foreign-abi] RFR: 8241148: need a way to create MemorySegment with contents from java String and a way to read a C char* as java String

Henry Jen henryjen at openjdk.java.net
Wed Mar 18 19:05:57 UTC 2020


On Wed, 18 Mar 2020 16:54:13 GMT, Athijegannathan Sundararajan <sundar at openjdk.org> wrote:

> Adding utility methods to ForeignUnsafe class.

src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/unsafe/ForeignUnsafe.java line 119:

> 118:     public static String toJavaString(MemoryAddress addr) {
> 119:         StringBuilder buf = new StringBuilder();
> 120:         try (MemorySegment seg = ofNativeUnchecked(addr, Long.MAX_VALUE)) {

There are use cases to take a C string and make it a byte array in nio, and we have to retain the encoding of byte
array, some pointed out to me that toJavaString(addr).getBytes() may not be proper if encoding is not properly
specified(not my experience though).

Thus I have couple functions like following,
https://github.com/slowhog/panama-foreign/blob/eb79b8c14cfcdeae6a869d6f434929f44ab73dd5/src/java.base/unix/classes/sun/nio/FFIUtils.java#L176

-------------

PR: https://git.openjdk.java.net/panama-foreign/pull/55


More information about the panama-dev mailing list