729 for (Iterator itr = fields.iterator(); itr.hasNext();) {
730 writeField((Field) itr.next(), instance);
731 }
732 }
733
734 //-- Internals only below this point
735
736 private void writeFieldDescriptors(List fields, InstanceKlass ik)
737 throws IOException {
738 // ik == null for instance fields.
739 out.writeShort((short) fields.size());
740 for (Iterator itr = fields.iterator(); itr.hasNext();) {
741 Field field = (Field) itr.next();
742 Symbol name = symTbl.probe(field.getID().getName());
743 writeSymbolID(name);
744 char typeCode = (char) field.getSignature().getByteAt(0);
745 int kind = signatureToHprofKind(typeCode);
746 out.writeByte((byte)kind);
747 if (ik != null) {
748 // static field
749 writeField(field, ik);
750 }
751 }
752 }
753
754 public static int signatureToHprofKind(char ch) {
755 switch (ch) {
756 case JVM_SIGNATURE_CLASS:
757 case JVM_SIGNATURE_ARRAY:
758 return HPROF_NORMAL_OBJECT;
759 case JVM_SIGNATURE_BOOLEAN:
760 return HPROF_BOOLEAN;
761 case JVM_SIGNATURE_CHAR:
762 return HPROF_CHAR;
763 case JVM_SIGNATURE_FLOAT:
764 return HPROF_FLOAT;
765 case JVM_SIGNATURE_DOUBLE:
766 return HPROF_DOUBLE;
767 case JVM_SIGNATURE_BYTE:
768 return HPROF_BYTE;
769 case JVM_SIGNATURE_SHORT:
|
729 for (Iterator itr = fields.iterator(); itr.hasNext();) {
730 writeField((Field) itr.next(), instance);
731 }
732 }
733
734 //-- Internals only below this point
735
736 private void writeFieldDescriptors(List fields, InstanceKlass ik)
737 throws IOException {
738 // ik == null for instance fields.
739 out.writeShort((short) fields.size());
740 for (Iterator itr = fields.iterator(); itr.hasNext();) {
741 Field field = (Field) itr.next();
742 Symbol name = symTbl.probe(field.getID().getName());
743 writeSymbolID(name);
744 char typeCode = (char) field.getSignature().getByteAt(0);
745 int kind = signatureToHprofKind(typeCode);
746 out.writeByte((byte)kind);
747 if (ik != null) {
748 // static field
749 writeField(field, ik.getJavaMirror());
750 }
751 }
752 }
753
754 public static int signatureToHprofKind(char ch) {
755 switch (ch) {
756 case JVM_SIGNATURE_CLASS:
757 case JVM_SIGNATURE_ARRAY:
758 return HPROF_NORMAL_OBJECT;
759 case JVM_SIGNATURE_BOOLEAN:
760 return HPROF_BOOLEAN;
761 case JVM_SIGNATURE_CHAR:
762 return HPROF_CHAR;
763 case JVM_SIGNATURE_FLOAT:
764 return HPROF_FLOAT;
765 case JVM_SIGNATURE_DOUBLE:
766 return HPROF_DOUBLE;
767 case JVM_SIGNATURE_BYTE:
768 return HPROF_BYTE;
769 case JVM_SIGNATURE_SHORT:
|