API review of VarHandles

Brian Goetz brian.goetz at oracle.com
Tue Jan 26 21:46:15 UTC 2016

I think that expectation is just out of date (if not outright 
mistaken.)  Yes, j.l.i was originally called "java.dyn", but prior to 
shipping *7* we renamed it to j.l.i precisely because it had turned into 
a general customizable linkage mechanism that was usable far beyond 
dynamic languages. (To wit, Java 8 lambdas got a significant 
linkage/capture boost from using invokedynamic.)  So to claim it's 
"supposed to be" only for dynamic languages represents a significant 
"missing of the memo."

On 1/26/2016 3:31 PM, Martin Buchholz wrote:
> There's a big "expectations" effect here.  j.l.invoke is "supposed to
> be" for making dynamic languages less slow, not for making low-level,
> ultra-non-dynamic operations faster.  Asking the Unsafe users of the
> world to switch to dynamic VarHandle is like asking C programmers to
> rewrite their code in perl 6 ... for performance!  It's the same
> "srsly?" feeling one gets reading """We can currently use RPerl to
> speed up low-magic Perl 5 code with over 300x performance gain."""

More information about the valhalla-dev mailing list