RFR: Here are some Thread cleanup patches
Peter Levart
peter.levart at gmail.com
Wed Mar 28 06:37:16 UTC 2018
Hi,
As far as I think (but please prove me wrong), Stable class is not
loaded until someone explicitly asks for it in Java code (referring to
Stable type in bytecode like with Stable.class literal or parsing
annotations of a field that contains such annotation triggered by Java
API for annotations).
The VM code that parses some annotations like @Stable, @CallerSensitive,
@ForceInline, etc... works by matching the Symbol names of annotation
classes and doesn't need the to load the annotation class for that. See
parse_annotations in classFileParser.cpp...
Regards, Peter
On 03/28/18 04:21, David Holmes wrote:
> On 28/03/2018 12:07 PM, Martin Buchholz wrote:
>> java -Xlog:class+init=trace -version |& grep -Ew
>> 'annotation|lang.Thread|Stable'
>> [0.019s][info][class,init] 10 Initializing 'java/lang/Thread'
>> (0x00000007c0006400)
>
> Thanks.
>
>> Intuitively, class+init should be a subset of class+load, and the
>> experiment above supports that.
>
> The initialization order can be quite different to the load order.
>
> David
>
>> On Tue, Mar 27, 2018 at 6:59 PM, David Holmes
>> <david.holmes at oracle.com <mailto:david.holmes at oracle.com>> wrote:
>>
>> On 28/03/2018 11:50 AM, Martin Buchholz wrote:
>>
>>
>>
>> On Tue, Mar 27, 2018 at 6:24 PM, Martin Buchholz
>> <martinrb at google.com <mailto:martinrb at google.com>
>> <mailto:martinrb at google.com <mailto:martinrb at google.com>>>
>> wrote:
>>
>> At least the VM doesn't have to run any risky java code
>>
>>
>> ?? Why is Martin so sure ??
>> Let's check:
>>
>> java -Xlog:class+load=trace -version |& grep -Ew
>> 'annotation|lang.Thread'
>> [0.010s][info ][class,load] java.lang.Thread source:
>> jrt:/java.base
>> [0.010s][info ][class,load]
>> java.lang.Thread$UncaughtExceptionHandler source: jrt:/java.base
>> [0.012s][info ][class,load] java.lang.annotation.Annotation
>> source: jrt:/java.base
>>
>> So Stable does __not__ have to be class-loaded when Thread is
>> class-loaded.
>>
>>
>> Can you check with class+initialization please.
>>
>> Thanks,
>> David
>>
>>
More information about the core-libs-dev
mailing list