for review (M): 6652736: well known classes in system dictionary are inefficiently processed

John Rose John.Rose at Sun.COM
Fri Jan 18 22:00:16 PST 2008


http://homepage.mac.com/rose00/work/webrev/6652736

For putback to http://hg.openjdk.java.net/jdk7/hotspot-comp-gate/hotspot
6652736: : well known classes in system dictionary are inefficiently  
processed
Summary: combine many scalar variables into a single enum-indexed  
array in SystemDictionary.

-- John

P.S.  Here's text from http://bugs.sun.com/bugdatabase/view_bug.do? 
bug_id=6652736 :

The SystemDictionary class has about 60 C static variables which hold  
well-known classes.  They should be consolidated into a single static  
block of C array-type, indexed by an enum, as in vmSymbols.  This  
will simplify maintenance and scaling and allow certain optimizations.

At JVM bootstrap, approximately 25% of all symbol lookups resolve to  
these symbols.  It is probably worthwhile making a fast path for  
these (using vmSymbols::find_sid).

The object code which operates on these classes as a group (for GC  
and initialization) will be much more compact if they are made into  
an array indexed by an enum.  Several object files are smaller by  
1-10Kb, including systemDictionary.o, vmStructs.o, javaClasses.o, and  
jvm.o, and the DLL is about 40Kb smaller.

The number of well-known classes will increase as new low-level  
features are added to support other languages.  Adding them should be  
as simple as adding new vmSymbols.

Benefits:
  - fewer symbols in the binary
  - code simplification
  - a fast path through the class lookup routine
  - easier expansion in the future

P.P.S.  Process notes:  This is the form of review request message  
we've been using internally for years.  It seems a good starting  
point for the corresponding OpenJDK communication.  The (M) means the  
proposed change is "medium" in size.  (Compare XS, S, M, L, XL,  
etc.)  Someday the webrevs will be organized on server dedicated to  
OpenJDK, instead of my mac.com account.  This change set could also  
be submitted through another hotspot gate (like runtime), but the  
compiler gate is equally relevant, and is managed by the submitter's  
immediate workgroup.  Any of these details are open to change, but if  
we try to change all of them right away, we'll never get any work  
done....




More information about the hotspot-compiler-dev mailing list