RFR JDK-8059510 Compact symbol table layout inside shared archive

Jiangli Zhou jiangli.zhou at oracle.com
Thu Oct 30 23:54:39 UTC 2014


Hi John,

On 10/29/2014 02:55 PM, Jiangli Zhou wrote:
> 10. I would like to see (posted somewhere or attached to the bug) a 
> sample list of the symbols in a typical symbol table. Perhaps this 
> already exists and I missed it. I think it would be friendly to put 
> some comments in the code that help the reader estimate numbers like 
> table size, bucket length, number of queries, number of probes per 
> query, symbol length statistics (mean, histogram). Of course such 
> comments go stale over time, but so does the algorithm, and being coy 
> about the conditions of the moment doesn't help us in the long run. 
> Even a short comment is better than none, for example: 
> http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/87ee5ee27509/src/share/vm/classfile/vmSymbols.cpp#l206 
>
>
> Those are good suggestions. I'll add a sample list o the symbols to 
> the bug report and try to put more comments in the code.
>

Here is a sample of the shared compact symbol table. I've added it to 
the bug as well. The table has three main sections, which are the bucket 
start offsets, bucket sizes and the buckets containing symbol offset 
(from the base address) entries. I included the symbol's utf8 string of 
each entry for easier viewing. Please let me know if you need more 
information.

Bucket start_offsets (from the table start)
==========================
    Bucket_1:1733
    Bucket_2:1741
    Bucket_3:1747
    Bucket_4:1751
    Bucket_5:1757
    Bucket_6:1759
    Bucket_7:1767
    Bucket_8:1777
    Bucket_9:1795
    Bucket_10:1801
    Bucket_11:1815
    Bucket_12:1825
    Bucket_13:1837
    Bucket_14:1841
    Bucket_15:1855
    Bucket_16:1867
    Bucket_17:1877
    Bucket_18:1883
    Bucket_19:1889
    Bucket_20:1897
    ...
    Bucket_1135:10779
    Bucket_1136:10791
    Bucket_1137:10797
    Bucket_1138:10807
    Bucket_1139:10813
    Bucket_1140:10821
    Bucket_1141:10839
    Bucket_1142:10845
    Bucket_1143:10857
    Bucket_1144:10869
    Bucket_1145:10877
    Bucket_1146:10887
    Bucket_1147:10897
    Bucket_1148:10907
    Bucket_1149:10917

Bucket sizes
========
    Bucket_1:4
    Bucket_2:3
    Bucket_3:2
    Bucket_4:3
    Bucket_5:1
    Bucket_6:4
    Bucket_7:5
    Bucket_8:9
    Bucket_9:3
    Bucket_10:7
    ...
    Bucket_1135:6
    Bucket_1136:3
    Bucket_1137:5
    Bucket_1138:3
    Bucket_1139:4
    Bucket_1140:9
    Bucket_1141:3
    Bucket_1142:6
    Bucket_1143:6
    Bucket_1144:4
    Bucket_1145:5
    Bucket_1146:5
    Bucket_1147:5
    Bucket_1148:5
    Bucket_1149:4

...
Entries: Symbol address offsets from base address
================================
   Bucket_0: 106760(Ljava/io/PrintStream;), 145960(setDaemon), 
424568(Ljava/lang/Class<Ljava/lang/Byte;>;), 61288(),
   Bucket_1: 60496(getAnnotationType), 
177888((Ljava/lang/Object;TV;)TV;), 171240(Properties.java), 
26976((Ljava/lang/Object;JLjava/lang/Object;)Ljava/lang/Object;),
   Bucket_2: 438864(LongCache), 241056(NF_staticOffset), 
94128(synchronizedSet),
   Bucket_3: 57728(getMethod0), 51936(allPermDomain),
   Bucket_4: 18536(vmloader), 406456(DIRECTIONALITY_EUROPEAN_NUMBER), 
92888(class "),
   Bucket_5: 151128(NORM_PRIORITY),
   Bucket_6: 288152(exprString), 190680(Dictionary.java), 
405432(MAX_VALUE), 202744(getParameterCount),
   Bucket_7: 237936((Ljava/lang/Class;)Ljava/lang/invoke/MethodType;), 
375024(checkURL), 55696(()Ljava/security/ProtectionDomain;), 
53608(()[Ljava/lang/Class<*>;), 122800(delete),
   Bucket_8: 135440(access allowed ), 31976(([CI)V), 227216(null value), 
288792(zero), 163312(unsuspendSomeThreads), 67880(casAnnotationData), 
418248(sun/misc/FloatConsts), 11112(BootstrapMethods), 
394224(CodeSource.java),
   Bucket_9: 403272(Ljava/lang/Boolean;), 318008(CallSite.java), 114736( ),
   Bucket_10: 154504((I)Ljava/lang/Thread$State;), 20816(putObject), 
16944(parent), 248728(asType), 66712(removeByNameAndDescriptor), 
14168(modifiers), 130136(),
...

Thanks,
Jiangli


More information about the hotspot-runtime-dev mailing list