minor change to demand points-to interface
[wala.git] / com.ibm.wala.core / dat / natives.xml
blob17e9a3f97731150785e2f14cb1fa290d3812a37b
1 <?xml version="1.0" ?>\r
2 <!-- native methods in the IBM Windows DK 1.3.1 -->\r
3 <summary-spec>\r
4         <classloader name="Primordial">\r
5 \r
6                 <package name="com/ibm/wala/model">\r
7                         <class name="SyntheticFactory">\r
8                                 <method name="getObject"\r
9                                         descriptor="()Ljava/lang/Object;" factory="true" static="true">\r
10                                         <new def="x" class="Lcom/ibm/wala/Malleable" />\r
11                                         <return value="x" />\r
12                                 </method>\r
13                         </class>\r
14                 </package>\r
16                 <package name="com/ibm/jvm">\r
17                         <class name="ExtendedSystem">\r
18                                 <method name="isResettableJVM" descriptor="()Z"\r
19                                         static="true">\r
20                                 </method>\r
21                                 <method name="setJVMUnresettableConditionally"\r
22                                         descriptor="(ILjava/lang/String;)V" static="true">\r
23                                 </method>\r
24                                 <method name="resizeArray"\r
25                                         descriptor="(ILjava/lang/Object;II)Ljava/lang/Object;"\r
26                                         factory="true" static="true">\r
27                                         <new def="x" class="Lcom/ibm/wala/Malleable" />\r
28                                         <return value="x" />\r
29                                 </method>\r
30                         </class>\r
32                 </package>\r
34                 <package name="java/io">\r
35                         <class name="FileDescriptor">\r
36                                 <method name="sync" descriptor="()V"></method>\r
37                         </class>\r
38                         <class name="FileInputStream">\r
39                                 <method name="available" descriptor="()I">\r
40                                         <constant name="yes" type="int" value="1" />\r
41                                         <constant name="no" type="int" value="0" />\r
42                                         <return value="yes" />\r
43                                         <return value="no" />\r
44                                         <new def="x" class="Ljava/io/IOException" />\r
45                                         <throw value="x" />\r
46                                 </method>\r
47                                 <method name="close" descriptor="()V">\r
48                                         <new def="x" class="Ljava/io/IOException" />\r
49                                         <throw value="x" />\r
50                                 </method>\r
51                                 <method name="open"\r
52                                         descriptor="(Ljava/lang/String;)V">\r
53                                         <new def="x" class="Ljava/io/IOException" />\r
54                                         <throw value="x" />\r
55                                 </method>\r
56                                 <method name="read" descriptor="()I">\r
57                                         <constant name="yes" type="int" value="1" />\r
58                                         <constant name="no" type="int" value="0" />\r
59                                         <return value="yes" />\r
60                                         <return value="no" />\r
61                                         <new def="x" class="Ljava/io/IOException" />\r
62                                         <throw value="x" />\r
63                                 </method>\r
64                                 <method name="readBytes" descriptor="([BII)I">\r
65                                         <constant name="yes" type="int" value="1" />\r
66                                         <constant name="no" type="int" value="0" />\r
67                                         <return value="yes" />\r
68                                         <return value="no" />\r
69                                         <new def="x" class="Ljava/io/IOException" />\r
70                                         <throw value="x" />\r
71                                 </method>\r
72                                 <method name="readBytes"\r
73                                         descriptor="([BIILjava/io/FileDescriptor;)I">\r
74                                         <constant name="yes" type="int" value="1" />\r
75                                         <constant name="no" type="int" value="0" />\r
76                                         <return value="yes" />\r
77                                         <return value="no" />\r
78                                         <new def="x" class="Ljava/io/IOException" />\r
79                                         <throw value="x" />\r
80                                 </method>\r
81                                 <method name="skip" descriptor="(J)J">\r
82                                         <constant name="yes" type="int" value="1" />\r
83                                         <constant name="no" type="int" value="0" />\r
84                                         <return value="yes" />\r
85                                         <return value="no" />\r
86                                         <new def="x" class="Ljava/io/IOException" />\r
87                                         <throw value="x" />\r
88                                 </method>\r
89                         </class>\r
90                         <class name="FileOutputStream">\r
91                                 <method name="close" descriptor="()V"></method>\r
92                                 <method name="open"\r
93                                         descriptor="(Ljava/lang/String;)V">\r
94                                 </method>\r
95                                 <method name="openAppend"\r
96                                         descriptor="(Ljava/lang/String;)V">\r
97                                 </method>\r
98                                 <method name="write" descriptor="(I)V"></method>\r
99                                 <method name="writeBytes" descriptor="([BII)V"></method>\r
100                         </class>\r
101                         <class name="ObjectOutputStream">\r
102                                 <method name="doublesToBytes" descriptor="([DI[BII)V"\r
103                                         static="true" />\r
104                                 <method name="floatsToBytes" descriptor="([FI[BII)V"\r
105                                         static="true" />\r
106                         </class>\r
107                         <class name="ObjectStreamClass">\r
108                                 <method name="hasStaticInitializer"\r
109                                         descriptor="(Ljava/lang/Class;)Z" static="true">\r
110                                 </method>\r
111                         </class>\r
112                         <class name="RandomAccessFile">\r
113                                 <method name="close" descriptor="()V"></method>\r
114                                 <method name="getFilePointer" descriptor="()J"></method>\r
115                                 <method name="length" descriptor="()J"></method>\r
116                                 <method name="open"\r
117                                         descriptor="(Ljava/lang/String;Z)V">\r
118                                 </method>\r
119                                 <method name="open"\r
120                                         descriptor="(Ljava/lang/String;I)V">\r
121                                 </method>\r
122                                 <method name="read" descriptor="()I"></method>\r
123                                 <method name="readBytes"\r
124                                         descriptor="([BIILjava/io/FileDescriptor;)I">\r
125                                 </method>\r
126                                 <method name="seek" descriptor="(J)V"></method>\r
127                                 <method name="write" descriptor="(I)V"></method>\r
128                                 <method name="writeBytes"\r
129                                         descriptor="([BIILjava/io/FileDescriptor;)V">\r
130                                 </method>\r
131                                 <method name="writeBytes" descriptor="([BII)V"></method>\r
132                         </class>\r
133                 </package>\r
135                 <package name="java/lang">\r
136                         <class name="Class">\r
137                                 <method name="forName"\r
138                                         descriptor="(Ljava/lang/String;)Ljava/lang/Class;"\r
139                                         static="true">\r
140                                         <new def="x" class="Ljava/lang/Class" />\r
141                                         <return value="x" />\r
142                                         <new def="y"\r
143                                                 class="Ljava/lang/ClassNotFoundException" />\r
144                                         <throw value="y" />\r
145                                         <new def="z" class="Ljava/lang/ClassFormatError" />\r
146                                         <throw value="z" />\r
147                                 </method>\r
148                                 <method name="forName0"\r
149                                         descriptor="(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;"\r
150                                         static="true">\r
151                                         <new def="x" class="Ljava/lang/Class" />\r
152                                         <return value="x" />\r
153                                         <new def="y"\r
154                                                 class="Ljava/lang/ClassNotFoundException" />\r
155                                         <throw value="y" />\r
156                                         <new def="z" class="Ljava/lang/ClassFormatError" />\r
157                                         <throw value="z" />\r
158                                 </method>\r
159                                 <method name="forName1"\r
160                                         descriptor="(Ljava/lang/String;)Ljava/lang/Class;" static="true">\r
161                                         <new def="x" class="Ljava/lang/Class" />\r
162                                         <return value="x" />\r
163                                         <new def="y"\r
164                                                 class="Ljava/lang/ClassNotFoundException" />\r
165                                         <throw value="y" />\r
166                                         <new def="z" class="Ljava/lang/ClassFormatError" />\r
167                                         <throw value="z" />\r
168                                 </method>\r
169                                 <method name="getClassLoader0"\r
170                                         descriptor="()Ljava/lang/ClassLoader;">\r
171                                         <new def="x" class="Ljava/lang/ClassLoader" />\r
172                                         <return value="x" />\r
173                                 </method>\r
174                                 <method name="getComponentType"\r
175                                         descriptor="()Ljava/lang/Class;">\r
176                                         <new def="x" class="Ljava/lang/Class" />\r
177                                         <return value="x" />\r
178                                 </method>\r
179                                 <method name="getConstructor0"\r
180                                         descriptor="([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor;">\r
181                                         <new def="x" class="Ljava/lang/reflect/Constructor" />\r
182                                         <return value="x" />\r
183                                 </method>\r
184                                 <method name="getField0"\r
185                                         descriptor="(Ljava/lang/String;I)Ljava/lang/reflect/Field;">\r
186                                         <new def="x" class="Ljava/lang/reflect/Field" />\r
187                                         <return value="x" />\r
188                                 </method>\r
189                                 <method name="getInterfaces"\r
190                                         descriptor="()[Ljava/lang/Class;">\r
191                                         <constant name="size" type="int" value="1" />\r
192                                         <new def="x" class="[Ljava/lang/Class" size="size" />\r
193                                         <new def="y" class="Ljava/lang/Class" />\r
194                                         <aastore ref="x" value="y" index="0" />\r
195                                         <return value="x" />\r
196                                 </method>\r
197                                 <method name="getMethod0"\r
198                                         descriptor="(Ljava/lang/String;[Ljava/lang/Class;I)Ljava/lang/reflect/Method;">\r
199                                         <new def="x" class="Ljava/lang/reflect/Method" />\r
200                                         <return value="x" />\r
201                                 </method>\r
202                                 <method name="getMethods0"\r
203                                         descriptor="(I)[Ljava/lang/reflect/Method;">\r
204                                         <constant name="size" type="int" value="1" />\r
205                                         <new def="x" class="[Ljava/lang/reflect/Method"\r
206                                                 size="size" />\r
207                                         <new def="y" class="Ljava/lang/reflect/Method" />\r
208                                         <aastore ref="x" value="y" index="0" />\r
209                                         <return value="x" />\r
210                                 </method>\r
211                                 <method name="getModifiers" descriptor="()I"></method>\r
212                                 <method name="getName"\r
213                                         descriptor="()Ljava/lang/String;">\r
214                                         <new def="x" class="Ljava/lang/String" />\r
215                                         <return value="x" />\r
216                                 </method>\r
217                                 <method name="getPrimitiveClass"\r
218                                         descriptor="(Ljava/lang/String;)Ljava/lang/Class;" static="true">\r
219                                         <new def="x" class="Ljava/lang/Class" />\r
220                                         <return value="x" />\r
221                                 </method>\r
222                                 <method name="getSigners"\r
223                                         descriptor="()[Ljava/lang/Object;">\r
224                                         <constant name="size" type="int" value="1" />\r
225                                         <new def="x" class="[Ljava/lang/Object" size="size" />\r
226                                         <new def="y" class="Ljava/lang/Class" />\r
227                                         <aastore ref="x" value="y" index="0" />\r
228                                         <return value="x" />\r
229                                 </method>\r
230                                 <method name="getSuperclass"\r
231                                         descriptor="()Ljava/lang/Class;">\r
232                                         <new def="x" class="Ljava/lang/Class" />\r
233                                         <return value="x" />\r
234                                 </method>\r
235                                 <method name="getFields"\r
236                                         descriptor="()[Ljava/lang/reflect/Field;">\r
237                                         <constant name="size" type="int" value="1" />\r
238                                         <new def="x" class="[Ljava/lang/reflect/Field" size="size"/>\r
239                                         <new def="y" class="Ljava/lang/reflect/Field" />\r
240                                         <aastore ref="x" value="y" index="0" />\r
241                                         <return value="x" />\r
242                                 </method>\r
243                                 <method name="getConstructors"\r
244                                         descriptor="()[Ljava/lang/reflect/Constructor;">\r
245                                         <constant name="size" type="int" value="1" />\r
246                                         <new def="x"\r
247                                                 class="[Ljava/lang/reflect/Constructor" size="size"/>\r
248                                         <new def="y" class="Ljava/lang/reflect/Constructor" />\r
249                                         <aastore ref="x" value="y" index="0" />\r
250                                         <return value="x" />\r
251                                 </method>\r
252                                 <method name="isAssignableFrom"\r
253                                         descriptor="(Ljava/lang/Class;)Z">\r
254                                 </method>\r
255                                 <method name="isArray" descriptor="()Z"></method>\r
256                                 <method name="isInstance"\r
257                                         descriptor="(Ljava/lang/Object;)Z">\r
258                                 </method>\r
259                                 <method name="isInterface" descriptor="()Z"></method>\r
260                                 <method name="isPrimitive" descriptor="()Z"></method>\r
261                                 <method name="newInstance"\r
262                                         descriptor="()Ljava/lang/Object;" factory="true">\r
263                                         <new def="x" class="Lcom/ibm/wala/Malleable" />\r
264                                         <return value="x" />\r
265                                 </method>\r
266                         </class>\r
267                         <class name="ClassLoader" allocatable="true">\r
268                                 <method name="findBootstrapClass"\r
269                                         descriptor="(Ljava/lang/String;)Ljava/lang/Class;">\r
270                                         <new def="x" class="Ljava/lang/Class" />\r
271                                         <return value="x" />\r
272                                 </method>\r
273                                 <method name="findLoadedClass"\r
274                                         descriptor="(Ljava/lang/String;)Ljava/lang/Class;">\r
275                                         <new def="x" class="Ljava/lang/Class" />\r
276                                         <return value="x" />\r
277                                 </method>\r
278                                 <method name="getCallerClassLoader"\r
279                                         descriptor="()Ljava/lang/ClassLoader;" static="true">\r
280                                         <new def="x" class="Ljava/lang/ClassLoader" />\r
281                                         <return value="x" />\r
282                                 </method>\r
283                         </class>\r
284                         <class name="Double">\r
285                                 <method name="doubleToLongBits" descriptor="(D)J"\r
286                                         static="true">\r
287                                 </method>\r
288                                 <method name="longBitsToDouble" descriptor="(J)D"\r
289                                         static="true">\r
290                                 </method>\r
291                         </class>\r
292                         <class name="Float">\r
293                                 <method name="floatToIntBits" descriptor="(F)I"\r
294                                         static="true">\r
295                                 </method>\r
296                                 <method name="intBitsToFloat" descriptor="(I)F"\r
297                                         static="true">\r
298                                 </method>\r
299                         </class>\r
300                         <class name="Object">\r
301                                 <method name="clone"\r
302                                         descriptor="()Ljava/lang/Object;">\r
303                                         <return value="null" />\r
304                                         <!-- Note that propagation-style builders should intercept calls to clone, and this model is OK for RTA -->\r
305                                 </method>\r
306                                 <method name="getClass"\r
307                                         descriptor="()Ljava/lang/Class;">\r
308                                         <new def="x" class="Ljava/lang/Class" />\r
309                                         <return value="x" />\r
310                                 </method>\r
311                                 <method name="hashCode" descriptor="()I"></method>\r
312                                 <method name="notify" descriptor="()V"></method>\r
313                                 <method name="notifyAll" descriptor="()V"></method>\r
314                                 <method name="wait" descriptor="(J)V"></method>\r
315                         </class>\r
316                         <class name="Runtime">\r
317                                 <method name="freeMemory" descriptor="()J"></method>\r
318                                 <method name="gc" descriptor="()V"></method>\r
319                                 <method name="totalMemory" descriptor="()J"></method>\r
320                         </class>\r
321                         <class name="SecurityManager">\r
322                                 <method name="getClassContext"\r
323                                         descriptor="()[Ljava/lang/Class;">\r
324                                         <constant name="size" type="int" value="1" />\r
325                                         <new def="x" class="[Ljava/lang/Class" size="size"/>\r
326                                         <new def="y" class="Ljava/lang/Class" />\r
327                                         <aastore ref="x" value="y" index="0" />\r
328                                         <return value="x" />\r
329                                 </method>\r
330                         </class>\r
331                         <class name="StrictMath">\r
332                                 <method name="ceil" descriptor="(D)D" static="true"></method>\r
333                                 <method name="exp" descriptor="(D)D" static="true"></method>\r
334                                 <method name="floor" descriptor="(D)D" static="true"></method>\r
335                                 <method name="pow" descriptor="(DD)D" static="true"></method>\r
336                         </class>\r
337                         <class name="String">\r
338                                 <method name="intern"\r
339                                         descriptor="()Ljava/lang/String;">\r
340                                         <new def="x" class="Ljava/lang/String" />\r
341                                         <return value="x" />\r
342                                         <poison\r
343                                                 reason="questionable model of java/lang/String/intern()"\r
344                                                 level="mild" />\r
345                                 </method>\r
346                         </class>\r
347                         <class name="System">\r
348                                 <method name="&lt;clinit&gt;" static="true"\r
349                                         descriptor="()V">\r
350                                         <new def="secure"\r
351                                                 class="Ljava/lang/SecurityManager" />\r
352                                         <putstatic class="Ljava/lang/System"\r
353                                                 field="security" fieldType="Ljava/lang/SecurityManager"\r
354                                                 value="secure" />\r
355                                         <call type="static" name="initializeSystemClass"\r
356                                                 class="Ljava/lang/System" descriptor="()V" />\r
357                                 </method>\r
359                                 <method name="initializeSystemClass" descriptor="()V"\r
360                                         static="true">\r
361                                         <new def="x" class="Ljava/util/Properties" />\r
362                                         <call type="special" name="&lt;init&gt;"\r
363                                                 class="Ljava/util/Properties" descriptor="()V" arg0="x" />\r
364                                         <new def="key" class="Ljava/lang/String" />\r
365                                         <new def="value" class="Ljava/lang/String" />\r
366                                         <call type="virtual" name="put"\r
367                                                 class="Ljava/util/Hashtable"\r
368                                                 descriptor="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"\r
369                                                 arg0="x" arg1="key" arg2="value" def="ignore" />\r
371                                         <new def="in" class="Ljava/io/FileInputStream" />\r
372                                         <call type="special" name="&lt;init&gt;"\r
373                                                 class="Ljava/io/FileInputStream" descriptor="()V" arg0="in" />\r
375                                         <new def="o" class="Ljava/io/FileOutputStream" />\r
376                                         <call type="special" name="&lt;init&gt;"\r
377                                                 class="Ljava/io/FileOutputStream" descriptor="()V" arg0="o" />\r
378                                         <new def="e" class="Ljava/io/FileOutputStream" />\r
379                                         <call type="special" name="&lt;init&gt;"\r
380                                                 class="Ljava/io/FileOutputStream" descriptor="()V" arg0="e" />\r
382                                         <new def="out" class="Ljava/io/PrintStream" />\r
383                                         <call type="special" name="&lt;init&gt;"\r
384                                                 class="Ljava/io/PrintStream"\r
385                                                 descriptor="(Ljava/io/OutputStream;)V" arg0="out" arg1="o" />\r
386                                         <new def="err" class="Ljava/io/PrintStream" />\r
387                                         <call type="special" name="&lt;init&gt;"\r
388                                                 class="Ljava/io/PrintStream"\r
389                                                 descriptor="(Ljava/io/OutputStream;)V" arg0="err" arg1="e" />\r
391                                         <putstatic class="Ljava/lang/System" field="in"\r
392                                                 fieldType="Ljava/io/InputStream" value="in" />\r
393                                         <putstatic class="Ljava/lang/System" field="out"\r
394                                                 fieldType="Ljava/io/PrintStream" value="out" />\r
395                                         <putstatic class="Ljava/lang/System" field="err"\r
396                                                 fieldType="Ljava/io/PrintStream" value="err" />\r
397                                 </method>\r
398                                 <method name="arraycopy"\r
399                                         descriptor="(Ljava/lang/Object;ILjava/lang/Object;II)V"\r
400                                         static="true">\r
401                                         <call type="static" name="arraycopy"\r
402                                                 class="Lcom/ibm/wala/model/java/lang/System"\r
403                                                 descriptor="(Ljava/lang/Object;Ljava/lang/Object;)V" arg0="arg0"\r
404                                                 arg1="arg2" />\r
405                                         <return />\r
406                                 </method>\r
407                                 <method name="currentTimeMillis" descriptor="()J"\r
408                                         static="true">\r
409                                 </method>\r
410                                 <method name="getCallerClass"\r
411                                         descriptor="()Ljava/lang/Class;" static="true">\r
412                                         <new def="x" class="Ljava/lang/Class" />\r
413                                         <return value="x" />\r
414                                 </method>\r
415                                 <method name="identityHashCode"\r
416                                         descriptor="(Ljava/lang/Object;)I" static="true">\r
417                                 </method>\r
418                                 <method name="initProperties"\r
419                                         descriptor="(Ljava/util/Properties;)Ljava/util/Properties;"\r
420                                         static="true">\r
421                                         <new def="dummy1" class="Ljava/lang/Object" />\r
422                                         <new def="dummy2" class="Ljava/lang/Object" />\r
423                                         <call type="virtual" name="put"\r
424                                                 class="Ljava/util/Properties"\r
425                                                 descriptor="(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"\r
426                                                 arg0="arg0" arg1="dummy1" arg2="dummy2" def="ignore" />\r
427                                         <new def="x" class="Ljava/util/Properties" />\r
428                                         <return value="x" />\r
429                                 </method>\r
430                                 <method name="mapLibraryName"\r
431                                         descriptor="(Ljava/lang/String;)Ljava/lang/String;"\r
432                                         static="true">\r
433                                         <return value="arg0" />\r
434                                 </method>\r
435                                 <method name="setErr0"\r
436                                         descriptor="(Ljava/io/PrintStream;)V" static="true">\r
437                                 </method>\r
438                                 <method name="setIn0"\r
439                                         descriptor="(Ljava/io/InputStream;)V" static="true">\r
440                                 </method>\r
441                                 <method name="setOut0"\r
442                                         descriptor="(Ljava/io/PrintStream;)V" static="true">\r
443                                 </method>\r
444                         </class>\r
445                         <class name="Thread">\r
446                                 <method name="currentThread"\r
447                                         descriptor="()Ljava/lang/Thread;" static="true">\r
448                                         <new def="x" class="Ljava/lang/Thread" />\r
449                                         <return value="x" />\r
450                                 </method>\r
451                                 <method name="interrupt0" descriptor="()V"></method>\r
452                                 <method name="&lt;init&gt;" descriptor="()V">\r
453                                         <putfield class="Ljava/lang/Thread" field="runnable"\r
454                                                 fieldType="Ljava/lang/Runnable" ref="arg0" value="arg0" />\r
455                                         <putfield class="Ljava/lang/Thread" field="target"\r
456                                                 fieldType="Ljava/lang/Runnable" ref="arg0" value="arg0" />\r
457                                 </method>\r
458                                 <method name="&lt;init&gt;"\r
459                                         descriptor="(Ljava/lang/Runnable;)V">\r
460                                         <putfield class="Ljava/lang/Thread" field="runnable"\r
461                                                 fieldType="Ljava/lang/Runnable" ref="arg0" value="arg1" />\r
462                                         <putfield class="Ljava/lang/Thread" field="target"\r
463                                                 fieldType="Ljava/lang/Runnable" ref="arg0" value="arg1" />\r
464                                 </method>\r
465                                 <method name="isAlive" descriptor="()Z"></method>\r
466                                 <method name="resume0" descriptor="()V" />\r
467                                 <method name="sleep" descriptor="(J)V" static="true">\r
468                                         <new def="x"\r
469                                                 class="Ljava/lang/InterruptedException" />\r
470                                         <throw value="x" />\r
471                                 </method>\r
472                                 <method name="start" descriptor="()V">\r
473                                         <putfield class="Ljava/lang/Thread" field="runnable"\r
474                                                 fieldType="Ljava/lang/Runnable" ref="arg0" value="arg0" />\r
475                                         <getfield class="Ljava/lang/Thread" field="runnable"\r
476                                                 fieldType="Ljava/lang/Runnable" def="x" ref="arg0" />\r
477                                         <call type="interface" name="run"\r
478                                                 class="Ljava/lang/Runnable" descriptor="()V" arg0="x" />\r
479                                         <putfield class="Ljava/lang/Thread" field="target"\r
480                                                 fieldType="Ljava/lang/Runnable" ref="arg0" value="arg0" />\r
481                                         <getfield class="Ljava/lang/Thread" field="target"\r
482                                                 fieldType="Ljava/lang/Runnable" def="y" ref="arg0" />\r
483                                         <call type="interface" name="run"\r
484                                                 class="Ljava/lang/Runnable" descriptor="()V" arg0="y" />\r
485                                 </method>\r
486                                 <method name="stop0" descriptor="()V" />\r
487                                 <method name="yield" descriptor="()V" static="true" />\r
488                         </class>\r
489                         <class name="Throwable">\r
490                                 <method name="fillInStackTrace"\r
491                                         descriptor="()Ljava/lang/Throwable;">\r
492                                         <return value="arg0" />\r
493                                 </method>\r
494                                 <method name="getStackTraceElement"\r
495                                         descriptor="(I)Ljava/lang/StackTraceElement;">\r
496                                         <new def="x" class="Ljava/lang/StackTraceElement" />\r
497                                         <return value="x" />\r
498                                 </method>\r
499                                 <method name="printStackTrace0"\r
500                                         descriptor="(Ljava/lang/Object;)V" />\r
501                                 <method name="getStackTraceDepth" descriptor="()I" />\r
503                         </class>\r
504                 </package>\r
505                 <package name="java/lang/reflect">\r
506                         <class name="Array">\r
507                                 <method name="get" descriptor="(Ljava/lang/Object;I)Ljava/lang/Object;" static="true">\r
508                                         <call type="static" name="get"\r
509                                                 class="Lcom/ibm/wala/model/java/lang/reflect/Array"\r
510                                                 descriptor="(Ljava/lang/Object;I)Ljava/lang/Object;" arg0="arg0"\r
511                                                 arg1="arg1" def="x"/>\r
512                                         <return value="x" />\r
513                                 </method>\r
514                                 <method name="getByte"\r
515                                         descriptor="(Ljava/lang/Object;I)B" static="true">\r
516                                 </method>\r
517                                 <method name="getLength"\r
518                                         descriptor="(Ljava/lang/Object;)I" static="true">\r
519                                 </method>\r
520                                 <method name="multiNewArray"\r
521                                         descriptor="(Ljava/lang/Class;[I)Ljava/lang/Object;" static="true"\r
522                                         factory="true">\r
523                                         <new def="x" class="Lcom/ibm/wala/Malleable" />\r
524                                         <return value="x" />\r
525                                 </method>\r
526                                 <!-- THIS KIND OF TREATMENT OF ARRAYS IS BOGUS and TOO IMPRECISE.  TODO: FIX THIS.\r
527                                 <method name="newArray"\r
528                                         descriptor="(Ljava/lang/Class;I)Ljava/lang/Object;" static="true"\r
529                                         factory="true">\r
530                                         <new def="x" class="Lcom/ibm/wala/Malleable" />\r
531                                         <return value="x" />\r
532                                 </method>\r
533                                 <method name="newInstance"\r
534                                         descriptor="(Ljava/lang/Class;I)Ljava/lang/Object;" static="true"\r
535                                         factory="true">\r
536                                         <new def="x" class="Lcom/ibm/wala/Malleable" />\r
537                                         <return value="x" />\r
538                                 </method>\r
539                                 -->\r
540                                 <method name="set"\r
541                                         descriptor="(Ljava/lang/Object;ILjava/lang/Object;)V"\r
542                                         static="true">\r
543                                 </method>\r
544                                 <method name="setByte"\r
545                                         descriptor="(Ljava/lang/Object;IB)V" static="true">\r
546                                 </method>\r
547                         </class>\r
548                         <class name="Constructor">\r
549                             <method name="newInstance"\r
550                                         descriptor="([Ljava/lang/Object;)Ljava/lang/Object;" factory="true">\r
551                                         <new def="x" class="Lcom/ibm/wala/Malleable" />\r
552                                         <return value="x" />\r
553                                 </method>\r
554                     </class>\r
555                         <class name="Field">\r
556                                 <method name="get"\r
557                                         descriptor="(Ljava/lang/Object;)Ljava/lang/Object;"\r
558                                         factory="true">\r
559                                         <new def="x" class="Lcom/ibm/wala/Malleable" />\r
560                                         <return value="x" />\r
561                                         <poison\r
562                                                 reason="bogus model of java/lang/reflect/Field/get"\r
563                                                 level="severe" />\r
564                                 </method>\r
565                                 <method name="getBoolean"\r
566                                         descriptor="(Ljava/lang/Object;)Z">\r
567                                 </method>\r
568                                 <method name="getByte"\r
569                                         descriptor="(Ljava/lang/Object;)B">\r
570                                 </method>\r
571                                 <method name="getChar"\r
572                                         descriptor="(Ljava/lang/Object;)C">\r
573                                 </method>\r
574                                 <method name="getDouble"\r
575                                         descriptor="(Ljava/lang/Object;)D">\r
576                                 </method>\r
577                                 <method name="getFloat"\r
578                                         descriptor="(Ljava/lang/Object;)F">\r
579                                 </method>\r
580                                 <method name="getInt"\r
581                                         descriptor="(Ljava/lang/Object;)I">\r
582                                 </method>\r
583                                 <method name="getLong"\r
584                                         descriptor="(Ljava/lang/Object;)J">\r
585                                 </method>\r
586                                 <method name="getShort"\r
587                                         descriptor="(Ljava/lang/Object;)S">\r
588                                 </method>\r
589                                 <method name="set"\r
590                                         descriptor="(Ljava/lang/Object;Ljava/lang/Object;)V">\r
591                                 </method>\r
592                                 <method name="setBoolean"\r
593                                         descriptor="(Ljava/lang/Object;Z)V">\r
594                                 </method>\r
595                                 <method name="setByte"\r
596                                         descriptor="(Ljava/lang/Object;B)V">\r
597                                 </method>\r
598                                 <method name="setChar"\r
599                                         descriptor="(Ljava/lang/Object;C)V">\r
600                                 </method>\r
601                                 <method name="setDouble"\r
602                                         descriptor="(Ljava/lang/Object;D)V">\r
603                                 </method>\r
604                                 <method name="setFloat"\r
605                                         descriptor="(Ljava/lang/Object;F)V">\r
606                                 </method>\r
607                                 <method name="setInt"\r
608                                         descriptor="(Ljava/lang/Object;I)V">\r
609                                 </method>\r
610                                 <method name="setLong"\r
611                                         descriptor="(Ljava/lang/Object;J)V">\r
612                                 </method>\r
613                                 <method name="setShort"\r
614                                         descriptor="(Ljava/lang/Object;S)V">\r
615                                 </method>\r
616                         </class>\r
617                 </package>\r
619                 <package name="java/net">\r
620                         <class name="PlainDatagramSocketImpl">\r
621                                 <method name="bind"\r
622                                         descriptor="(ILjava/net/InetAddress;)V">\r
623                                 </method>\r
624                         </class>\r
625                         <class name="PlainSocketImpl">\r
626                                 <method name="initProto" descriptor="()V" static="true" />\r
627                                 <method name="socketAvailable" descriptor="()I" />\r
628                                 <method name="socketBind"\r
629                                         descriptor="(Ljava/net/InetAddress;I)V" />\r
630                                 <method name="socketClose0" descriptor="(Z)V" />\r
631                                 <method name="socketConnect"\r
632                                         descriptor="(Ljava/net/InetAddress;II)V" />\r
633                                 <method name="socketCreate" descriptor="(Z)V" />\r
634                                 <method name="socketGetOption"\r
635                                         descriptor="(ILjava/lang/Object;)I" />\r
636                                 <method name="socketListen" descriptor="(I)V" />\r
637                                 <method name="socketSetOption"\r
638                                         descriptor="(IZLjava/lang/Object;)V" />\r
639                         </class>\r
640                         <class name="SocketInputStream">\r
641                                 <method name="init" descriptor="()V" static="true" />\r
642                                 <method name="socketRead0"\r
643                                         descriptor="(Ljava/io/FileDescriptor;[BIII)I" />\r
644                         </class>\r
645                         <class name="SocketOutputStream">\r
646                                 <method name="init" descriptor="()V" static="true" />\r
647                                 <method name="socketWrite0"\r
648                                         descriptor="(Ljava/io/FileDescriptor;[BII)V" />\r
649                         </class>\r
650                 </package>\r
652                 <package name="java/security">\r
653                         <class name="AccessControlContext">\r
654                                 <method name="getInheritedAccessControlContext"\r
655                                         descriptor="()Ljava/security/AccessControlContext;">\r
656                                         <new def="x" class="Ljava/lang/Object" />\r
657                                         <return value="x" />\r
658                                         <poison\r
659                                                 reason="questionable model of java/security/AccessControlContext/getInheritedAccessControlContext"\r
660                                                 level="moderate" />\r
661                                 </method>\r
662                         </class>\r
663                         <class name="AccessController">\r
664                                 <method name="doPrivileged"\r
665                                         descriptor="(Ljava/security/PrivilegedAction;)Ljava/lang/Object;"\r
666                                         static="true">\r
667                                         <call type="interface" name="run"\r
668                                                 class="Ljava/security/PrivilegedAction"\r
669                                                 descriptor="()Ljava/lang/Object;" def="x" arg0="arg0" />\r
670                                         <return value="x" />\r
671                                         <new def="y"\r
672                                                 class="Ljava/security/PrivilegedActionException" />\r
673                                         <throw value="y" />\r
674                                         <poison\r
675                                                 reason="incorrect model of java/security/AccessController/doPrivileged"\r
676                                                 level="severe" />\r
677                                 </method>\r
678                                 <method name="doPrivileged"\r
679                                         descriptor="(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;"\r
680                                         static="true">\r
681                                         <call type="interface" name="run"\r
682                                                 class="Ljava/security/PrivilegedExceptionAction"\r
683                                                 descriptor="()Ljava/lang/Object;" def="x" arg0="arg0" />\r
684                                         <return value="x" />\r
685                                         <new def="y"\r
686                                                 class="Ljava/security/PrivilegedActionException" />\r
687                                         <throw value="y" />\r
688                                         <poison\r
689                                                 reason="incorrect model of java/security/AccessController/doPrivileged"\r
690                                                 level="severe" />\r
691                                 </method>\r
692                                 <method name="doPrivileged"\r
693                                         descriptor="(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;"\r
694                                         static="true">\r
695                                         <call type="interface" name="run"\r
696                                                 class="Ljava/security/PrivilegedAction"\r
697                                                 descriptor="()Ljava/lang/Object;" def="x" arg0="arg0" />\r
698                                         <return value="x" />\r
699                                         <new def="y"\r
700                                                 class="Ljava/security/PrivilegedActionException" />\r
701                                         <throw value="y" />\r
702                                         <poison\r
703                                                 reason="incorrect model of java/security/AccessController/doPrivileged"\r
704                                                 level="severe" />\r
705                                 </method>\r
706                                 <method name="doPrivileged"\r
707                                         descriptor="(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;"\r
708                                         static="true">\r
709                                         <call type="interface" name="run"\r
710                                                 class="Ljava/security/PrivilegedExceptionAction"\r
711                                                 descriptor="()Ljava/lang/Object;" def="x" arg0="arg0" />\r
712                                         <return value="x" />\r
713                                         <new def="y"\r
714                                                 class="Ljava/security/PrivilegedActionException" />\r
715                                         <throw value="y" />\r
716                                         <poison\r
717                                                 reason="incorrect model of java/security/AccessController/doPrivileged"\r
718                                                 level="severe" />\r
719                                 </method>\r
720                                 <method name="getStackAccessControlContext"\r
721                                         descriptor="()Ljava/security/AccessControlContext;"\r
722                                         static="true">\r
723                                         <new def="x"\r
724                                                 class="Ljava/security/AccessControlContext" />\r
725                                         <return value="x" />\r
726                                         <poison\r
727                                                 reason="questionable model of java/security/AccessController/getStackAccessControlContext"\r
728                                                 level="moderate" />\r
729                                 </method>\r
730                         </class>\r
731                 </package>\r
733                 <package name="java/util">\r
734                         <class name="TimeZone">\r
735                                 <method name="getSystemTimeZoneID"\r
736                                         descriptor="(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"\r
737                                         static="true">\r
738                                         <new def="x" class="Ljava/lang/String" />\r
739                                         <return value="x" />\r
740                                 </method>\r
741                         </class>\r
742                 </package>\r
744                 <package name="java/util/logging">\r
745                         <class name="FileHandler">\r
746                                 <method name="isSetUID" descriptor="()Z" static="true" />\r
747                         </class>\r
748                 </package>\r
750                 <package name="java/util/prefs">\r
751                         <class name="FileSystemPreferences">\r
752                                 <method name="chmod" descriptor="(Ljava/lang/String;I)I"\r
753                                         static="true" />\r
754                                 <method name="lockFile0"\r
755                                         descriptor="(Ljava/lang/String;IZ)[I" static="true">\r
756                                         <constant name="size" type="int" value="1" />\r
757                                         <new def="x" class="[I" size="size"/>\r
758                                         <return value="x" />\r
759                                 </method>\r
760                                 <method name="unlockFile0" descriptor="(I)I"\r
761                                         static="true" />\r
762                         </class>\r
763                 </package>\r
765                 <package name="sun/misc">\r
766                         <class name="AtomicLongCSImpl">\r
767                                 <method name="attemptUpdate" descriptor="(JJ)Z" />\r
768                         </class>\r
769                         <class name="AtomicLong">\r
770                                 <method name="VMSupportsCS8" descriptor="()Z"\r
771                                         static="true" />\r
772                         </class>\r
773                         <class name="Signal">\r
774                                 <method name="handle0" descriptor="(IJ)J" static="true" />\r
775                                 <method name="findSignal"\r
776                                         descriptor="(Ljava/lang/String;)I" static="true" />\r
777                         </class>\r
778                         <class name="Unsafe" allocatable="true">\r
779                                 <method name="getUnsafe" descriptor="()Lsun/misc/Unsafe"\r
780                                         static="true">\r
781                                         <new def="x" class="Lsun/misc/Unsafe" />\r
782                                         <return value="x" />\r
783                                 </method>\r
784                                 <method name="allocateMemory" descriptor="(J)J" />\r
785                                 <method name="copyMemory" descriptor="(JJJ)V" />\r
786                                 <method name="freeMemory" descriptor="(J)V" />\r
787                                 <method name="objectFieldOffset"\r
788                                         descriptor="(Ljava/lang/reflect/Field;)J" />\r
789                                 <method name="getBoolean" descriptor="(J)Z" />\r
790                                 <method name="getByte" descriptor="(J)B" />\r
791                                 <method name="getChar" descriptor="(J)C" />\r
792                                 <method name="getDouble" descriptor="(J)D" />\r
793                                 <method name="getFloat" descriptor="(J)F" />\r
794                                 <method name="getInt" descriptor="(J)I" />\r
795                                 <method name="getLong" descriptor="(J)J" />\r
796                                 <method name="getShort" descriptor="(J)S" />\r
797                                 <method name="getBoolean"\r
798                                         descriptor="(Ljava/lang/Object;J)Z" />\r
799                                 <method name="getByte"\r
800                                         descriptor="(Ljava/lang/Object;J)B" />\r
801                                 <method name="getChar"\r
802                                         descriptor="(Ljava/lang/Object;J)C" />\r
803                                 <method name="getDouble"\r
804                                         descriptor="(Ljava/lang/Object;J)D" />\r
805                                 <method name="getFloat"\r
806                                         descriptor="(Ljava/lang/Object;J)F" />\r
807                                 <method name="getInt"\r
808                                         descriptor="(Ljava/lang/Object;J)I" />\r
809                                 <method name="getLong"\r
810                                         descriptor="(Ljava/lang/Object;J)J" />\r
811                                 <method name="getShort"\r
812                                         descriptor="(Ljava/lang/Object;J)S" />\r
813                                 <method name="putBoolean" descriptor="(JZ)V" />\r
814                                 <method name="putByte" descriptor="(JB)V" />\r
815                                 <method name="putChar" descriptor="(JC)V" />\r
816                                 <method name="putDouble" descriptor="(JD)V" />\r
817                                 <method name="putFloat" descriptor="(JF)V" />\r
818                                 <method name="putInt" descriptor="(JI)V" />\r
819                                 <method name="putLong" descriptor="(JJ)V" />\r
820                                 <method name="putShort" descriptor="(JS)V" />\r
821                                 <method name="registerNatives" descriptor="()V"\r
822                                         static="true" />\r
823                         </class>\r
824                 </package>\r
826                 <package name="sun/nio/ch">\r
827                         <class name="IOUtil">\r
828                                 <method name="initIDs" descriptor="()V" static="true" />\r
829                         </class>\r
830                         <class name="FileDispatcher">\r
831                                 <method name="init" descriptor="()V" static="true" />\r
832                         </class>\r
833                         <class name="FileChannelImpl">\r
834                                 <method name="lock0"\r
835                                         descriptor="(Ljava/io/FileDescriptor;ZJJZ)I" />\r
836                                 <method name="initIDs" descriptor="()J" static="true" />\r
837                         </class>\r
838                 </package>\r
840         </classloader>\r
841 </summary-spec>\r