JEP 193: Enhanced Volatiles
jeroen at sumatra.nl
Wed Mar 5 15:38:24 UTC 2014
The JVM should be picking up the annotations (otherwise, you'd still need to design a public API to deal with atomics).
BTW, it was explained to me at the JVM Language Summit that the "commonly held belief" about annotations, is not in fact true.
> -----Original Message-----
> From: paulus.benedictus at gmail.com [mailto:paulus.benedictus at gmail.com]
> On Behalf Of Paul Benedict
> Sent: Wednesday, March 5, 2014 16:19
> To: Christoph Engelbert
> Cc: Jeroen Frijters; core-libs-dev at openjdk.java.net
> Subject: Re: JEP 193: Enhanced Volatiles
> This idea really close very the commonly held belief that annotations
> shouldn't be used to extend the language -- and thus will not be
> accepted. If the compiler is picking up these annotations to emit
> different code, that is obviously "shoehorning" annotations into a
> language feature.
> On Wed, Mar 5, 2014 at 1:51 AM, Christoph Engelbert <me at noctarius.com
> <mailto:me at noctarius.com> > wrote:
> Am 05.03.2014 um 08:40 schrieb Jeroen Frijters <jeroen at sumatra.nl
> <mailto:jeroen at sumatra.nl> >:
> >> My goal here is to make sure that expert users can get their
> job done
> >> somehow, *without* making the job of mainstream developers
> harder. The
> >> "add lvalues to Java so experts can write CAS-libraries" fails
> that test
> >> miserably.
> > Why not go for something far less intrusive then? Here's my straw
> man proposal:
> > Add an annotation that can be placed on native methods to
> synthesize atomic accessor methods.
> > Example usage:
> > @AtomicField("next")
> > private native boolean compareAndSet(Node expected, Node
> > @AtomicArray
> > private static native boolean compareAndSet(Node array, Node
> expected, Node newValue);
> > (Note that the method name is not significant, the operation can
> be derived from the signature, or explicit in the annotation, if
> > This requires no changes to the language and adds only a slight
> burden on the developer (but it's very easy to add tooling support).
> > Regards,
> > Jeroen
> That looks like a good fit towards what was mentioned earlier using
> method handles. The JVM or compiler could just look out for those
> annotations and generate corresponding method / field handles to execute
More information about the core-libs-dev