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