7145358: SA throws ClassCastException for partially loaded ConstantPool

Mon, 20 Feb 2012 21:27:56 -0800

author
poonam
date
Mon, 20 Feb 2012 21:27:56 -0800
changeset 3588
38fd165da001
parent 3587
0368109684cb
child 3589
1a4e5feb63c4
child 3598
645162d94294

7145358: SA throws ClassCastException for partially loaded ConstantPool
Summary: In printValueOn() in ConstantPool.java check if the poolHolder is a valid Klass and only then print it.
Reviewed-by: sla, sspitsyn
Contributed-by: Krystal Mok <sajia@taobao.com>

agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java file | annotate | diff | comparison | revisions
     1.1 --- a/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Sun Feb 19 13:11:39 2012 +0100
     1.2 +++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Mon Feb 20 21:27:56 2012 -0800
     1.3 @@ -648,7 +648,12 @@
     1.4    }
     1.5  
     1.6    public void printValueOn(PrintStream tty) {
     1.7 -    tty.print("ConstantPool for " + getPoolHolder().getName().asString());
     1.8 +    Oop holder = poolHolder.getValue(this);
     1.9 +    if (holder instanceof Klass) {
    1.10 +      tty.print("ConstantPool for " + ((Klass)holder).getName().asString());
    1.11 +    } else {
    1.12 +      tty.print("ConstantPool for partially loaded class");
    1.13 +    }
    1.14    }
    1.15  
    1.16    public long getObjectSize() {

mercurial