Skip to content

Commit ad20092

Browse files
committed
GH-563 logical value of collection classes in java.util.ImmutableCollections
1 parent 4fc5dfc commit ad20092

File tree

1 file changed

+21
-1
lines changed
  • visualvm/libs.profiler/profiler.heapwalker/src/org/graalvm/visualvm/lib/profiler/heapwalk/details/jdk

1 file changed

+21
-1
lines changed

visualvm/libs.profiler/profiler.heapwalker/src/org/graalvm/visualvm/lib/profiler/heapwalk/details/jdk/UtilDetailsProvider.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ public final class UtilDetailsProvider extends DetailsProvider.Basic {
8181
private static final String DEQUE_MASK = "java.util.ArrayDeque+"; // NOI18N
8282
private static final String ENUM_SET_MASK = "java.util.RegularEnumSet"; // NOI18N
8383
private static final String CONCURRENT_MAP_MASK = "java.util.concurrent.ConcurrentHashMap"; // NOI18N
84+
private static final String SET12_MASK = "java.util.ImmutableCollections$Set12"; //NOI18N
85+
private static final String LIST12_MASK = "java.util.ImmutableCollections$List12"; //NOI18N
86+
private static final String LISTN_MASK = "java.util.ImmutableCollections$ListN"; // NOI18N
87+
private static final String MAP1_MASK = "java.util.ImmutableCollections$Map1"; // NOI18N
8488

8589
private Formatter formatter = new SimpleFormatter();
8690

@@ -93,7 +97,8 @@ public UtilDetailsProvider() {
9397
EMPTY_LIST_MASK, EMPTY_MAP_MASK, EMPTY_SET_MASK,
9498
SINGLETON_LIST_MASK, SINGLETON_MAP_MASK, SINGLETON_SET_MASK,
9599
SYN_COLLECTION_MASK, SYN_MAP_MASK, DEQUE_MASK, ENUM_SET_MASK,
96-
CONCURRENT_MAP_MASK);
100+
CONCURRENT_MAP_MASK, SET12_MASK, LIST12_MASK, LISTN_MASK,
101+
MAP1_MASK);
97102
}
98103

99104
public String getDetailsString(String className, Instance instance) {
@@ -224,6 +229,21 @@ public String getDetailsString(String className, Instance instance) {
224229
}
225230
break;
226231
}
232+
case SET12_MASK:
233+
case LIST12_MASK: {
234+
Object e1 = instance.getValueOfField("e1"); // NOI18N
235+
return getElementsString(e1 != null ? 2 : 1);
236+
}
237+
case LISTN_MASK: {
238+
Object elements = instance.getValueOfField("elements"); // NOI18N
239+
if (elements instanceof ObjectArrayInstance) {
240+
return getElementsString(((ObjectArrayInstance)elements).getLength());
241+
}
242+
break;
243+
}
244+
case MAP1_MASK: {
245+
return getElementsString(1);
246+
}
227247
default:
228248
break;
229249
}

0 commit comments

Comments
 (0)