Vector API "Straw Man" Boxed/Unboxed Vector Instantiation
John Rose
john.r.rose at oracle.com
Thu Mar 31 22:32:43 UTC 2016
On Mar 31, 2016, at 4:36 AM, elias vasylenko <eliasvasylenko at gmail.com> wrote:
>
> Hi, just a quick question here from someone with 0 knowledge of vector processing trying to follow along out of casual interest... So when you all talk about cracking lambdas, I've been thinking that you mean something like the lambda serialisation trick Jinq uses so they can try to parse streams/lambdas into sensible database queries. Is this somewhat accurate?
Yes, somewhat. Jinq is built on a shaky foundation, since the JVM and classfile format was not designed to allow either method bytecodes or expression trees to be recovered by library code. One option we are talking about (not the only option) is amending the foundation, by allowing class files to store enough data to recover expression trees, and then provide an API for getting that.
The serialization trick is just that: a trick, to get access to the bytecode behavior of the lambda. We have lower-level APIs for getting the same information out of the JVM "in-place" without serializing, since of course the JIT needs that information. We are up-leveling that access to Java in the JVMCI, derived from the Graal interface.
BTW, I believe we could do the equivalent of expression trees as an add-on to bytecodes, rather than a separate data structure, but that's a tricky discussion. The idea is to condition the bytecodes with new structural constraints so that a Jinq-like decoding step is guaranteed to "play back" the original expression (as compiled, with non-semantic details erased).
— John
More information about the panama-dev
mailing list