RFR: 8130115: REDO - Reduce Symbol::_identity_hash to 2 bytes
Yumin Qi
yumin.qi at oracle.com
Wed Jul 15 17:37:35 UTC 2015
Hi,
This is redo for bug 8087143, in that push, it caused failure on
Serviceability Agent failed to get type for "_identity_hash": mistakenly
used JShortField for it, but in fact it still is CIntegerField. In this
change, besides of the original change in hotspot/src, I add code to
calculate identity_hash in hotspot/agent based on the changed in hotspot.
Old webrev for 8087143:
bug: https://bugs.openjdk.java.net/browse/JDK-8087143
webrev: http://cr.openjdk.java.net/~minqi/8087143/webrev03/
Summary: _identity_hash is an integer in Symbol (SymbolBase), it is used
to compute hash bucket index by modulus division of table size.
Currently in hotspot, no table size is more than 65535 so we can use
short instead. For case with table size over 65535 we can use the first
two bytes of symbol data to be as the upper 16 bits for the calculation
but rare cases.
New webrev for 8130115:
bug: https://bugs.openjdk.java.net/browse/JDK-8130115
webrev: http://cr.openjdk.java.net/~minqi/8130115/webrev01/
Tests: JPRT, SA manual tests, -atk quick, jtreg hotspot/runtime
Also internal large application used for hashtable data analysis --- the
No. of loaded classes is big(over 19K), and tested with different bucket
sizes including over 65535 to see the new algorithm for identity_hash
calculation, result shows the consistency before and after the fix.
Thanks
Yumin
More information about the serviceability-dev
mailing list