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

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