src/hotspot/share/services/heapDumper.cpp
changeset 51997 9ce37fa2e179
parent 51959 db0c3952de52
child 52876 2d17750d41e7
equal deleted inserted replaced
51996:84743156e780 51997:9ce37fa2e179
   694   writer->write_u4(len);
   694   writer->write_u4(len);
   695 }
   695 }
   696 
   696 
   697 // returns hprof tag for the given type signature
   697 // returns hprof tag for the given type signature
   698 hprofTag DumperSupport::sig2tag(Symbol* sig) {
   698 hprofTag DumperSupport::sig2tag(Symbol* sig) {
   699   switch (sig->byte_at(0)) {
   699   switch (sig->char_at(0)) {
   700     case JVM_SIGNATURE_CLASS    : return HPROF_NORMAL_OBJECT;
   700     case JVM_SIGNATURE_CLASS    : return HPROF_NORMAL_OBJECT;
   701     case JVM_SIGNATURE_ARRAY    : return HPROF_NORMAL_OBJECT;
   701     case JVM_SIGNATURE_ARRAY    : return HPROF_NORMAL_OBJECT;
   702     case JVM_SIGNATURE_BYTE     : return HPROF_BYTE;
   702     case JVM_SIGNATURE_BYTE     : return HPROF_BYTE;
   703     case JVM_SIGNATURE_CHAR     : return HPROF_CHAR;
   703     case JVM_SIGNATURE_CHAR     : return HPROF_CHAR;
   704     case JVM_SIGNATURE_FLOAT    : return HPROF_FLOAT;
   704     case JVM_SIGNATURE_FLOAT    : return HPROF_FLOAT;
   819   u4 size = 0;
   819   u4 size = 0;
   820 
   820 
   821   for (FieldStream fld(ik, false, false); !fld.eos(); fld.next()) {
   821   for (FieldStream fld(ik, false, false); !fld.eos(); fld.next()) {
   822     if (!fld.access_flags().is_static()) {
   822     if (!fld.access_flags().is_static()) {
   823       Symbol* sig = fld.signature();
   823       Symbol* sig = fld.signature();
   824       switch (sig->byte_at(0)) {
   824       switch (sig->char_at(0)) {
   825         case JVM_SIGNATURE_CLASS   :
   825         case JVM_SIGNATURE_CLASS   :
   826         case JVM_SIGNATURE_ARRAY   : size += oopSize; break;
   826         case JVM_SIGNATURE_ARRAY   : size += oopSize; break;
   827 
   827 
   828         case JVM_SIGNATURE_BYTE    :
   828         case JVM_SIGNATURE_BYTE    :
   829         case JVM_SIGNATURE_BOOLEAN : size += 1; break;
   829         case JVM_SIGNATURE_BOOLEAN : size += 1; break;
   887 
   887 
   888       writer->write_symbolID(fld.name());   // name
   888       writer->write_symbolID(fld.name());   // name
   889       writer->write_u1(sig2tag(sig));       // type
   889       writer->write_u1(sig2tag(sig));       // type
   890 
   890 
   891       // value
   891       // value
   892       dump_field_value(writer, sig->byte_at(0), ik->java_mirror(), fld.offset());
   892       dump_field_value(writer, sig->char_at(0), ik->java_mirror(), fld.offset());
   893     }
   893     }
   894   }
   894   }
   895 
   895 
   896   // Add resolved_references for each class that has them
   896   // Add resolved_references for each class that has them
   897   if (resolved_references != NULL) {
   897   if (resolved_references != NULL) {
   923   InstanceKlass* ik = InstanceKlass::cast(o->klass());
   923   InstanceKlass* ik = InstanceKlass::cast(o->klass());
   924 
   924 
   925   for (FieldStream fld(ik, false, false); !fld.eos(); fld.next()) {
   925   for (FieldStream fld(ik, false, false); !fld.eos(); fld.next()) {
   926     if (!fld.access_flags().is_static()) {
   926     if (!fld.access_flags().is_static()) {
   927       Symbol* sig = fld.signature();
   927       Symbol* sig = fld.signature();
   928       dump_field_value(writer, sig->byte_at(0), o, fld.offset());
   928       dump_field_value(writer, sig->char_at(0), o, fld.offset());
   929     }
   929     }
   930   }
   930   }
   931 }
   931 }
   932 
   932 
   933 // dumps the definition of the instance fields for a given class
   933 // dumps the definition of the instance fields for a given class