# HG changeset patch # User dsamersoff # Date 1482230037 -10800 # Node ID 297ba2772122f955470f6ca333f71ff7f0e32a0c # Parent af2357d4511c10d18fa8c797e23fb8bc7114c096 8159127: hprof heap dumps broken for lambda classdata Summary: Added class dump records for lambda related anonymous classes in the heap dump Reviewed-by: dsamersoff, sspitsyn Contributed-by: jini.george@oracle.com diff -r af2357d4511c -r 297ba2772122 test/lib/jdk/test/lib/hprof/parser/HprofReader.java --- a/test/lib/jdk/test/lib/hprof/parser/HprofReader.java Mon Dec 19 16:26:36 2016 +0100 +++ b/test/lib/jdk/test/lib/hprof/parser/HprofReader.java Tue Dec 20 13:33:57 2016 +0300 @@ -151,6 +151,10 @@ private Snapshot snapshot; + public static boolean verifyMagicNumber(int numberRead) { + return (numberRead == MAGIC_NUMBER); + } + public HprofReader(String fileName, PositionDataInputStream in, int dumpNumber, boolean callStack, int debugLevel) throws IOException { @@ -737,6 +741,12 @@ long id = readID(); StackTrace stackTrace = getStackTraceFromSerial(in.readInt()); long classID = readID(); + JavaClass searchedClass = snapshot.findClass( + "0x" + Long.toHexString(classID)); + if (searchedClass == null) { + throw new IOException( + "Class Record for 0x" + Long.toHexString(classID) + " not found"); + } int bytesFollowing = in.readInt(); int bytesRead = (2 * identifierSize) + 8 + bytesFollowing; JavaObject jobj = new JavaObject(classID, start);