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

Reply via email to