RFR: Here are some Thread cleanup patches

Peter Levart peter.levart at gmail.com
Wed Mar 28 10:34:16 UTC 2018

On 03/28/2018 11:32 AM, mandy chung wrote:
> On 28/03/2018 4:28 AM, Martin Buchholz wrote:
> > The usual story when I change Thread.java is that I'm missing 
> something and
> > I end up reverting, so I was extra careful this time.
> >
> > 8200122: Remove unused field Thread.threadQ
> > http://cr.openjdk.java.net/~martin/webrevs/jdk/Thread-threadQ/
> > https://bugs.openjdk.java.net/browse/JDK-8200122
> Looks fine.
> > 8200123: Replace Thread.init with telescoping constructor
> > http://cr.openjdk.java.net/~martin/webrevs/jdk/Thread-init/
> > https://bugs.openjdk.java.net/browse/JDK-8200123
> Looks good too.
> Did you see any performance difference with and without @Stable?
> Mandy

I doubt there would be any. @Stable is only effective when the reference 
to an object containing the annotated field can be constant folded by 
JIT. And Thread objects are typically not assigned to static final 
field(s) or (by transitivity) to @Stable fields. Thread.currentThread() 
could be an exception, but it's not a constant. It's a thread-local 
constant, so a possible optimization would be for JIT to cache Thread's 
@Stable fields in a thread-local storage, but I doubt it is programmed 
to do so.

VM experts, please advise!

Regards, Peter

More information about the core-libs-dev mailing list