1186 case JVM_SIGNATURE_BYTE:
1187 out.writeByte(((ByteField)field).getValue(oop));
1188 break;
1189 case JVM_SIGNATURE_SHORT:
1190 out.writeShort(((ShortField)field).getValue(oop));
1191 break;
1192 case JVM_SIGNATURE_INT:
1193 out.writeInt(((IntField)field).getValue(oop));
1194 break;
1195 case JVM_SIGNATURE_LONG:
1196 out.writeLong(((LongField)field).getValue(oop));
1197 break;
1198 case JVM_SIGNATURE_FLOAT:
1199 out.writeFloat(((FloatField)field).getValue(oop));
1200 break;
1201 case JVM_SIGNATURE_DOUBLE:
1202 out.writeDouble(((DoubleField)field).getValue(oop));
1203 break;
1204 case JVM_SIGNATURE_CLASS:
1205 case JVM_SIGNATURE_ARRAY: {
1206 if (VM.getVM().isCompressedOopsEnabled()) {
1207 OopHandle handle = ((NarrowOopField)field).getValueAsOopHandle(oop);
1208 writeObjectID(getAddressValue(handle));
1209 } else {
1210 OopHandle handle = ((OopField)field).getValueAsOopHandle(oop);
1211 writeObjectID(getAddressValue(handle));
1212 }
1213 break;
1214 }
1215 default:
1216 throw new RuntimeException("should not reach here");
1217 }
1218 }
1219
1220 private void writeHeader(int tag, int len) throws IOException {
1221 out.writeByte((byte)tag);
1222 out.writeInt(0); // current ticks
1223 out.writeInt(len);
1224 }
1225
1226 private void writeDummyTrace() throws IOException {
|
1186 case JVM_SIGNATURE_BYTE:
1187 out.writeByte(((ByteField)field).getValue(oop));
1188 break;
1189 case JVM_SIGNATURE_SHORT:
1190 out.writeShort(((ShortField)field).getValue(oop));
1191 break;
1192 case JVM_SIGNATURE_INT:
1193 out.writeInt(((IntField)field).getValue(oop));
1194 break;
1195 case JVM_SIGNATURE_LONG:
1196 out.writeLong(((LongField)field).getValue(oop));
1197 break;
1198 case JVM_SIGNATURE_FLOAT:
1199 out.writeFloat(((FloatField)field).getValue(oop));
1200 break;
1201 case JVM_SIGNATURE_DOUBLE:
1202 out.writeDouble(((DoubleField)field).getValue(oop));
1203 break;
1204 case JVM_SIGNATURE_CLASS:
1205 case JVM_SIGNATURE_ARRAY: {
1206 if (field.isFlat()) {
1207 // FIXME - we don't handle flattened fields yet. Just treat them
1208 // as a null reference. See JDK-8381370.
1209 writeObjectID(null);
1210 } else if (VM.getVM().isCompressedOopsEnabled()) {
1211 OopHandle handle = ((NarrowOopField)field).getValueAsOopHandle(oop);
1212 writeObjectID(getAddressValue(handle));
1213 } else {
1214 OopHandle handle = ((OopField)field).getValueAsOopHandle(oop);
1215 writeObjectID(getAddressValue(handle));
1216 }
1217 break;
1218 }
1219 default:
1220 throw new RuntimeException("should not reach here");
1221 }
1222 }
1223
1224 private void writeHeader(int tag, int len) throws IOException {
1225 out.writeByte((byte)tag);
1226 out.writeInt(0); // current ticks
1227 out.writeInt(len);
1228 }
1229
1230 private void writeDummyTrace() throws IOException {
|