Thank you very much, David and Serguei for the review.
David, based on your comments, I took a relook at the fix and I have
modified it. Since this is an object array klass, the search for the
method needs to be done among the methods of the superclass
(java.lang.Object). The modified webrev is at:
http://cr.openjdk.java.net/~jgeorge/8175384/webrev.02/index.html
I have addressed the other comments.
Thank you,
Jini.
On 1/25/2018 8:00 AM, David Holmes wrote:
Hi Jini,
On 25/01/2018 3:43 AM, Jini George wrote:
Hello,
Requesting reviews for the issue:
SA: clhsdb 'printall' throws ClassCastException while printing out the
bytecodes
ID: https://bugs.openjdk.java.net/browse/JDK-8175384
Webrev: http://cr.openjdk.java.net/~jgeorge/8175384/webrev.01/
The issue was seen while printing out the details of the invokevirtual
bytecode of the java.lang.Enum.values() method. The fix is to avoid a
ClassCastException by returning the bottom klass in the case of an
object array klass, while printing out the details.
I'm a bit confused as to what getFieldOrMethodKlassRefAt is supposed to
be returning - should it really be instanceKlass? It's not at all clear
to me that returning the array component type is the right thing to do.
That aside a couple of minor nits:
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ConstantPool.java
! k = (k.isObjArrayKlass())?((ObjArrayKlass)k).getBottomKlass():k;
No () needed around k.isObjArrayKlass()
Spaces needed around the ? and : operators
test/hotspot/jtreg/serviceability/sa/ClhsdbLauncher.java
Copyright year should now be "2017, 2018,"
Thanks,
David
Tests run: The SA tests pass with Mach5 and jprt.
Thanks,
Jini.