Skip to content

Commit 20251ef

Browse files
committed
GH-373 use default values if they cannot be obtained from heap dump
1 parent f237b97 commit 20251ef

File tree

2 files changed

+12
-5
lines changed
  • visualvm/libs.profiler
    • lib.profiler.heap/src/org/graalvm/visualvm/lib/jfluid/heap
    • profiler.heapwalker/src/org/graalvm/visualvm/lib/profiler/heapwalk/details/api

2 files changed

+12
-5
lines changed

visualvm/libs.profiler/lib.profiler.heap/src/org/graalvm/visualvm/lib/jfluid/heap/HprofProxy.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,10 @@ private static int[] getStringUTF16ShiftBytes(Heap heap) {
147147
Integer HI_BYTE_SHIFT = (Integer) utf16Class.getValueOfStaticField("HI_BYTE_SHIFT"); // NOI18N
148148
Integer LO_BYTE_SHIFT = (Integer) utf16Class.getValueOfStaticField("LO_BYTE_SHIFT"); // NOI18N
149149

150-
return new int[] {HI_BYTE_SHIFT.intValue(),LO_BYTE_SHIFT.intValue()};
150+
if (HI_BYTE_SHIFT != null && LO_BYTE_SHIFT != null) {
151+
return new int[] {HI_BYTE_SHIFT.intValue(),LO_BYTE_SHIFT.intValue()};
152+
}
153+
// use default
154+
return new int[] {0,8};
151155
}
152156
}

visualvm/libs.profiler/profiler.heapwalker/src/org/graalvm/visualvm/lib/profiler/heapwalk/details/api/StringDecoder.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,13 @@ public StringDecoder(Heap heap, byte c, List<String> val) {
4343
coder = c;
4444
values = val;
4545
if (coder == 1) {
46-
if (heap != null) {
47-
JavaClass utf16Class = heap.getJavaClassByName("java.lang.StringUTF16"); // NOI18N
48-
HI_BYTE_SHIFT = (Integer) utf16Class.getValueOfStaticField("HI_BYTE_SHIFT"); // NOI18N
49-
LO_BYTE_SHIFT = (Integer) utf16Class.getValueOfStaticField("LO_BYTE_SHIFT"); // NOI18N
46+
JavaClass utf16Class = heap.getJavaClassByName("java.lang.StringUTF16"); // NOI18N
47+
Integer hiShift = (Integer) utf16Class.getValueOfStaticField("HI_BYTE_SHIFT"); // NOI18N
48+
Integer loShift = (Integer) utf16Class.getValueOfStaticField("LO_BYTE_SHIFT"); // NOI18N
49+
50+
if (hiShift != null && loShift != null) {
51+
HI_BYTE_SHIFT = hiShift.intValue();
52+
LO_BYTE_SHIFT = loShift.intValue();
5053
} else {
5154
// use default
5255
HI_BYTE_SHIFT = 0;

0 commit comments

Comments
 (0)