On Wed, 4 Jan 2023 12:40:43 GMT, Per Minborg <pminb...@openjdk.org> wrote:
> > @minborg Amazing piece! > > Will `java.lang.invoke.VarHandle` instances be shared in JDK to reuse in > > other places? > > The > > [jsoniter-scala-coreJVM](https://github.com/plokhotnyuk/jsoniter-scala/tree/master/jsoniter-scala-core/jvm/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/core) > > module of the > > [jsoniter-scala](https://github.com/plokhotnyuk/jsoniter-scala) project has > > a lot of SWAR tricks that use `java.lang.invoke.VarHandle` to speed up > > parsing/serialization of primitives, `java.math.BigDecimal`, and > > `java.time.*` classes from/to textual representation. > > Are you interested to port some of them to JDK as it was done for > > `java.util.UUID` parsing > > [here](https://github.com/openjdk/jdk/commit/ebadfaeb2e1cc7b5ce5f101cd8a539bc5478cf5b)? > > Thanks. I think instances will be private to this class and other have to be > created elsewhere if needed. > > Do you see any concrete examples of classes in the JDK that could benefit > from a "VarHandlization"? Basically, places for improvements are `parse(String s)` and `toString` methods of classes mentioned above. When parsing from `String` we can access the internal array of bytes, and for serialization we can create `String` instances from byte arrays without copying using some a kind of `Unsafe` access for both. Please open [`JsonReader`](https://github.com/plokhotnyuk/jsoniter-scala/blob/master/jsoniter-scala-core/jvm/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/core/JsonReader.scala) and [`JsonWriter`](https://github.com/plokhotnyuk/jsoniter-scala/blob/master/jsoniter-scala-core/jvm/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/core/JsonWriter.scala) sources and skim through `ByteArrayAccess` usages there. ------------- PR: https://git.openjdk.org/jdk/pull/11840