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

Reply via email to