RFR: 8065172: More core reflection final and volatile annotations
Peter Levart
peter.levart at gmail.com
Mon Dec 8 21:24:02 UTC 2014
On 12/08/2014 09:31 PM, Martin Buchholz wrote:
> (sorry for missing this message earlier)
>
> On Tue, Dec 2, 2014 at 1:49 AM, Paul Sandoz <paul.sandoz at oracle.com> wrote:
>
>>> http://cr.openjdk.java.net/~martin/webrevs/openjdk9/core-reflection-more-safety/
Hi Martin,
I see lots of "changes" in javadocs that appear to have same text. Do
you know why?
>> I am not convinced about the use of CAS. If we can get away with just volatile fields I think the code is simpler. Are you concerned there are cases of identity and mutability?
> Yes, I'm trying to write this code in the safest possible way, never
> for example returning distinct but equivalent Type objects to a user,
> possibly triggering very obscure bugs in non-jdk code. If this code
> is not performance crititcal (which I believe to be true), doing it
> this way seems best. If it is performance crititcal, we can switch to
> Unsafe CAS or even use Unsafe CAS plus risky relaxed reads as Peter
> has suggested (which would improve performance on weak-memory-model
> platforms as seen on other email threads).
"Interned" Types can not be guaranteed, since they are rooted on members
of j.l.Class (Method, Field, Constructor), which can be GC-ed because of
either:
- class redefinition
- memory pressure (see j.l.Class.reflectionData field, which points to
SoftReference<ReflectionData>)
...and next time you request them, new instances will be created and new
instances of Types with them.
Regards, Peter
More information about the core-libs-dev
mailing list