agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7086585 Sdiff agent/src/share/classes/sun/jvm/hotspot/tools/soql

agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java

Print this page




 133    protected void handleClass(String line) {
 134       StringTokenizer st = new StringTokenizer(line);
 135       st.nextToken(); // ignore "class"
 136       if (st.hasMoreTokens()) {
 137          String className = st.nextToken();
 138          InstanceKlass klass = SystemDictionaryHelper.findInstanceKlass(className);
 139          if (klass == null) {
 140             out.println("class " + className + " not found");
 141          } else {
 142             // klass.iterate(new OopPrinter(out), true);
 143 
 144             // base class
 145             InstanceKlass base = (InstanceKlass) klass.getSuper();
 146             if (base != null) {
 147                out.println("super");
 148                out.print("\t");
 149                out.println(base.getName().asString().replace('/', '.'));
 150             }
 151 
 152             // list immediate fields only
 153             TypeArray fields = klass.getFields();
 154             int numFields = (int) fields.getLength();
 155             ConstantPool cp = klass.getConstants();
 156             out.println("fields");
 157             if (numFields != 0) {
 158                for (int f = 0; f < numFields; f += InstanceKlass.NEXT_OFFSET) {
 159                  int nameIndex = fields.getShortAt(f + InstanceKlass.NAME_INDEX_OFFSET);
 160                  int sigIndex  = fields.getShortAt(f + InstanceKlass.SIGNATURE_INDEX_OFFSET);
 161                  Symbol f_name = cp.getSymbolAt(nameIndex);
 162                  Symbol f_sig  = cp.getSymbolAt(sigIndex);
 163                  StringBuffer sigBuf = new StringBuffer();
 164                  new SignatureConverter(f_sig, sigBuf).dispatchField();
 165                  out.print('\t');
 166                  out.print(sigBuf.toString().replace('/', '.'));
 167                  out.print(' ');
 168                  out.println(f_name.asString());
 169                }
 170             } else {
 171                out.println("\tno fields in this class");
 172             }
 173          }
 174       } else {
 175          out.println("usage: class <name of the class>");
 176       }
 177    }
 178 
 179    protected Oop getOopAtAddress(Address addr) {
 180       OopHandle oopHandle = addr.addOffsetToAsOopHandle(0);
 181       return VM.getVM().getObjectHeap().newOop(oopHandle);
 182    }




 133    protected void handleClass(String line) {
 134       StringTokenizer st = new StringTokenizer(line);
 135       st.nextToken(); // ignore "class"
 136       if (st.hasMoreTokens()) {
 137          String className = st.nextToken();
 138          InstanceKlass klass = SystemDictionaryHelper.findInstanceKlass(className);
 139          if (klass == null) {
 140             out.println("class " + className + " not found");
 141          } else {
 142             // klass.iterate(new OopPrinter(out), true);
 143 
 144             // base class
 145             InstanceKlass base = (InstanceKlass) klass.getSuper();
 146             if (base != null) {
 147                out.println("super");
 148                out.print("\t");
 149                out.println(base.getName().asString().replace('/', '.'));
 150             }
 151 
 152             // list immediate fields only
 153             int numFields = klass.getJavaFieldsCount();

 154             ConstantPool cp = klass.getConstants();
 155             out.println("fields");
 156             if (numFields != 0) {
 157               for (int f = 0; f < numFields; f++){
 158                  Symbol f_name = klass.getFieldName(f);
 159                  Symbol f_sig  = klass.getFieldSignature(f);


 160                  StringBuffer sigBuf = new StringBuffer();
 161                  new SignatureConverter(f_sig, sigBuf).dispatchField();
 162                  out.print('\t');
 163                  out.print(sigBuf.toString().replace('/', '.'));
 164                  out.print(' ');
 165                  out.println(f_name.asString());
 166                }
 167             } else {
 168                out.println("\tno fields in this class");
 169             }
 170          }
 171       } else {
 172          out.println("usage: class <name of the class>");
 173       }
 174    }
 175 
 176    protected Oop getOopAtAddress(Address addr) {
 177       OopHandle oopHandle = addr.addOffsetToAsOopHandle(0);
 178       return VM.getVM().getObjectHeap().newOop(oopHandle);
 179    }


agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File