Request: Remove System.out check from Class.checkInitted()

Alan Bateman Alan.Bateman at oracle.com
Thu Dec 19 11:59:10 UTC 2013


On 19/12/2013 10:13, David Holmes wrote:
>
> Not necessarily. The question is, are there any code paths that lead 
> to checkInitted being called after  setOut0(newPrintStream(fdOut, 
> props.getProperty("sun.stdout.encoding"))) but before the call to 
> sun.misc.VM.booted(). If so these would fail under the proposed change.
>
> The initialization sequence is fragile and intimately tied to the 
> Hotspot VM - ie the VM initialization process initiates the core class 
> initialization. In a "normal" initialization System is initialized 
> before Class and Class must be initialized before checkInitted can be 
> called, so this doesn't trigger initialization of System.
>
> I also don't see how System.out being null can be valid 
> post-initialization state given the call to 
> setOut0(newPrintStream(fdOut, props.getProperty("sun.stdout.encoding")))
It would be unusual to change it later with System.setOut but it is 
possible.

In any case, using VM.isBooted is the normal way to check if system 
initialization has completed.

-Alan.



More information about the core-libs-dev mailing list