agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java

Print this page
rev 146 : [mq]: mixa.layout.patch


 159             out.println("\t</seq>");
 160         }
 161         out.println("\t</attr>");
 162         writeObjectFooter(array);
 163     }
 164 
 165     protected void writeClass(Instance instance) throws IOException  {
 166         writeObjectHeader(instance);
 167         Klass reflectedType = OopUtilities.classOopToKlass(instance);
 168         boolean isInstanceKlass = (reflectedType instanceof InstanceKlass);
 169         // reflectedType is null for primitive types (int.class etc).
 170         if (reflectedType != null) {
 171             Symbol name = reflectedType.getName();
 172             if (name != null) {
 173                 // write class name as an attribute
 174                 writeAttribute("class-name", "string", name.asString());
 175             }
 176             if (isInstanceKlass) {
 177                 // write object-size as an attribute
 178                 long sizeInBytes = reflectedType.getLayoutHelper();

 179                 writeAttribute("object-size", "int",
 180                                Long.toString(sizeInBytes));
 181                 // write static fields of this class.
 182                 writeObjectFields(reflectedType);
 183             }
 184         }
 185         out.println("</node>");
 186 
 187         // write edges for super class and direct interfaces
 188         if (reflectedType != null) {
 189             Klass superType = reflectedType.getSuper();
 190             Oop superMirror = (superType == null)?
 191                               null : superType.getJavaMirror();
 192             writeEdge(instance, superMirror, "extends");
 193             if (isInstanceKlass) {
 194                 // write edges for directly implemented interfaces
 195                 InstanceKlass ik = (InstanceKlass) reflectedType;
 196                 ObjArray interfaces = ik.getLocalInterfaces();
 197                 final int len = (int) interfaces.getLength();
 198                 for (int i = 0; i < len; i++) {




 159             out.println("\t</seq>");
 160         }
 161         out.println("\t</attr>");
 162         writeObjectFooter(array);
 163     }
 164 
 165     protected void writeClass(Instance instance) throws IOException  {
 166         writeObjectHeader(instance);
 167         Klass reflectedType = OopUtilities.classOopToKlass(instance);
 168         boolean isInstanceKlass = (reflectedType instanceof InstanceKlass);
 169         // reflectedType is null for primitive types (int.class etc).
 170         if (reflectedType != null) {
 171             Symbol name = reflectedType.getName();
 172             if (name != null) {
 173                 // write class name as an attribute
 174                 writeAttribute("class-name", "string", name.asString());
 175             }
 176             if (isInstanceKlass) {
 177                 // write object-size as an attribute
 178                 long sizeInBytes = reflectedType.getLayoutHelper();
 179                 sizeInBytes &= ~Bits.rightNBits(Klass.LH_SIZE_LOW_BITS);
 180                 writeAttribute("object-size", "int",
 181                                Long.toString(sizeInBytes));
 182                 // write static fields of this class.
 183                 writeObjectFields(reflectedType);
 184             }
 185         }
 186         out.println("</node>");
 187 
 188         // write edges for super class and direct interfaces
 189         if (reflectedType != null) {
 190             Klass superType = reflectedType.getSuper();
 191             Oop superMirror = (superType == null)?
 192                               null : superType.getJavaMirror();
 193             writeEdge(instance, superMirror, "extends");
 194             if (isInstanceKlass) {
 195                 // write edges for directly implemented interfaces
 196                 InstanceKlass ik = (InstanceKlass) reflectedType;
 197                 ObjArray interfaces = ik.getLocalInterfaces();
 198                 final int len = (int) interfaces.getLength();
 199                 for (int i = 0; i < len; i++) {