package mod.fieldrefdepend;
import mod.dummy.DummyClass;
public class ClassDependsOnReferenceInFieldDeclaration {
            private Class c = DummyClass.class; 
}

Anyone know how to process the ConstantPool or the instruction code to
find out DummyClass.class is used in this context(ie. Class c =
DummyClass.class).  I don't care about other contexts.

Thanks,

dean

Here is the constant pool and byte code from my logs that I print out

   class=mod.fieldrefdepend.ClassDependsOnReferenceInFieldDeclaration
 
const[1]=java.lang.Class.forName(Ljava/lang/String;)Ljava/lang/Class;
inst=org.apache.bcel.classfile.ConstantMethodref
      const[2]=java.lang.ClassNotFoundException
inst=org.apache.bcel.classfile.ConstantClass
      const[3]=java.lang.NoClassDefFoundError
inst=org.apache.bcel.classfile.ConstantClass
      const[4]=java.lang.ClassNotFoundException.getMessage
()Ljava/lang/String; inst=org.apache.bcel.classfile.ConstantMethodref
      const[5]=java.lang.NoClassDefFoundError.<init>
(Ljava/lang/String;)V inst=org.apache.bcel.classfile.ConstantMethodref
      const[6]=java.lang.Object.<init> ()V
inst=org.apache.bcel.classfile.ConstantMethodref
 
const[7]=mod.fieldrefdepend.ClassDependsOnReferenceInFieldDeclaration.cl
ass$mod$dummy$DummyClass Ljava/lang/Class; 
      const[8]="mod.dummy.DummyClass"
inst=org.apache.bcel.classfile.ConstantString
 
const[9]=mod.fieldrefdepend.ClassDependsOnReferenceInFieldDeclaration.cl
ass$ (Ljava/lang/String;)Ljava/lang/Class; 
 
const[10]=mod.fieldrefdepend.ClassDependsOnReferenceInFieldDeclaration.c
Ljava/lang/Class; inst=org.apache.bcel.classfile.ConstantFieldref
 
const[11]=mod.fieldrefdepend.ClassDependsOnReferenceInFieldDeclaration
inst=org.apache.bcel.classfile.ConstantClass
      const[12]=java.lang.Object
inst=org.apache.bcel.classfile.ConstantClass
      const[13]=c inst=org.apache.bcel.classfile.ConstantUtf8
      const[14]=Ljava/lang/Class;
inst=org.apache.bcel.classfile.ConstantUtf8
      const[15]=class$mod$dummy$DummyClass
inst=org.apache.bcel.classfile.ConstantUtf8
      const[16]=Synthetic inst=org.apache.bcel.classfile.ConstantUtf8
      const[17]=<init> inst=org.apache.bcel.classfile.ConstantUtf8
      const[18]=()V inst=org.apache.bcel.classfile.ConstantUtf8
      const[19]=Code inst=org.apache.bcel.classfile.ConstantUtf8
      const[20]=LineNumberTable
inst=org.apache.bcel.classfile.ConstantUtf8
      const[21]=LocalVariableTable
inst=org.apache.bcel.classfile.ConstantUtf8
      const[22]=this inst=org.apache.bcel.classfile.ConstantUtf8
 
const[23]=Lmod/fieldrefdepend/ClassDependsOnReferenceInFieldDeclaration;
inst=org.apache.bcel.classfile.ConstantUtf8
      const[24]=class$ inst=org.apache.bcel.classfile.ConstantUtf8
      const[25]=(Ljava/lang/String;)Ljava/lang/Class;
inst=org.apache.bcel.classfile.ConstantUtf8
      const[26]=x1 inst=org.apache.bcel.classfile.ConstantUtf8
      const[27]=Ljava/lang/ClassNotFoundException;
inst=org.apache.bcel.classfile.ConstantUtf8
      const[28]=x0 inst=org.apache.bcel.classfile.ConstantUtf8
      const[29]=Ljava/lang/String;
inst=org.apache.bcel.classfile.ConstantUtf8
      const[30]=SourceFile inst=org.apache.bcel.classfile.ConstantUtf8
      const[31]=ClassDependsOnReferenceInFieldDeclaration.java
inst=org.apache.bcel.classfile.ConstantUtf8
      const[32]=java.lang.Class
inst=org.apache.bcel.classfile.ConstantClass
      const[33]=forName (Ljava/lang/String;)Ljava/lang/Class;
inst=org.apache.bcel.classfile.ConstantNameAndType
      const[34]=java/lang/ClassNotFoundException
inst=org.apache.bcel.classfile.ConstantUtf8
      const[35]=java/lang/NoClassDefFoundError
inst=org.apache.bcel.classfile.ConstantUtf8
      const[36]=getMessage ()Ljava/lang/String;
inst=org.apache.bcel.classfile.ConstantNameAndType
      const[37]=<init> (Ljava/lang/String;)V
inst=org.apache.bcel.classfile.ConstantNameAndType
      const[38]=<init> ()V
inst=org.apache.bcel.classfile.ConstantNameAndType
      const[39]=class$mod$dummy$DummyClass Ljava/lang/Class;
inst=org.apache.bcel.classfile.ConstantNameAndType
      const[40]=mod.dummy.DummyClass
inst=org.apache.bcel.classfile.ConstantUtf8
      const[41]=class$ (Ljava/lang/String;)Ljava/lang/Class;
inst=org.apache.bcel.classfile.ConstantNameAndType
      const[42]=c Ljava/lang/Class;
inst=org.apache.bcel.classfile.ConstantNameAndType
 
const[43]=mod/fieldrefdepend/ClassDependsOnReferenceInFieldDeclaration
inst=org.apache.bcel.classfile.ConstantUtf8
      const[44]=java/lang/Object
inst=org.apache.bcel.classfile.ConstantUtf8
      const[45]=java/lang/Class
inst=org.apache.bcel.classfile.ConstantUtf8
      const[46]=forName inst=org.apache.bcel.classfile.ConstantUtf8
      const[47]=getMessage inst=org.apache.bcel.classfile.ConstantUtf8
      const[48]=()Ljava/lang/String;
inst=org.apache.bcel.classfile.ConstantUtf8
      const[49]=(Ljava/lang/String;)V
inst=org.apache.bcel.classfile.ConstantUtf8


      method=<init>
         method ret type=void
         instr=aload_0[42](1)
         instr=invokespecial[183](3) 6
         instr=aload_0[42](1)
         instr=getstatic[178](3) 7
         instr=ifnonnull[199](3) -> getstatic 7
         instr=ldc[18](2) 8
         instr=invokestatic[184](3) 9
         instr=dup[89](1)
         instr=putstatic[179](3) 7
         instr=goto[167](3) -> putfield 10
         instr=getstatic[178](3) 7
         instr=putfield[181](3) 10
         instr=return[177](1)
      method=class$
         method ret type=Class
         method param[0]=String
         instr=aload_0[42](1)
         instr=invokestatic[184](3) 1
         instr=areturn[176](1)
         instr=astore_1[76](1)
         instr=new[187](3) 3
         instr=dup[89](1)
         instr=aload_1[43](1)
         instr=invokevirtual[182](3) 4
         instr=invokespecial[183](3) 5
         instr=athrow[191](1)

Reply via email to