hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java
equal
deleted
inserted
replaced
738 // ik == null for instance fields. |
738 // ik == null for instance fields. |
739 out.writeShort((short) fields.size()); |
739 out.writeShort((short) fields.size()); |
740 for (Iterator itr = fields.iterator(); itr.hasNext();) { |
740 for (Iterator itr = fields.iterator(); itr.hasNext();) { |
741 Field field = (Field) itr.next(); |
741 Field field = (Field) itr.next(); |
742 Symbol name = symTbl.probe(field.getID().getName()); |
742 Symbol name = symTbl.probe(field.getID().getName()); |
743 writeObjectID(name); |
743 writeSymbolID(name); |
744 char typeCode = (char) field.getSignature().getByteAt(0); |
744 char typeCode = (char) field.getSignature().getByteAt(0); |
745 int kind = signatureToHprofKind(typeCode); |
745 int kind = signatureToHprofKind(typeCode); |
746 out.writeByte((byte)kind); |
746 out.writeByte((byte)kind); |
747 if (ik != null) { |
747 if (ik != null) { |
748 // static field |
748 // static field |
850 } |
850 } |
851 |
851 |
852 private void writeSymbol(Symbol sym) throws IOException { |
852 private void writeSymbol(Symbol sym) throws IOException { |
853 byte[] buf = sym.asString().getBytes("UTF-8"); |
853 byte[] buf = sym.asString().getBytes("UTF-8"); |
854 writeHeader(HPROF_UTF8, buf.length + OBJ_ID_SIZE); |
854 writeHeader(HPROF_UTF8, buf.length + OBJ_ID_SIZE); |
855 writeObjectID(sym); |
855 writeSymbolID(sym); |
856 out.write(buf); |
856 out.write(buf); |
857 } |
857 } |
858 |
858 |
859 private void writeClasses() throws IOException { |
859 private void writeClasses() throws IOException { |
860 // write class list (id, name) association |
860 // write class list (id, name) association |
867 Instance clazz = k.getJavaMirror(); |
867 Instance clazz = k.getJavaMirror(); |
868 writeHeader(HPROF_LOAD_CLASS, 2 * (OBJ_ID_SIZE + 4)); |
868 writeHeader(HPROF_LOAD_CLASS, 2 * (OBJ_ID_SIZE + 4)); |
869 out.writeInt(serialNum); |
869 out.writeInt(serialNum); |
870 writeObjectID(clazz); |
870 writeObjectID(clazz); |
871 out.writeInt(DUMMY_STACK_TRACE_ID); |
871 out.writeInt(DUMMY_STACK_TRACE_ID); |
872 writeObjectID(k.getName()); |
872 writeSymbolID(k.getName()); |
873 serialNum++; |
873 serialNum++; |
874 } catch (IOException exp) { |
874 } catch (IOException exp) { |
875 throw new RuntimeException(exp); |
875 throw new RuntimeException(exp); |
876 } |
876 } |
877 } |
877 } |
897 // writes unique ID for an object |
897 // writes unique ID for an object |
898 private void writeObjectID(Oop oop) throws IOException { |
898 private void writeObjectID(Oop oop) throws IOException { |
899 OopHandle handle = (oop != null)? oop.getHandle() : null; |
899 OopHandle handle = (oop != null)? oop.getHandle() : null; |
900 long address = getAddressValue(handle); |
900 long address = getAddressValue(handle); |
901 writeObjectID(address); |
901 writeObjectID(address); |
|
902 } |
|
903 |
|
904 private void writeSymbolID(Symbol sym) throws IOException { |
|
905 writeObjectID(getAddressValue(sym.getAddress())); |
902 } |
906 } |
903 |
907 |
904 private void writeObjectID(long address) throws IOException { |
908 private void writeObjectID(long address) throws IOException { |
905 if (OBJ_ID_SIZE == 4) { |
909 if (OBJ_ID_SIZE == 4) { |
906 out.writeInt((int) address); |
910 out.writeInt((int) address); |