Final RFR: 8005232 (JEP-149) Class Instance size reduction (original) (raw)

Peter Levart peter.levart at gmail.com
Wed Jan 9 14:02:53 UTC 2013


On 01/09/2013 02:47 PM, Peter Levart wrote:

On 01/09/2013 01:19 PM, Aleksey Shipilev wrote:

e) Should useCaches be final? That will allow aggressive optimizations for (c). It could be made final if moved into the ReflectionData class and initialized in static initializer of that class. Good idea! I'll check if this is doable. Sorry, no go:

 // To be able to query system properties as soon as they're available
 private static boolean initted = false;
 private static void checkInitted() {
     if (initted) return;
     AccessController.doPrivileged(new PrivilegedAction<Void>() {
             public Void run() {
                 // Tests to ensure the system properties table is fully
                 // initialized. This is needed because reflection 

code is // called very early in the initialization process (before // command-line arguments have been parsed and therefore // these user-settable properties installed.) We assume that // if System.out is non-null then the System class has been // fully initialized and that the bulk of the startup code // has been run.

                 if (System.out == null) {
                     // java.lang.System not yet fully initialized
                     return null;
                 }

                 String val =

System.getProperty("sun.reflect.noCaches"); if (val != null && val.equals("true")) { useCaches = false; }

                 initted = true;
                 return null;
             }
         });
 }

Regards, Peter



More information about the core-libs-dev mailing list