Mercurial > hg > truffle
annotate src/share/vm/prims/jvmtiH.xsl @ 1604:b918d354830a
6960865: ldc of unloaded class throws an assert in ciTypeFlow
Summary: Support java_mirror for unloaded klasses, arrays as well as instances. Simplify ciTypeFlow by removing unused path.
Reviewed-by: kvn
author | jrose |
---|---|
date | Sat, 12 Jun 2010 22:53:43 -0700 |
parents | c18cbe5936b8 |
children | 684faacebf20 |
rev | line source |
---|---|
0 | 1 <?xml version="1.0" encoding="utf-8"?> |
2 <!-- | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
3 Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved. |
0 | 4 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5 | |
6 This code is free software; you can redistribute it and/or modify it | |
7 under the terms of the GNU General Public License version 2 only, as | |
8 published by the Free Software Foundation. | |
9 | |
10 This code is distributed in the hope that it will be useful, but WITHOUT | |
11 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
12 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
13 version 2 for more details (a copy is included in the LICENSE file that | |
14 accompanied this code). | |
15 | |
16 You should have received a copy of the GNU General Public License version | |
17 2 along with this work; if not, write to the Free Software Foundation, | |
18 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
19 | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
20 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
21 or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
22 questions. |
0 | 23 |
24 --> | |
25 | |
26 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |
27 version="1.0"> | |
28 | |
29 <xsl:import href="jvmtiLib.xsl"/> | |
30 | |
31 <xsl:output method="text" omit-xml-declaration="yes"/> | |
32 | |
33 <xsl:template match="/"> | |
34 <xsl:apply-templates select="specification"/> | |
35 </xsl:template> | |
36 | |
37 <xsl:template match="specification"> | |
38 | |
39 <xsl:call-template name="intro"/> | |
40 | |
41 <xsl:text>/* Derived Base Types */ | |
42 </xsl:text> | |
43 <xsl:apply-templates select="//basetype"/> | |
44 | |
45 <xsl:text> | |
46 | |
47 /* Constants */ | |
48 </xsl:text> | |
49 <xsl:apply-templates select="//constants"/> | |
50 | |
51 <xsl:text> | |
52 | |
53 /* Errors */ | |
54 | |
55 typedef enum { | |
56 </xsl:text> | |
57 <xsl:for-each select="//errorid"> | |
58 <xsl:sort select="@num" data-type="number"/> | |
59 <xsl:apply-templates select="." mode="enum"/> | |
60 <xsl:text>, | |
61 </xsl:text> | |
62 <xsl:if test="position() = last()"> | |
63 <xsl:text> JVMTI_ERROR_MAX = </xsl:text> | |
64 <xsl:value-of select="@num"/> | |
65 </xsl:if> | |
66 </xsl:for-each> | |
67 <xsl:text> | |
68 } jvmtiError; | |
69 </xsl:text> | |
70 <xsl:apply-templates select="eventsection" mode="enum"/> | |
71 | |
72 <xsl:text> | |
73 /* Pre-Declarations */ | |
74 </xsl:text> | |
75 <xsl:apply-templates select="//typedef|//uniontypedef" mode="early"/> | |
76 | |
77 <xsl:text> | |
78 /* Function Types */ | |
79 </xsl:text> | |
80 <xsl:apply-templates select="//callback"/> | |
81 | |
82 <xsl:text> | |
83 | |
84 /* Structure Types */ | |
85 </xsl:text> | |
86 <xsl:apply-templates select="//typedef|//uniontypedef" mode="body"/> | |
87 <xsl:apply-templates select="//capabilitiestypedef"/> | |
88 | |
89 <xsl:apply-templates select="eventsection" mode="body"/> | |
90 | |
91 <xsl:apply-templates select="functionsection"/> | |
92 | |
93 <xsl:call-template name="outro"/> | |
94 | |
95 </xsl:template> | |
96 | |
97 <xsl:template name="intro"> | |
98 <xsl:call-template name="includeHeader"/> | |
99 <xsl:text> | |
100 /* Include file for the Java(tm) Virtual Machine Tool Interface */ | |
101 | |
102 #ifndef _JAVA_JVMTI_H_ | |
103 #define _JAVA_JVMTI_H_ | |
104 | |
105 #include "jni.h" | |
106 | |
107 #ifdef __cplusplus | |
108 extern "C" { | |
109 #endif | |
110 | |
111 enum { | |
112 JVMTI_VERSION_1 = 0x30010000, | |
113 JVMTI_VERSION_1_0 = 0x30010000, | |
114 JVMTI_VERSION_1_1 = 0x30010100, | |
115 | |
116 JVMTI_VERSION = 0x30000000 + (</xsl:text> | |
117 <xsl:value-of select="//specification/@majorversion"/> | |
118 <xsl:text> * 0x10000) + (</xsl:text> | |
119 <xsl:value-of select="//specification/@minorversion"/> | |
120 <xsl:text> * 0x100)</xsl:text> | |
121 <xsl:variable name="micro"> | |
122 <xsl:call-template name="microversion"/> | |
123 </xsl:variable> | |
124 <xsl:choose> | |
125 <xsl:when test="string($micro)='dev'"> | |
126 <xsl:text> /* checked out - </xsl:text> | |
127 </xsl:when> | |
128 <xsl:otherwise> | |
129 <xsl:text> + </xsl:text> | |
130 <xsl:value-of select="$micro"/> | |
131 <xsl:text> /* </xsl:text> | |
132 </xsl:otherwise> | |
133 </xsl:choose> | |
134 <xsl:text>version: </xsl:text> | |
135 <xsl:call-template name="showversion"/> | |
136 <xsl:text> */ | |
137 }; | |
138 | |
139 JNIEXPORT jint JNICALL | |
140 Agent_OnLoad(JavaVM *vm, char *options, void *reserved); | |
141 | |
142 JNIEXPORT jint JNICALL | |
143 Agent_OnAttach(JavaVM* vm, char* options, void* reserved); | |
144 | |
145 JNIEXPORT void JNICALL | |
146 Agent_OnUnload(JavaVM *vm); | |
147 | |
148 /* Forward declaration of the environment */ | |
149 | |
150 struct _jvmtiEnv; | |
151 | |
152 struct jvmtiInterface_1_; | |
153 | |
154 #ifdef __cplusplus | |
155 typedef _jvmtiEnv jvmtiEnv; | |
156 #else | |
157 typedef const struct jvmtiInterface_1_ *jvmtiEnv; | |
158 #endif /* __cplusplus */ | |
159 | |
160 </xsl:text> | |
161 </xsl:template> | |
162 | |
163 <xsl:template name="outro"> | |
164 <xsl:text> | |
165 | |
166 #ifdef __cplusplus | |
167 } /* extern "C" */ | |
168 #endif /* __cplusplus */ | |
169 | |
170 #endif /* !_JAVA_JVMTI_H_ */ | |
171 | |
172 </xsl:text> | |
173 </xsl:template> | |
174 | |
175 <xsl:template match="eventsection" mode="enum"> | |
176 <xsl:text> | |
177 /* Event IDs */ | |
178 | |
179 typedef enum { | |
180 </xsl:text> | |
181 <xsl:for-each select="event"> | |
182 <xsl:sort select="@num" data-type="number"/> | |
183 <xsl:if test="position()=1"> | |
184 <xsl:text> JVMTI_MIN_EVENT_TYPE_VAL = </xsl:text> | |
185 <xsl:value-of select="@num"/> | |
186 <xsl:text>, | |
187 </xsl:text> | |
188 </xsl:if> | |
189 <xsl:apply-templates select="." mode="enum"/> | |
190 <xsl:text>, | |
191 </xsl:text> | |
192 <xsl:if test="position()=last()"> | |
193 <xsl:text> JVMTI_MAX_EVENT_TYPE_VAL = </xsl:text> | |
194 <xsl:value-of select="@num"/> | |
195 </xsl:if> | |
196 </xsl:for-each> | |
197 <xsl:text> | |
198 } jvmtiEvent; | |
199 | |
200 </xsl:text> | |
201 </xsl:template> | |
202 | |
203 <xsl:template match="eventsection" mode="body"> | |
204 <xsl:text> | |
205 | |
206 /* Event Definitions */ | |
207 | |
208 typedef void (JNICALL *jvmtiEventReserved)(void); | |
209 | |
210 </xsl:text> | |
211 <xsl:apply-templates select="event" mode="definition"> | |
212 <xsl:sort select="@id"/> | |
213 </xsl:apply-templates> | |
214 | |
215 <xsl:text> | |
216 /* Event Callback Structure */ | |
217 | |
218 typedef struct { | |
219 </xsl:text> | |
220 <xsl:call-template name="eventStruct"> | |
221 <xsl:with-param name="events" select="event"/> | |
222 <xsl:with-param name="index" select="0"/> | |
223 <xsl:with-param name="started" select="false"/> | |
224 <xsl:with-param name="comment" select="'Yes'"/> | |
225 </xsl:call-template> | |
226 <xsl:text>} jvmtiEventCallbacks; | |
227 </xsl:text> | |
228 | |
229 </xsl:template> | |
230 | |
231 | |
232 <xsl:template match="event" mode="definition"> | |
233 <xsl:text> | |
234 typedef void (JNICALL *jvmtiEvent</xsl:text> | |
235 <xsl:value-of select="@id"/> | |
236 <xsl:text>) | |
237 (jvmtiEnv *jvmti_env</xsl:text> | |
238 <xsl:apply-templates select="parameters" mode="signature"> | |
239 <xsl:with-param name="comma"> | |
240 <xsl:text>, | |
241 </xsl:text> | |
242 </xsl:with-param> | |
243 </xsl:apply-templates> | |
244 <xsl:text>); | |
245 </xsl:text> | |
246 </xsl:template> | |
247 | |
248 <xsl:template match="functionsection"> | |
249 <xsl:text> | |
250 | |
251 /* Function Interface */ | |
252 | |
253 typedef struct jvmtiInterface_1_ { | |
254 | |
255 </xsl:text> | |
256 <xsl:call-template name="funcStruct"> | |
257 <xsl:with-param name="funcs" select="category/function[count(@hide)=0]"/> | |
258 <xsl:with-param name="index" select="1"/> | |
259 </xsl:call-template> | |
260 | |
261 <xsl:text>} jvmtiInterface_1; | |
262 | |
263 struct _jvmtiEnv { | |
264 const struct jvmtiInterface_1_ *functions; | |
265 #ifdef __cplusplus | |
266 | |
267 </xsl:text> | |
268 <xsl:apply-templates select="category" mode="cppinline"/> | |
269 <xsl:text> | |
270 #endif /* __cplusplus */ | |
271 }; | |
272 </xsl:text> | |
273 | |
274 </xsl:template> | |
275 | |
276 <xsl:template name="funcStruct"> | |
277 <xsl:param name="funcs"/> | |
278 <xsl:param name="index"/> | |
279 <xsl:variable name="thisFunction" select="$funcs[@num=$index]"/> | |
280 <xsl:text> /* </xsl:text> | |
281 <xsl:number value="$index" format=" 1"/> | |
282 <xsl:text> : </xsl:text> | |
283 <xsl:choose> | |
284 <xsl:when test="count($thisFunction)=1"> | |
285 <xsl:value-of select="$thisFunction/synopsis"/> | |
286 <xsl:text> */ | |
287 jvmtiError (JNICALL *</xsl:text> | |
288 <xsl:value-of select="$thisFunction/@id"/> | |
289 <xsl:text>) (jvmtiEnv* env</xsl:text> | |
290 <xsl:apply-templates select="$thisFunction/parameters" mode="signature"> | |
291 <xsl:with-param name="comma"> | |
292 <xsl:text>, | |
293 </xsl:text> | |
294 </xsl:with-param> | |
295 </xsl:apply-templates> | |
296 <xsl:text>)</xsl:text> | |
297 </xsl:when> | |
298 <xsl:otherwise> | |
299 <xsl:text> RESERVED */ | |
300 void *reserved</xsl:text> | |
301 <xsl:value-of select="$index"/> | |
302 </xsl:otherwise> | |
303 </xsl:choose> | |
304 <xsl:text>; | |
305 | |
306 </xsl:text> | |
307 <xsl:if test="count($funcs[@num > $index]) > 0"> | |
308 <xsl:call-template name="funcStruct"> | |
309 <xsl:with-param name="funcs" select="$funcs"/> | |
310 <xsl:with-param name="index" select="1+$index"/> | |
311 </xsl:call-template> | |
312 </xsl:if> | |
313 </xsl:template> | |
314 | |
315 | |
316 <xsl:template match="function"> | |
317 <xsl:text> jvmtiError (JNICALL *</xsl:text> | |
318 <xsl:value-of select="@id"/> | |
319 <xsl:text>) (jvmtiEnv* env</xsl:text> | |
320 <xsl:apply-templates select="parameters" mode="signature"/> | |
321 <xsl:text>); | |
322 | |
323 </xsl:text> | |
324 </xsl:template> | |
325 | |
326 <xsl:template match="category" mode="cppinline"> | |
327 <xsl:apply-templates select="function[count(@hide)=0]" mode="cppinline"/> | |
328 </xsl:template> | |
329 | |
330 <xsl:template match="function" mode="cppinline"> | |
331 <xsl:text> | |
332 jvmtiError </xsl:text> | |
333 <xsl:value-of select="@id"/> | |
334 <xsl:text>(</xsl:text> | |
335 <xsl:apply-templates select="parameters" mode="signaturenoleadcomma"/> | |
336 <xsl:text>) { | |
337 return functions-></xsl:text> | |
338 <xsl:value-of select="@id"/> | |
339 <xsl:text>(this</xsl:text> | |
340 <xsl:for-each select="parameters"> | |
341 <xsl:for-each select="param"> | |
342 <xsl:if test="@id != '...' and count(jclass/@method) = 0"> | |
343 <xsl:text>, </xsl:text> | |
344 <xsl:value-of select="@id"/> | |
345 </xsl:if> | |
346 </xsl:for-each> | |
347 </xsl:for-each> | |
348 <xsl:text>); | |
349 } | |
350 </xsl:text> | |
351 </xsl:template> | |
352 | |
353 | |
354 <xsl:template match="basetype"> | |
355 <xsl:if test="count(definition)!=0"> | |
356 <xsl:text> | |
357 </xsl:text> | |
358 <xsl:apply-templates select="definition"/> | |
359 </xsl:if> | |
360 </xsl:template> | |
361 | |
362 <xsl:template match="constants"> | |
363 <xsl:text> | |
364 | |
365 /* </xsl:text> | |
366 <xsl:value-of select="@label"/> | |
367 <xsl:text> */ | |
368 </xsl:text> | |
369 <xsl:choose> | |
370 <xsl:when test="@kind='enum'"> | |
371 <xsl:apply-templates select="." mode="enum"/> | |
372 </xsl:when> | |
373 <xsl:otherwise> | |
374 <xsl:apply-templates select="." mode="constants"/> | |
375 </xsl:otherwise> | |
376 </xsl:choose> | |
377 </xsl:template> | |
378 | |
379 <xsl:template match="callback"> | |
380 <xsl:text> | |
381 typedef </xsl:text> | |
382 <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> | |
383 <xsl:text> (JNICALL *</xsl:text> | |
384 <xsl:value-of select="@id"/> | |
385 <xsl:text>) | |
386 (</xsl:text> | |
387 <xsl:for-each select="parameters"> | |
388 <xsl:apply-templates select="param[position()=1]" mode="signature"/> | |
389 <xsl:for-each select="param[position()>1]"> | |
390 <xsl:text>, </xsl:text> | |
391 <xsl:apply-templates select="." mode="signature"/> | |
392 </xsl:for-each> | |
393 </xsl:for-each> | |
394 <xsl:text>); | |
395 </xsl:text> | |
396 </xsl:template> | |
397 | |
398 <xsl:template match="capabilitiestypedef"> | |
399 <xsl:text> | |
400 </xsl:text> | |
401 <xsl:apply-templates select="." mode="genstruct"/> | |
402 <xsl:text> | |
403 </xsl:text> | |
404 </xsl:template> | |
405 | |
406 <xsl:template match="typedef" mode="early"> | |
407 <xsl:text>struct _</xsl:text> | |
408 <xsl:value-of select="@id"/> | |
409 <xsl:text>; | |
410 </xsl:text> | |
411 <xsl:text>typedef struct _</xsl:text> | |
412 <xsl:value-of select="@id"/> | |
413 <xsl:text> </xsl:text> | |
414 <xsl:value-of select="@id"/> | |
415 <xsl:text>; | |
416 </xsl:text> | |
417 </xsl:template> | |
418 | |
419 <xsl:template match="typedef" mode="body"> | |
420 <xsl:text>struct _</xsl:text> | |
421 <xsl:value-of select="@id"/> | |
422 <xsl:text> { | |
423 </xsl:text> | |
424 <xsl:apply-templates select="field" mode="signature"/> | |
425 <xsl:text>}; | |
426 </xsl:text> | |
427 </xsl:template> | |
428 | |
429 <xsl:template match="uniontypedef" mode="early"> | |
430 <xsl:text>union _</xsl:text> | |
431 <xsl:value-of select="@id"/> | |
432 <xsl:text>; | |
433 </xsl:text> | |
434 <xsl:text>typedef union _</xsl:text> | |
435 <xsl:value-of select="@id"/> | |
436 <xsl:text> </xsl:text> | |
437 <xsl:value-of select="@id"/> | |
438 <xsl:text>; | |
439 </xsl:text> | |
440 </xsl:template> | |
441 | |
442 <xsl:template match="uniontypedef" mode="body"> | |
443 <xsl:text>union _</xsl:text> | |
444 <xsl:value-of select="@id"/> | |
445 <xsl:text> { | |
446 </xsl:text> | |
447 <xsl:apply-templates select="field" mode="signature"/> | |
448 <xsl:text>}; | |
449 </xsl:text> | |
450 </xsl:template> | |
451 | |
452 </xsl:stylesheet> |