From 68f476ae935a52a770cf5658ba51e20cdf9061cd Mon Sep 17 00:00:00 2001 From: Alexey Ragozin Date: Tue, 16 Dec 2014 12:47:49 +0400 Subject: [PATCH] Fixed bug introduced by negative addresses support --- .../java/org/netbeans/lib/profiler/heap/HeapOffsetMap.java | 6 +++--- .../org/netbeans/lib/profiler/heap/HprofByteBuffer.java | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/hprof-heap/src/main/java/org/netbeans/lib/profiler/heap/HeapOffsetMap.java b/hprof-heap/src/main/java/org/netbeans/lib/profiler/heap/HeapOffsetMap.java index 8e132bbb..195e15a0 100644 --- a/hprof-heap/src/main/java/org/netbeans/lib/profiler/heap/HeapOffsetMap.java +++ b/hprof-heap/src/main/java/org/netbeans/lib/profiler/heap/HeapOffsetMap.java @@ -137,7 +137,7 @@ long offsetForCompressed(long cid) { } int shift = shiftMap[(int) (ref % pageSize)]; if (shift < 0) { - throw new IllegalArgumentException("ID is not valid: " + cid); + throw new IllegalArgumentException("Compressed ID is not valid: " + cid); } long offs = baseOffs + shift; return offs; @@ -164,7 +164,7 @@ private int scanPage(int page) { // number of pages to be added up front int ps = (int) (((cidOffset - ciid + pageSize - 1) / (pageSize))); - long oldIdBase = cidOffset; + long oldCidBase = cidOffset; cidOffset -= ps * pageSize; long[] noffsetMap = new long[offsetMap.length + ps]; Arrays.fill(noffsetMap, 0, ps, 0); // explicitly nullify array to avoid possible JIT bug @@ -177,7 +177,7 @@ private int scanPage(int page) { nestedScan = true; scanPage(ps - 1); // another shift may have happen - ps = (int) (compressID(oldIdBase) / pageSize); + ps = (int) (compressID(oldCidBase << allignmentBits) / pageSize); maxPage = savedMaxPage + ps; nestedScan = savedNestedScan; page += ps; diff --git a/hprof-heap/src/main/java/org/netbeans/lib/profiler/heap/HprofByteBuffer.java b/hprof-heap/src/main/java/org/netbeans/lib/profiler/heap/HprofByteBuffer.java index 1cf92cc6..565d44a0 100644 --- a/hprof-heap/src/main/java/org/netbeans/lib/profiler/heap/HprofByteBuffer.java +++ b/hprof-heap/src/main/java/org/netbeans/lib/profiler/heap/HprofByteBuffer.java @@ -79,8 +79,7 @@ static HprofByteBuffer createHprofByteBuffer(File dumpFile) long fileLen = dumpFile.length(); if (fileLen < MINIMAL_SIZE) { - String errText = ResourceBundle.getBundle("org/netbeans/lib/profiler/heap/Bundle") - .getString("HprofByteBuffer_ShortFile"); // NOI18N + String errText = "File size is too small"; throw new IOException(errText); }