29
29
import org .graalvm .visualvm .lib .jfluid .heap .Instance ;
30
30
import org .graalvm .visualvm .lib .jfluid .heap .PrimitiveArrayInstance ;
31
31
import org .graalvm .visualvm .lib .profiler .heapwalk .details .spi .DetailsProvider ;
32
+ import org .graalvm .visualvm .lib .profiler .heapwalk .details .spi .DetailsUtils ;
32
33
import org .openide .util .Exceptions ;
33
34
import org .openide .util .lookup .ServiceProvider ;
34
35
39
40
@ ServiceProvider (service =DetailsProvider .class )
40
41
public class JavacDetailsProvider extends DetailsProvider .Basic {
41
42
42
- private static final String SHAREDNAMETABLE_NAMEIMPL_MASK =
43
- "com.sun.tools.javac.util.SharedNameTable$NameImpl" ; // NOI18N
44
- private static final String NAME_MASK =
45
- "com.sun.tools.javac.util.Name" ; // NOI18N
43
+ private static final String SHAREDNAMETABLE_NAMEIMPL_MASK = "com.sun.tools.javac.util.SharedNameTable$NameImpl" ; // NOI18N
44
+ private static final String NAME_MASK = "com.sun.tools.javac.util.Name" ; // NOI18N
45
+ private static final String SYMBOL_MASK = "com.sun.tools.javac.code.Symbol+" ; // NOI18N
46
+ private static final String CLASS_SYM_MASK = "com.sun.tools.javac.code.Symbol$ClassSymbol" ; // NOI18N
47
+ private static final String PACKAGE_SYM_MASK = "com.sun.tools.javac.code.Symbol$PackageSymbol" ; // NOI18N
46
48
47
49
public JavacDetailsProvider () {
48
- super (SHAREDNAMETABLE_NAMEIMPL_MASK , NAME_MASK );
50
+ super (SHAREDNAMETABLE_NAMEIMPL_MASK , NAME_MASK , SYMBOL_MASK , CLASS_SYM_MASK , PACKAGE_SYM_MASK );
49
51
}
50
52
51
53
@ Override
@@ -54,6 +56,18 @@ public String getDetailsString(String className, Instance instance) {
54
56
return getName (instance , "length" , "index" , "table" , "bytes" ); // NOI18N
55
57
} else if (NAME_MASK .equals (className )) {
56
58
return getName (instance , "len" , "index" , "table" , "names" ); // NOI18N
59
+ } else if (SYMBOL_MASK .equals (className )) {
60
+ return DetailsUtils .getInstanceFieldString (instance , "name" ); // NI18N
61
+ } else if (CLASS_SYM_MASK .equals (className )) {
62
+ String name = DetailsUtils .getInstanceFieldString (instance , "name" ); // NI18N
63
+
64
+ if (name == null || name .isEmpty ()) {
65
+ return DetailsUtils .getInstanceFieldString (instance , "flatname" ); // NI18N
66
+ } else {
67
+ return DetailsUtils .getInstanceFieldString (instance , "fullname" ); // NI18N
68
+ }
69
+ } else if (PACKAGE_SYM_MASK .equals (className )) {
70
+ return DetailsUtils .getInstanceFieldString (instance , "fullname" ); // NI18N
57
71
}
58
72
return null ;
59
73
}
0 commit comments