@@ -41,7 +41,11 @@ public class PythonDetailsProvider extends DetailsProvider.Basic {
41
41
private static final String PCLASS_MASK = "com.oracle.graal.python.builtins.objects.type.PythonClass+" ; // NOI18N
42
42
private static final String PMANAGEDCLASS_MASK = "com.oracle.graal.python.builtins.objects.type.PythonManagedClass+" ; // NOI18N
43
43
private static final String PFUNCTION_MASK = "com.oracle.graal.python.builtins.objects.function.PFunction+" ; // NOI18N
44
- private static final String PBUILDIN_FUNCTION_MASK = "com.oracle.graal.python.builtins.objects.function.PBuiltinFunction" ; // NOI18N
44
+ private static final String PBUILTIN_FUNCTION_MASK = "com.oracle.graal.python.builtins.objects.function.PBuiltinFunction" ; // NOI18N
45
+ private static final String PBUILTIN_METHOD_MASK = "com.oracle.graal.python.builtins.objects.method.PBuiltinMethod" ; // NOI18N
46
+ private static final String PMETHOD_MASK = "com.oracle.graal.python.builtins.objects.method.PMethod" ; // NOI18N
47
+ private static final String PDECORATEDMETHOD_MASK = "com.oracle.graal.python.builtins.objects.method.PDecoratedMethod" ; // NOI18N
48
+ private static final String PCELL_MASK = "com.oracle.graal.python.builtins.objects.cell.PCell" ; // NOI18N
45
49
private static final String PNONE_MASK = "com.oracle.graal.python.builtins.objects.PNone" ; // NOI18N
46
50
private static final String PLIST_MASK = "com.oracle.graal.python.builtins.objects.list.PList" ; // NOI18N
47
51
private static final String PSTRING_MASK = "com.oracle.graal.python.builtins.objects.str.PString" ; // NOI18N
@@ -55,14 +59,16 @@ public class PythonDetailsProvider extends DetailsProvider.Basic {
55
59
private static final String PINT_MASK = "com.oracle.graal.python.builtins.objects.ints.PInt" ; // NOI18N
56
60
private static final String PEXCEPTION_MASK = "com.oracle.graal.python.runtime.exception.PException" ; // NOI18N
57
61
private static final String GETSET_DESCRIPTOR_MASK = "com.oracle.graal.python.builtins.objects.getsetdescriptor.GetSetDescriptor" ; // NOI18N
58
- private static final String PBUILDIN_CLASSTYPE_MASK = "com.oracle.graal.python.builtins.PythonBuiltinClassType" ; // NOI18N
62
+ private static final String PBUILTIN_CLASSTYPE_MASK = "com.oracle.graal.python.builtins.PythonBuiltinClassType" ; // NOI18N
59
63
private static final String PLAZY_STRING_MASK = "com.oracle.graal.python.builtins.objects.str.LazyString" ; // NOI18N
64
+ private static final String PRANGE_MASK = "com.oracle.graal.python.builtins.objects.range.PRange" ; // NOI18N
65
+ private static final String PSOCKET_MASK = "com.oracle.graal.python.builtins.objects.socket.PSocket" ; // NOI18N
60
66
61
67
public PythonDetailsProvider () {
62
68
super (PCLASS_MASK ,PMANAGEDCLASS_MASK ,PFUNCTION_MASK ,PNONE_MASK ,PLIST_MASK ,PSTRING_MASK ,BASIC_STORAGE_MASK ,
63
69
PTUPLE_MASK ,PMODULE_MASK ,PBYTES_MASK ,EMPTY_STORAGE_MASK ,PINT_MASK ,
64
- PCOMPLEX_MASK ,PEXCEPTION_MASK ,PBUILDIN_FUNCTION_MASK , BYTE_STORAGE_MASK ,
65
- GETSET_DESCRIPTOR_MASK ,PBUILDIN_CLASSTYPE_MASK ,PLAZY_STRING_MASK );
70
+ PCOMPLEX_MASK ,PEXCEPTION_MASK ,PBUILTIN_FUNCTION_MASK , PBUILTIN_METHOD_MASK , PMETHOD_MASK , PDECORATEDMETHOD_MASK , PCELL_MASK , BYTE_STORAGE_MASK ,
71
+ GETSET_DESCRIPTOR_MASK ,PBUILTIN_CLASSTYPE_MASK ,PLAZY_STRING_MASK , PRANGE_MASK , PSOCKET_MASK );
66
72
}
67
73
68
74
public String getDetailsString (String className , Instance instance , Heap heap ) {
@@ -72,29 +78,51 @@ public String getDetailsString(String className, Instance instance, Heap heap) {
72
78
if (PMANAGEDCLASS_MASK .equals (className )) {
73
79
return DetailsUtils .getInstanceFieldString (instance , "className" , heap ); // NOI18N
74
80
}
75
- if (PBUILDIN_FUNCTION_MASK .equals (className )) {
81
+ if (PBUILTIN_FUNCTION_MASK .equals (className )) {
76
82
return DetailsUtils .getInstanceFieldString (instance , "name" , heap ); // NOI18N
77
83
}
84
+ if (PBUILTIN_METHOD_MASK .equals (className )) {
85
+ Object moduleO = instance .getValueOfField ("self" ); // NOI18N
86
+ if (!(moduleO instanceof Instance )) moduleO = null ;
87
+ else if (!((Instance )moduleO ).getJavaClass ().getName ().equals (PMODULE_MASK )) moduleO = null ;
88
+ String module = moduleO == null ? null : DetailsUtils .getInstanceString ((Instance )moduleO , heap );
89
+ String function = DetailsUtils .getInstanceFieldString (instance , "function" , heap ); // NOI18N
90
+ if (function != null ) return module != null ? module + "." + function : function ; // NOI18N
91
+ return null ;
92
+ }
93
+ if (PMETHOD_MASK .equals (className )) {
94
+ return DetailsUtils .getInstanceFieldString (instance , "function" , heap ); // NOI18N
95
+ }
96
+ if (PDECORATEDMETHOD_MASK .equals (className )) {
97
+ return DetailsUtils .getInstanceFieldString (instance , "callable" , heap ); // NOI18N
98
+ }
99
+ if (PCELL_MASK .equals (className )) {
100
+ Object refO = instance .getValueOfField ("ref" );
101
+ if (!(refO instanceof Instance )) refO = null ;
102
+ else if (((Instance )refO ).getJavaClass ().getName ().equals (PLIST_MASK )) refO = null ;
103
+ else if (((Instance )refO ).getJavaClass ().getName ().equals (PTUPLE_MASK )) refO = null ;
104
+ return refO == null ? null : DetailsUtils .getInstanceString ((Instance )refO , heap );
105
+ }
78
106
if (PFUNCTION_MASK .equals (className )) {
79
107
String enclName = DetailsUtils .getInstanceFieldString (instance , "enclosingClassName" , heap ); // NOI18N
80
108
String name = DetailsUtils .getInstanceFieldString (instance , "name" , heap ); // NOI18N
81
109
82
110
if (enclName != null && !enclName .isEmpty ()) {
83
111
if (name != null ) {
84
- return enclName +"." +name ;
112
+ return enclName +"." +name ; // NOI18N
85
113
}
86
114
}
87
115
return name ;
88
116
}
89
117
if (PSTRING_MASK .equals (className )) {
90
118
return DetailsUtils .getInstanceFieldString (instance , "value" , heap ); // NOI18N
91
119
}
92
- if (PBUILDIN_CLASSTYPE_MASK .equals (className )) {
120
+ if (PBUILTIN_CLASSTYPE_MASK .equals (className )) {
93
121
// get name field of PythonBuiltinClassType - there is a conflict with name field from Enum
94
122
for (Object fv : instance .getFieldValues ()) {
95
123
if (fv instanceof ObjectFieldValue ) {
96
124
ObjectFieldValue ofv = (ObjectFieldValue ) fv ;
97
- if ("name" .equals (ofv .getField ().getName ())) {
125
+ if ("name" .equals (ofv .getField ().getName ())) { // NOI18N
98
126
return DetailsUtils .getInstanceString (ofv .getInstance (), heap );
99
127
}
100
128
}
@@ -150,18 +178,24 @@ public String getDetailsString(String className, Instance instance, Heap heap) {
150
178
return DetailsUtils .getInstanceFieldString (instance , "name" , heap ); // NOI18N
151
179
}
152
180
if (PLAZY_STRING_MASK .equals (className )) {
153
- Object val = instance .getValueOfField ("length" ); // NOI18N
154
181
Object vall = instance .getValueOfField ("left" ); // NOI18N
155
182
Object valr = instance .getValueOfField ("right" ); // NOI18N
156
183
157
- if (val instanceof Integer ) {
158
- String left = DetailsUtils .getInstanceString ((Instance )vall , heap );
184
+ String left = DetailsUtils .getInstanceString ((Instance )vall , heap );
159
185
160
- if (valr == null || left .length () > DetailsUtils .MAX_ARRAY_LENGTH ) {
161
- return left ;
162
- }
163
- return left + DetailsUtils .getInstanceString ((Instance )valr , heap );
186
+ if (valr == null || left .length () > DetailsUtils .MAX_ARRAY_LENGTH ) {
187
+ return left ;
164
188
}
189
+ return left + DetailsUtils .getInstanceString ((Instance )valr , heap );
190
+ }
191
+ if (PRANGE_MASK .equals (className )) {
192
+ int start = DetailsUtils .getIntFieldValue (instance , "start" , 0 ); // NOI18N
193
+ int stop = DetailsUtils .getIntFieldValue (instance , "stop" , 0 ); // NOI18N
194
+ int step = DetailsUtils .getIntFieldValue (instance , "step" , 1 ); // NOI18N
195
+ return "[" + start + ", " + stop + ", " + step + "]" ; // NOI18N
196
+ }
197
+ if (PSOCKET_MASK .equals (className )) {
198
+ return DetailsUtils .getInstanceFieldString (instance , "address" , heap ); // NOI18N
165
199
}
166
200
return null ;
167
201
}
0 commit comments