Mercurial > hg > truffle
annotate src/share/vm/prims/jvmtiEnter.xsl @ 18104:eaf39a954227
Merge with jdk8u25-b17
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 16 Oct 2014 11:57:39 +0200 |
parents | 52b4284cb496 |
children |
rev | line source |
---|---|
0 | 1 <?xml version="1.0"?> |
2 <!-- | |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
14223
diff
changeset
|
3 Copyright (c) 2002, 2014, 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:
1142
diff
changeset
|
20 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1142
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:
1142
diff
changeset
|
22 questions. |
0 | 23 |
24 --> | |
25 | |
26 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | |
27 | |
28 <xsl:import href="jvmtiLib.xsl"/> | |
29 | |
30 <xsl:output method="text" indent="no" omit-xml-declaration="yes"/> | |
31 | |
32 <xsl:param name="trace"></xsl:param> | |
33 <xsl:param name="interface"></xsl:param> | |
34 | |
35 | |
36 <xsl:template match="specification"> | |
37 <xsl:call-template name="sourceHeader"/> | |
38 <xsl:text> | |
1972 | 39 # include "precompiled.hpp" |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6725
diff
changeset
|
40 # include "utilities/macros.hpp" |
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6725
diff
changeset
|
41 #if INCLUDE_JVMTI |
1972 | 42 # include "prims/jvmtiEnter.hpp" |
43 # include "prims/jvmtiRawMonitor.hpp" | |
44 # include "prims/jvmtiUtil.hpp" | |
0 | 45 |
17937
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
14223
diff
changeset
|
46 // There are known-bad format/arg pairings in the code generated by this file. |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
14223
diff
changeset
|
47 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC |
78bbf4d43a14
8037816: Fix for 8036122 breaks build with Xcode5/clang
drchase
parents:
14223
diff
changeset
|
48 |
0 | 49 </xsl:text> |
50 | |
51 <xsl:if test="$trace = 'Trace'"> | |
52 <xsl:text> | |
53 #ifdef JVMTI_TRACE | |
54 </xsl:text> | |
55 </xsl:if> | |
56 | |
57 <xsl:if test="$trace != 'Trace'"> | |
58 <xsl:text> | |
59 | |
60 // Error names | |
61 const char* JvmtiUtil::_error_names[] = { | |
62 </xsl:text> | |
63 <xsl:call-template name="fillEntityName"> | |
64 <xsl:with-param name="entities" select="errorsection/errorcategory/errorid"/> | |
65 </xsl:call-template> | |
66 <xsl:text> | |
67 }; | |
68 | |
69 | |
70 // Event threaded | |
71 const bool JvmtiUtil::_event_threaded[] = { | |
72 </xsl:text> | |
73 <xsl:call-template name="fillEventThreaded"> | |
74 <xsl:with-param name="entities" select="eventsection/event"/> | |
75 </xsl:call-template> | |
76 <xsl:text> | |
77 }; | |
78 | |
79 </xsl:text> | |
80 <xsl:call-template name="eventCapabilitiesTest"/> | |
81 </xsl:if> | |
82 | |
83 <xsl:if test="$trace = 'Trace'"> | |
84 | |
85 <!-- all this just to return the highest event number --> | |
86 <xsl:variable name="maxEvent"> | |
87 <xsl:for-each select="eventsection/event"> | |
88 <xsl:variable name="mynum" select="@num"/> | |
89 <xsl:if test="count(../../eventsection/event[@num > $mynum]) = 0"> | |
90 <xsl:value-of select="@num"/> | |
91 </xsl:if> | |
92 </xsl:for-each> | |
93 </xsl:variable> | |
94 | |
95 <xsl:text>jbyte JvmtiTrace::_event_trace_flags[</xsl:text> | |
96 <xsl:value-of select="1+$maxEvent"/> | |
97 <xsl:text>]; | |
98 | |
99 jint JvmtiTrace::_max_event_index = </xsl:text> | |
100 <xsl:value-of select="$maxEvent"/> | |
101 <xsl:text>; | |
102 | |
103 // Event names | |
104 const char* JvmtiTrace::_event_names[] = { | |
105 </xsl:text> | |
106 <xsl:call-template name="fillEntityName"> | |
107 <xsl:with-param name="entities" select="eventsection/event"/> | |
108 </xsl:call-template> | |
109 <xsl:text> | |
110 }; | |
111 </xsl:text> | |
112 <xsl:apply-templates select="//constants[@kind='enum']"/> | |
113 </xsl:if> | |
114 <xsl:apply-templates select="functionsection"/> | |
115 | |
116 <xsl:if test="$trace='Trace'"> | |
117 <xsl:text> | |
118 #endif /*JVMTI_TRACE */ | |
119 </xsl:text> | |
120 </xsl:if> | |
121 | |
122 </xsl:template> | |
123 | |
124 <xsl:template match="constants"> | |
125 <xsl:text> | |
126 | |
127 // </xsl:text> | |
128 <xsl:value-of select="@label"/> | |
129 <xsl:text> names | |
130 const char* </xsl:text> | |
131 <xsl:value-of select="@id"/> | |
132 <xsl:text>ConstantNames[] = { | |
133 </xsl:text> | |
134 <xsl:apply-templates select="constant" mode="constname"/> | |
135 <xsl:text> NULL | |
136 }; | |
137 | |
138 // </xsl:text> | |
139 <xsl:value-of select="@label"/> | |
140 <xsl:text> value | |
141 jint </xsl:text> | |
142 <xsl:value-of select="@id"/> | |
143 <xsl:text>ConstantValues[] = { | |
144 </xsl:text> | |
145 <xsl:apply-templates select="constant" mode="constvalue"/> | |
146 <xsl:text> 0 | |
147 }; | |
148 | |
149 </xsl:text> | |
150 </xsl:template> | |
151 | |
152 <xsl:template match="constant" mode="constname"> | |
153 <xsl:text> "</xsl:text> | |
154 <xsl:value-of select="@id"/> | |
155 <xsl:text>", | |
156 </xsl:text> | |
157 </xsl:template> | |
158 | |
159 <xsl:template match="constant" mode="constvalue"> | |
160 <xsl:text> </xsl:text> | |
161 <xsl:value-of select="@num"/> | |
162 <xsl:text>, | |
163 </xsl:text> | |
164 </xsl:template> | |
165 | |
166 <xsl:template name="eventCapabilitiesTest"> | |
167 <xsl:text> | |
168 | |
169 // Check Event Capabilities | |
170 const bool JvmtiUtil::has_event_capability(jvmtiEvent event_type, const jvmtiCapabilities* capabilities_ptr) { | |
171 switch (event_type) { | |
172 </xsl:text> | |
173 <xsl:for-each select="//eventsection/event"> | |
174 <xsl:variable name="capa" select="capabilities/required"/> | |
175 <xsl:if test="count($capa)"> | |
176 <xsl:text> case </xsl:text> | |
177 <xsl:value-of select="@const"/> | |
178 <xsl:text>: | |
179 return capabilities_ptr-></xsl:text> | |
180 <xsl:value-of select="$capa/@id"/> | |
181 <xsl:text> != 0; | |
182 </xsl:text> | |
183 </xsl:if> | |
184 </xsl:for-each> | |
185 <xsl:text> } | |
186 // if it does not have a capability it is required | |
187 return JNI_TRUE; | |
188 } | |
189 | |
190 </xsl:text> | |
191 </xsl:template> | |
192 | |
193 <xsl:template match="functionsection"> | |
194 <xsl:if test="$trace='Trace'"> | |
195 | |
196 <!-- all this just to return the highest function number --> | |
197 <xsl:variable name="maxFunction"> | |
198 <xsl:for-each select="category/function"> | |
199 <xsl:variable name="mynum" select="@num"/> | |
200 <xsl:if test="count(../../category/function[@num > $mynum]) = 0"> | |
201 <xsl:value-of select="@num"/> | |
202 </xsl:if> | |
203 </xsl:for-each> | |
204 </xsl:variable> | |
205 | |
206 <xsl:text>jbyte JvmtiTrace::_trace_flags[</xsl:text> | |
207 <xsl:value-of select="1+$maxFunction"/> | |
208 <xsl:text>]; | |
209 | |
210 jint JvmtiTrace::_max_function_index = </xsl:text> | |
211 <xsl:value-of select="$maxFunction"/> | |
212 <xsl:text>; | |
213 | |
214 // Function names | |
215 const char* JvmtiTrace::_function_names[] = { | |
216 </xsl:text> | |
217 <xsl:call-template name="fillEntityName"> | |
218 <xsl:with-param name="entities" select="category/function"/> | |
219 </xsl:call-template> | |
220 <xsl:text> | |
221 }; | |
222 | |
223 // Exclude list | |
224 short JvmtiTrace::_exclude_functions[] = { | |
225 </xsl:text> | |
226 <xsl:apply-templates select="category/function" mode="notrace"> | |
227 <xsl:sort select="@num"/> | |
228 </xsl:apply-templates> | |
229 <xsl:text>0 | |
230 }; | |
231 | |
232 </xsl:text> | |
233 </xsl:if> | |
234 | |
235 <xsl:text> | |
236 extern "C" { | |
237 | |
238 </xsl:text> | |
239 <xsl:apply-templates select="category" mode="wrapper"/> | |
240 <xsl:text> | |
241 } /* end extern "C" */ | |
242 | |
243 // JVMTI API functions | |
244 struct jvmtiInterface_1_ jvmti</xsl:text> | |
245 <xsl:value-of select="$trace"/> | |
246 <xsl:text>_Interface = { | |
247 </xsl:text> | |
248 | |
249 <xsl:call-template name="fillFuncStruct"> | |
250 <xsl:with-param name="funcs" select="category/function[count(@hide)=0]"/> | |
251 </xsl:call-template> | |
252 | |
253 <xsl:text> | |
254 }; | |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6725
diff
changeset
|
255 #endif // INCLUDE_JVMTI |
0 | 256 </xsl:text> |
257 </xsl:template> | |
258 | |
259 <xsl:template match="function" mode="functionid"> | |
260 <xsl:text>jvmti</xsl:text> | |
261 <xsl:value-of select="$trace"/> | |
262 <xsl:text>_</xsl:text> | |
263 <xsl:value-of select="@id"/> | |
264 </xsl:template> | |
265 | |
266 <xsl:template name="fillFuncStructDoit"> | |
267 <xsl:param name="func"/> | |
268 <xsl:param name="index"/> | |
269 <xsl:text> /* </xsl:text> | |
270 <xsl:number value="$index" format=" 1"/> | |
271 <xsl:text> : </xsl:text> | |
272 <xsl:choose> | |
273 <xsl:when test="count($func)=1"> | |
274 <xsl:value-of select="$func/synopsis"/> | |
275 <xsl:text> */ | |
276 </xsl:text> | |
277 <xsl:apply-templates select="$func" mode="functionid"/> | |
278 </xsl:when> | |
279 <xsl:otherwise> | |
280 <xsl:text> RESERVED */ | |
281 NULL</xsl:text> | |
282 </xsl:otherwise> | |
283 </xsl:choose> | |
284 </xsl:template> | |
285 | |
286 <!-- generic function iterator applied to the function structure --> | |
287 <xsl:template name="fillFuncStruct"> | |
288 <xsl:param name="funcs"/> | |
289 <xsl:param name="index" select="1"/> | |
290 <xsl:call-template name="fillFuncStructDoit"> | |
291 <xsl:with-param name="func" select="$funcs[@num=$index]"/> | |
292 <xsl:with-param name="index" select="$index"/> | |
293 </xsl:call-template> | |
294 <xsl:if test="count($funcs[@num > $index]) > 0"> | |
295 <xsl:text>, | |
296 </xsl:text> | |
297 <xsl:call-template name="fillFuncStruct"> | |
298 <xsl:with-param name="funcs" select="$funcs"/> | |
299 <xsl:with-param name="index" select="1+$index"/> | |
300 </xsl:call-template> | |
301 </xsl:if> | |
302 </xsl:template> | |
303 | |
304 <xsl:template name="fillEntityNameDoit"> | |
305 <xsl:param name="entity"/> | |
306 <xsl:param name="index"/> | |
307 <xsl:choose> | |
308 <xsl:when test="count($entity) > 0"> | |
309 <xsl:text> "</xsl:text> | |
310 <xsl:value-of select="$entity[position()=1]/@id"/> | |
311 <xsl:text>"</xsl:text> | |
312 </xsl:when> | |
313 <xsl:otherwise> | |
314 <xsl:text> NULL</xsl:text> | |
315 </xsl:otherwise> | |
316 </xsl:choose> | |
317 </xsl:template> | |
318 | |
319 <!-- generic entity (with id and num) iterator applied to entity names --> | |
320 <xsl:template name="fillEntityName"> | |
321 <xsl:param name="entities"/> | |
322 <xsl:param name="index" select="0"/> | |
323 <xsl:call-template name="fillEntityNameDoit"> | |
324 <xsl:with-param name="entity" select="$entities[@num=$index]"/> | |
325 <xsl:with-param name="index" select="$index"/> | |
326 </xsl:call-template> | |
327 <xsl:if test="count($entities[@num > $index]) > 0"> | |
328 <xsl:text>, | |
329 </xsl:text> | |
330 <xsl:call-template name="fillEntityName"> | |
331 <xsl:with-param name="entities" select="$entities"/> | |
332 <xsl:with-param name="index" select="1+$index"/> | |
333 </xsl:call-template> | |
334 </xsl:if> | |
335 </xsl:template> | |
336 | |
337 <xsl:template name="fillEventThreadedDoit"> | |
338 <xsl:param name="entity"/> | |
339 <xsl:param name="index"/> | |
340 <xsl:choose> | |
341 <xsl:when test="count($entity) > 0"> | |
342 <xsl:choose> | |
343 <xsl:when test="count($entity[position()=1]/@filtered)=0"> | |
344 <xsl:text> false</xsl:text> | |
345 </xsl:when> | |
346 <xsl:otherwise> | |
347 <xsl:text> true</xsl:text> | |
348 </xsl:otherwise> | |
349 </xsl:choose> | |
350 </xsl:when> | |
351 <xsl:otherwise> | |
352 <xsl:text> false</xsl:text> | |
353 </xsl:otherwise> | |
354 </xsl:choose> | |
355 </xsl:template> | |
356 | |
357 | |
358 <xsl:template name="fillEventThreaded"> | |
359 <xsl:param name="entities"/> | |
360 <xsl:param name="index" select="0"/> | |
361 <xsl:call-template name="fillEventThreadedDoit"> | |
362 <xsl:with-param name="entity" select="$entities[@num=$index]"/> | |
363 <xsl:with-param name="index" select="$index"/> | |
364 </xsl:call-template> | |
365 <xsl:if test="count($entities[@num > $index]) > 0"> | |
366 <xsl:text>, | |
367 </xsl:text> | |
368 <xsl:call-template name="fillEventThreaded"> | |
369 <xsl:with-param name="entities" select="$entities"/> | |
370 <xsl:with-param name="index" select="1+$index"/> | |
371 </xsl:call-template> | |
372 </xsl:if> | |
373 </xsl:template> | |
374 | |
375 <xsl:template match="function" mode="notrace"> | |
376 <xsl:if test="count(@impl)=1 and contains(@impl,'notrace')"> | |
377 <xsl:value-of select="@num"/> | |
378 <xsl:text>, | |
379 </xsl:text> | |
380 </xsl:if> | |
381 </xsl:template> | |
382 | |
383 <xsl:template match="category" mode="wrapper"> | |
384 <xsl:text> | |
385 // | |
386 // </xsl:text><xsl:value-of select="@label"/><xsl:text> functions | |
387 // | |
388 </xsl:text> | |
389 <xsl:apply-templates select="function[count(@hide)=0]"/> | |
390 </xsl:template> | |
391 | |
392 <xsl:template match="function" mode="transition"> | |
393 <xsl:param name="space"> | |
394 <xsl:text> | |
395 </xsl:text> | |
396 </xsl:param> | |
397 <xsl:value-of select="$space"/> | |
398 | |
399 <xsl:choose> | |
400 <xsl:when test="count(@callbacksafe)=0 or not(contains(@callbacksafe,'safe'))"> | |
401 <xsl:text>if (this_thread == NULL || !this_thread->is_Java_thread()) {</xsl:text> | |
402 </xsl:when> | |
403 <xsl:otherwise> | |
404 <xsl:choose> | |
405 <xsl:when test="count(@phase)=0 or contains(@phase,'live') or contains(@phase,'start')"> | |
406 <xsl:text>if (this_thread == NULL || (!this_thread->is_Java_thread() && !this_thread->is_VM_thread())) {</xsl:text> | |
407 </xsl:when> | |
408 <xsl:otherwise> | |
409 <xsl:text>if (!this_thread->is_Java_thread()) {</xsl:text> | |
410 </xsl:otherwise> | |
411 </xsl:choose> | |
412 </xsl:otherwise> | |
413 </xsl:choose> | |
414 | |
415 <xsl:if test="$trace='Trace'"> | |
416 <xsl:value-of select="$space"/> | |
417 <xsl:text> if (trace_flags) {</xsl:text> | |
418 <xsl:value-of select="$space"/> | |
419 <xsl:text> tty->print_cr("JVMTI [non-attached thread] %s %s", func_name,</xsl:text> | |
420 <xsl:value-of select="$space"/> | |
421 <xsl:text> JvmtiUtil::error_name(JVMTI_ERROR_UNATTACHED_THREAD));</xsl:text> | |
422 <xsl:value-of select="$space"/> | |
423 <xsl:text> }</xsl:text> | |
424 </xsl:if> | |
425 <xsl:value-of select="$space"/> | |
426 <xsl:text> return JVMTI_ERROR_UNATTACHED_THREAD;</xsl:text> | |
427 <xsl:value-of select="$space"/> | |
428 <xsl:text>}</xsl:text> | |
429 <xsl:value-of select="$space"/> | |
430 <xsl:if test="count(@impl)=0 or not(contains(@impl,'innative'))"> | |
431 <xsl:text>JavaThread* current_thread = (JavaThread*)this_thread;</xsl:text> | |
432 <xsl:value-of select="$space"/> | |
433 <xsl:text>ThreadInVMfromNative __tiv(current_thread);</xsl:text> | |
434 <xsl:value-of select="$space"/> | |
4045
a6eef545f1a2
7103224: collision between __LEAF define in interfaceSupport.hpp and /usr/include/sys/cdefs.h with gcc
never
parents:
1972
diff
changeset
|
435 <xsl:text>VM_ENTRY_BASE(jvmtiError, </xsl:text> |
0 | 436 <xsl:apply-templates select="." mode="functionid"/> |
437 <xsl:text> , current_thread)</xsl:text> | |
438 <xsl:value-of select="$space"/> | |
439 <xsl:text>debug_only(VMNativeEntryWrapper __vew;)</xsl:text> | |
440 <xsl:if test="count(@callbacksafe)=0 or not(contains(@callbacksafe,'safe'))"> | |
441 <xsl:value-of select="$space"/> | |
442 <xsl:text>CautiouslyPreserveExceptionMark __em(this_thread);</xsl:text> | |
443 </xsl:if> | |
444 </xsl:if> | |
445 </xsl:template> | |
446 | |
447 | |
448 <xsl:template match="required"> | |
449 <xsl:text> | |
450 if (jvmti_env->get_capabilities()-></xsl:text> | |
451 <xsl:value-of select="@id"/> | |
452 <xsl:text> == 0) { | |
453 </xsl:text> | |
454 <xsl:if test="$trace='Trace'"> | |
455 <xsl:text> if (trace_flags) { | |
456 tty->print_cr("JVMTI [%s] %s %s", curr_thread_name, func_name, | |
457 JvmtiUtil::error_name(JVMTI_ERROR_MUST_POSSESS_CAPABILITY)); | |
458 } | |
459 </xsl:text> | |
460 </xsl:if> | |
461 <xsl:text> return JVMTI_ERROR_MUST_POSSESS_CAPABILITY; | |
462 } | |
463 </xsl:text> | |
464 </xsl:template> | |
465 | |
466 | |
467 <xsl:template match="function"> | |
468 <xsl:text> | |
469 static jvmtiError JNICALL | |
470 </xsl:text> | |
471 <xsl:apply-templates select="." mode="functionid"/> | |
472 <xsl:text>(jvmtiEnv* env</xsl:text> | |
473 <xsl:apply-templates select="parameters" mode="signature"/> | |
474 <xsl:text>) { | |
475 </xsl:text> | |
476 | |
477 <xsl:if test="not(contains(@jkernel,'yes'))"> | |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6725
diff
changeset
|
478 <xsl:text>
#if !INCLUDE_JVMTI 
</xsl:text> |
0 | 479 <xsl:text> return JVMTI_ERROR_NOT_AVAILABLE; 
</xsl:text> |
480 <xsl:text>#else 
</xsl:text> | |
481 </xsl:if> | |
482 | |
483 <xsl:apply-templates select="." mode="traceSetUp"/> | |
484 <xsl:choose> | |
485 <xsl:when test="count(@phase)=0 or contains(@phase,'live')"> | |
486 <xsl:text> if(!JvmtiEnv::is_vm_live()) { | |
487 </xsl:text> | |
488 <xsl:if test="$trace='Trace'"> | |
489 <xsl:text> if (trace_flags) { | |
490 tty->print_cr("JVMTI [-] %s %s", func_name, | |
491 JvmtiUtil::error_name(JVMTI_ERROR_WRONG_PHASE)); | |
492 } | |
493 </xsl:text> | |
494 </xsl:if> | |
495 <xsl:text> return JVMTI_ERROR_WRONG_PHASE; | |
496 }</xsl:text> | |
497 | |
498 <xsl:text> | |
499 Thread* this_thread = (Thread*)ThreadLocalStorage::thread(); </xsl:text> | |
500 | |
501 <xsl:apply-templates select="." mode="transition"/> | |
502 </xsl:when> | |
503 <xsl:otherwise> | |
504 <xsl:if test="contains(@phase,'onload')"> | |
505 <xsl:text> if(JvmtiEnv::get_phase()!=JVMTI_PHASE_ONLOAD</xsl:text> | |
506 <xsl:if test="not(contains(@phase,'onloadOnly'))"> | |
507 <xsl:text> && JvmtiEnv::get_phase()!=JVMTI_PHASE_LIVE</xsl:text> | |
508 </xsl:if> | |
509 <xsl:text>) { | |
510 </xsl:text> | |
511 <xsl:if test="$trace='Trace'"> | |
512 <xsl:text> if (trace_flags) { | |
513 tty->print_cr("JVMTI [-] %s %s", func_name, | |
514 JvmtiUtil::error_name(JVMTI_ERROR_WRONG_PHASE)); | |
515 } | |
516 </xsl:text> | |
517 </xsl:if> | |
518 <xsl:text> return JVMTI_ERROR_WRONG_PHASE; | |
519 }</xsl:text> | |
520 </xsl:if> | |
521 <xsl:if test="contains(@phase,'start')"> | |
522 <xsl:text> if(JvmtiEnv::get_phase()!=JVMTI_PHASE_START && JvmtiEnv::get_phase()!=JVMTI_PHASE_LIVE) { | |
523 </xsl:text> | |
524 <xsl:if test="$trace='Trace'"> | |
525 <xsl:text> if (trace_flags) { | |
526 tty->print_cr("JVMTI [-] %s %s", func_name, | |
527 JvmtiUtil::error_name(JVMTI_ERROR_WRONG_PHASE)); | |
528 } | |
529 </xsl:text> | |
530 </xsl:if> | |
531 <xsl:text> return JVMTI_ERROR_WRONG_PHASE; | |
532 } | |
533 Thread* this_thread = (Thread*)ThreadLocalStorage::thread(); </xsl:text> | |
534 <xsl:apply-templates select="." mode="transition"/> | |
535 </xsl:if> | |
536 </xsl:otherwise> | |
537 </xsl:choose> | |
538 | |
539 <xsl:text> | |
540 JvmtiEnv* jvmti_env = JvmtiEnv::JvmtiEnv_from_jvmti_env(env); | |
541 if (!jvmti_env->is_valid()) { | |
542 </xsl:text> | |
543 <xsl:if test="$trace='Trace'"> | |
544 <xsl:text> if (trace_flags) { | |
545 tty->print_cr("JVMTI [%s] %s %s env=%d", curr_thread_name, func_name, | |
546 JvmtiUtil::error_name(JVMTI_ERROR_INVALID_ENVIRONMENT), env); | |
547 } | |
548 </xsl:text> | |
549 </xsl:if> | |
550 <xsl:text> return JVMTI_ERROR_INVALID_ENVIRONMENT; | |
551 } | |
552 </xsl:text> | |
553 | |
554 <xsl:apply-templates select="capabilities/required"/> | |
555 | |
556 <xsl:text> jvmtiError err; | |
557 </xsl:text> | |
558 <xsl:choose> | |
559 <xsl:when test="count(@phase)=1 and not(contains(@phase,'live')) and not(contains(@phase,'start'))"> | |
560 <xsl:choose> | |
561 <xsl:when test="count(@callbacksafe)=0 or not(contains(@callbacksafe,'safe'))"> | |
562 <xsl:text> if (Threads::number_of_threads() != 0) { | |
563 Thread* this_thread = (Thread*)ThreadLocalStorage::thread();</xsl:text> | |
564 </xsl:when> | |
565 <xsl:otherwise> | |
566 | |
567 <xsl:text> Thread* this_thread = NULL; | |
568 bool transition; | |
569 if (Threads::number_of_threads() == 0) { | |
570 transition = false; | |
571 } else { | |
572 this_thread = (Thread*)ThreadLocalStorage::thread(); | |
573 transition = ((this_thread != NULL) && !this_thread->is_VM_thread() && !this_thread->is_ConcurrentGC_thread()); | |
574 } | |
575 if (transition) {</xsl:text> | |
576 </xsl:otherwise> | |
577 | |
578 </xsl:choose> | |
579 <!-- we allow use in early phases but there are threads now, --> | |
580 <!-- so do thread transition --> | |
581 <xsl:apply-templates select="." mode="transition"> | |
582 <xsl:with-param name="space"> | |
583 <xsl:text> | |
584 </xsl:text> | |
585 </xsl:with-param> | |
586 </xsl:apply-templates> | |
587 <xsl:text> | |
588 </xsl:text> | |
589 <xsl:apply-templates select="." mode="doCall"/> | |
590 <xsl:text> } else { | |
591 </xsl:text> | |
592 <!-- we are pre-thread - no thread transition code --> | |
593 <xsl:apply-templates select="." mode="doCall"/> | |
594 <xsl:text> } | |
595 </xsl:text> | |
596 </xsl:when> | |
597 <xsl:otherwise> | |
598 <xsl:apply-templates select="." mode="doCall"/> | |
599 </xsl:otherwise> | |
600 </xsl:choose> | |
601 <xsl:text> return err; | |
602 </xsl:text> | |
603 | |
604 <xsl:if test="not(contains(@jkernel,'yes'))"> | |
6854
fb19af007ffc
7189254: Change makefiles for more flexibility to override defaults
jprovino
parents:
6725
diff
changeset
|
605 <xsl:text>#endif // INCLUDE_JVMTI
</xsl:text> |
0 | 606 </xsl:if> |
607 | |
608 <xsl:text>}
</xsl:text> | |
609 </xsl:template> | |
610 | |
611 <xsl:template match="function" mode="doCall"> | |
612 <xsl:apply-templates select="parameters" mode="dochecks"/> | |
613 <xsl:apply-templates select="." mode="traceBefore"/> | |
614 <xsl:apply-templates select="." mode="genCall"/> | |
615 <xsl:apply-templates select="." mode="traceAfter"/> | |
616 </xsl:template> | |
617 | |
618 <xsl:template match="function" mode="genCall"> | |
619 <xsl:text> err = jvmti_env-></xsl:text> | |
620 <xsl:value-of select="@id"/> | |
621 <xsl:text>(</xsl:text> | |
622 <xsl:apply-templates select="parameters" mode="HotSpotValue"/> | |
623 <xsl:text>); | |
624 </xsl:text> | |
625 </xsl:template> | |
626 | |
627 | |
628 <xsl:template match="function" mode="traceSetUp"> | |
629 <xsl:if test="$trace='Trace'"> | |
630 <xsl:text> SafeResourceMark rm; | |
631 jint trace_flags = JvmtiTrace::trace_flags(</xsl:text> | |
632 <xsl:value-of select="@num"/> | |
633 <xsl:text>); | |
634 const char *func_name; | |
635 const char *curr_thread_name; | |
636 if (trace_flags) { | |
637 func_name = JvmtiTrace::function_name(</xsl:text> | |
638 <xsl:value-of select="@num"/> | |
639 <xsl:text>); | |
640 curr_thread_name = JvmtiTrace::safe_get_current_thread_name(); | |
641 } | |
642 </xsl:text> | |
643 </xsl:if> | |
644 </xsl:template> | |
645 | |
646 | |
647 <xsl:template match="function" mode="traceBefore"> | |
648 <xsl:if test="$trace='Trace'"> | |
649 <xsl:text> | |
650 if ((trace_flags & JvmtiTrace::SHOW_IN) != 0) { | |
651 </xsl:text> | |
652 <xsl:apply-templates select="." mode="traceIn"/> | |
653 <xsl:text> } | |
654 </xsl:text> | |
655 </xsl:if> | |
656 </xsl:template> | |
657 | |
658 | |
659 <xsl:template match="param" mode="traceError"> | |
660 <xsl:param name="err"/> | |
661 <xsl:param name="comment"></xsl:param> | |
662 <xsl:param name="extraValue"></xsl:param> | |
663 <xsl:if test="$trace='Trace'"> | |
664 <xsl:text> if ((trace_flags & JvmtiTrace::SHOW_ERROR) != 0) { | |
665 if ((trace_flags & JvmtiTrace::SHOW_IN) == 0) { | |
666 </xsl:text> | |
667 <xsl:apply-templates select="../.." mode="traceIn"> | |
668 <xsl:with-param name="endParam" select="."/> | |
669 </xsl:apply-templates> | |
670 <xsl:text> } | |
671 tty->print_cr("JVMTI [%s] %s } %s - erroneous arg is </xsl:text> | |
672 <xsl:value-of select="@id"/> | |
673 <xsl:value-of select="$comment"/> | |
674 <xsl:text>", curr_thread_name, func_name, | |
675 JvmtiUtil::error_name(</xsl:text> | |
676 <xsl:value-of select="$err"/> | |
677 <xsl:text>)</xsl:text> | |
678 <xsl:value-of select="$extraValue"/> | |
679 <xsl:text>); | |
680 } | |
681 </xsl:text> | |
682 </xsl:if> | |
683 <xsl:text> return </xsl:text> | |
684 <xsl:value-of select="$err"/> | |
685 <xsl:text>;</xsl:text> | |
686 </xsl:template> | |
687 | |
688 | |
689 <xsl:template match="function" mode="traceAfter"> | |
690 <xsl:if test="$trace='Trace'"> | |
691 <xsl:text> if ( err != JVMTI_ERROR_NONE && (trace_flags & JvmtiTrace::SHOW_ERROR) != 0) { | |
692 if ((trace_flags & JvmtiTrace::SHOW_IN) == 0) { | |
693 </xsl:text> | |
694 <xsl:apply-templates select="." mode="traceIn"/> | |
695 <xsl:text> } | |
696 tty->print_cr("JVMTI [%s] %s } %s", curr_thread_name, func_name, | |
697 JvmtiUtil::error_name(err)); | |
698 } else if ((trace_flags & JvmtiTrace::SHOW_OUT) != 0) { | |
699 tty->print_cr("JVMTI [%s] %s }", curr_thread_name, func_name); | |
700 } | |
701 </xsl:text> | |
702 </xsl:if> | |
703 </xsl:template> | |
704 | |
705 <xsl:template match="function" mode="traceIn"> | |
706 <xsl:param name="endParam"></xsl:param> | |
707 <xsl:text> tty->print_cr("JVMTI [%s] %s { </xsl:text> | |
708 <xsl:apply-templates select="parameters" mode="traceInFormat"> | |
709 <xsl:with-param name="endParam" select="$endParam"/> | |
710 </xsl:apply-templates> | |
711 <xsl:text>", curr_thread_name, func_name</xsl:text> | |
712 <xsl:apply-templates select="parameters" mode="traceInValue"> | |
713 <xsl:with-param name="endParam" select="$endParam"/> | |
714 </xsl:apply-templates> | |
715 <xsl:text>); | |
716 </xsl:text> | |
717 </xsl:template> | |
718 | |
719 <xsl:template match="parameters" mode="dochecks"> | |
720 <xsl:apply-templates select="param" mode="dochecks"/> | |
721 </xsl:template> | |
722 | |
723 <xsl:template match="param" mode="dochecks"> | |
724 <xsl:apply-templates select="child::*[position()=1]" mode="dochecks"> | |
725 <xsl:with-param name="name" select="@id"/> | |
726 </xsl:apply-templates> | |
727 </xsl:template> | |
728 | |
729 <xsl:template match="outptr|outbuf|allocfieldbuf|ptrtype|inptr|inbuf|vmbuf|allocbuf|agentbuf|allocallocbuf" mode="dochecks"> | |
730 <xsl:param name="name"/> | |
731 <xsl:if test="count(nullok)=0"> | |
732 <xsl:text> if (</xsl:text> | |
733 <xsl:value-of select="$name"/> | |
734 <xsl:text> == NULL) { | |
735 </xsl:text> | |
736 <xsl:apply-templates select=".." mode="traceError"> | |
737 <xsl:with-param name="err">JVMTI_ERROR_NULL_POINTER</xsl:with-param> | |
738 </xsl:apply-templates> | |
739 <xsl:text> | |
740 } | |
741 </xsl:text> | |
742 </xsl:if> | |
743 </xsl:template> | |
744 | |
745 <xsl:template match="jrawMonitorID" mode="dochecks"> | |
746 <xsl:param name="name"/> | |
747 <xsl:text> JvmtiRawMonitor *rmonitor = (JvmtiRawMonitor *)</xsl:text> | |
748 <xsl:value-of select="$name"/> | |
749 <xsl:text>; | |
750 if (rmonitor == NULL) { | |
751 </xsl:text> | |
752 <xsl:apply-templates select=".." mode="traceError"> | |
753 <xsl:with-param name="err">JVMTI_ERROR_INVALID_MONITOR</xsl:with-param> | |
754 <xsl:with-param name="comment"> - raw monitor is NULL</xsl:with-param> | |
755 </xsl:apply-templates> | |
756 <xsl:text> | |
757 } | |
758 if (!rmonitor->is_valid()) { | |
759 </xsl:text> | |
760 <xsl:apply-templates select=".." mode="traceError"> | |
761 <xsl:with-param name="err">JVMTI_ERROR_INVALID_MONITOR</xsl:with-param> | |
762 <xsl:with-param name="comment"> - not a raw monitor 0x%x</xsl:with-param> | |
763 <xsl:with-param name="extraValue">, rmonitor</xsl:with-param> | |
764 </xsl:apply-templates> | |
765 <xsl:text> | |
766 } | |
767 </xsl:text> | |
768 </xsl:template> | |
769 | |
770 <xsl:template match="jthread" mode="dochecksbody"> | |
771 <xsl:param name="name"/> | |
772 <xsl:text> oop thread_oop = JNIHandles::resolve_external_guard(</xsl:text> | |
773 <xsl:value-of select="$name"/> | |
774 <xsl:text>); | |
775 if (thread_oop == NULL) { | |
776 </xsl:text> | |
777 <xsl:apply-templates select=".." mode="traceError"> | |
778 <xsl:with-param name="err">JVMTI_ERROR_INVALID_THREAD</xsl:with-param> | |
8668 | 779 <xsl:with-param name="comment"> - jthread resolved to NULL - jthread = 0x%x</xsl:with-param> |
0 | 780 <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param> |
781 </xsl:apply-templates> | |
782 <xsl:text> | |
783 } | |
1142 | 784 if (!thread_oop->is_a(SystemDictionary::Thread_klass())) { |
0 | 785 </xsl:text> |
786 <xsl:apply-templates select=".." mode="traceError"> | |
787 <xsl:with-param name="err">JVMTI_ERROR_INVALID_THREAD</xsl:with-param> | |
8668 | 788 <xsl:with-param name="comment"> - oop is not a thread - jthread = 0x%x</xsl:with-param> |
0 | 789 <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param> |
790 </xsl:apply-templates> | |
791 <xsl:text> | |
792 } | |
793 java_thread = java_lang_Thread::thread(thread_oop); | |
794 if (java_thread == NULL) { | |
795 </xsl:text> | |
796 <xsl:apply-templates select=".." mode="traceError"> | |
797 <xsl:with-param name="err"> | |
798 <xsl:text>JVMTI_ERROR_THREAD_NOT_ALIVE</xsl:text> | |
799 </xsl:with-param> | |
8668 | 800 <xsl:with-param name="comment"> - not a Java thread - jthread = 0x%x</xsl:with-param> |
0 | 801 <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param> |
802 </xsl:apply-templates> | |
803 <xsl:text> | |
804 } | |
805 </xsl:text> | |
806 </xsl:template> | |
807 | |
808 <xsl:template match="jthread" mode="dochecks"> | |
809 <xsl:param name="name"/> | |
810 <!-- If we convert and test threads --> | |
811 <xsl:if test="count(@impl)=0 or not(contains(@impl,'noconvert'))"> | |
812 <xsl:text> JavaThread* java_thread; | |
813 </xsl:text> | |
814 <xsl:choose> | |
815 <xsl:when test="count(@null)=0"> | |
816 <xsl:apply-templates select="." mode="dochecksbody"> | |
817 <xsl:with-param name="name" select="$name"/> | |
818 </xsl:apply-templates> | |
819 </xsl:when> | |
820 <xsl:otherwise> | |
821 <xsl:text> if (</xsl:text> | |
822 <xsl:value-of select="$name"/> | |
823 <xsl:text> == NULL) { | |
824 java_thread = current_thread; | |
825 } else { | |
826 </xsl:text> | |
827 <xsl:apply-templates select="." mode="dochecksbody"> | |
828 <xsl:with-param name="name" select="$name"/> | |
829 </xsl:apply-templates> | |
830 <xsl:text> } | |
831 </xsl:text> | |
832 </xsl:otherwise> | |
833 </xsl:choose> | |
834 </xsl:if> | |
835 </xsl:template> | |
836 | |
837 <xsl:template match="jframeID" mode="dochecks"> | |
838 <xsl:param name="name"/> | |
839 <xsl:text> | |
840 if (depth < 0) { | |
841 </xsl:text> | |
842 <xsl:apply-templates select=".." mode="traceError"> | |
843 <xsl:with-param name="err">JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:with-param> | |
8668 | 844 <xsl:with-param name="comment"> - negative depth - jthread = 0x%x</xsl:with-param> |
0 | 845 <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param> |
846 </xsl:apply-templates> | |
847 <xsl:text> | |
848 } | |
849 </xsl:text> | |
850 </xsl:template> | |
851 | |
852 <xsl:template match="jclass" mode="dochecks"> | |
853 <xsl:param name="name"/> | |
854 <!-- for JVMTI a jclass/jmethodID becomes just jmethodID --> | |
855 <xsl:if test="count(@method)=0"> | |
856 <xsl:text> oop k_mirror = JNIHandles::resolve_external_guard(</xsl:text> | |
857 <xsl:value-of select="$name"/> | |
858 <xsl:text>); | |
859 if (k_mirror == NULL) { | |
860 </xsl:text> | |
861 <xsl:apply-templates select=".." mode="traceError"> | |
862 <xsl:with-param name="err">JVMTI_ERROR_INVALID_CLASS</xsl:with-param> | |
863 <xsl:with-param name="comment"> - resolved to NULL - jclass = 0x%x</xsl:with-param> | |
864 <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param> | |
865 </xsl:apply-templates> | |
866 <xsl:text> | |
867 } | |
1142 | 868 if (!k_mirror->is_a(SystemDictionary::Class_klass())) { |
0 | 869 </xsl:text> |
870 <xsl:apply-templates select=".." mode="traceError"> | |
871 <xsl:with-param name="err">JVMTI_ERROR_INVALID_CLASS</xsl:with-param> | |
872 <xsl:with-param name="comment"> - not a class - jclass = 0x%x</xsl:with-param> | |
873 <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param> | |
874 </xsl:apply-templates> | |
875 <xsl:text> | |
876 } | |
877 </xsl:text> | |
878 <xsl:if test="count(@method|@field)=1"> | |
879 <xsl:text> | |
880 if (java_lang_Class::is_primitive(k_mirror)) { | |
881 </xsl:text> | |
882 <xsl:apply-templates select=".." mode="traceError"> | |
883 <xsl:with-param name="err">JVMTI_ERROR_INVALID_CLASS</xsl:with-param> | |
884 <xsl:with-param name="comment"> - is a primitive class - jclass = 0x%x</xsl:with-param> | |
885 <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param> | |
886 </xsl:apply-templates> | |
887 <xsl:text> | |
888 } | |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
4045
diff
changeset
|
889 Klass* k_oop = java_lang_Class::as_Klass(k_mirror); |
0 | 890 if (k_oop == NULL) { |
891 </xsl:text> | |
892 <xsl:apply-templates select=".." mode="traceError"> | |
893 <xsl:with-param name="err">JVMTI_ERROR_INVALID_CLASS</xsl:with-param> | |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
4045
diff
changeset
|
894 <xsl:with-param name="comment"> - no Klass* - jclass = 0x%x</xsl:with-param> |
0 | 895 <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param> |
896 </xsl:apply-templates> | |
897 <xsl:text> | |
898 } | |
899 </xsl:text> | |
900 </xsl:if> | |
901 </xsl:if> | |
902 </xsl:template> | |
903 | |
904 | |
905 <xsl:template match="jmethodID" mode="dochecks"> | |
906 <xsl:param name="name"/> | |
6725
da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
coleenp
parents:
4045
diff
changeset
|
907 <xsl:text> Method* method_oop = Method::checked_resolve_jmethod_id(</xsl:text> |
0 | 908 <xsl:value-of select="$name"/> |
909 <xsl:text>);
</xsl:text> | |
910 <xsl:text> if (method_oop == NULL) {
</xsl:text> | |
911 <xsl:apply-templates select=".." mode="traceError"> | |
912 <xsl:with-param name="err">JVMTI_ERROR_INVALID_METHODID</xsl:with-param> | |
913 <xsl:with-param name="comment"></xsl:with-param> | |
914 <xsl:with-param name="extraValue"></xsl:with-param> | |
915 </xsl:apply-templates> | |
916 <xsl:text>
</xsl:text> | |
917 <xsl:text> }
</xsl:text> | |
918 <xsl:if test="count(@native)=1 and contains(@native,'error')"> | |
919 <xsl:text> if (method_oop->is_native()) {
</xsl:text> | |
920 <xsl:text> return JVMTI_ERROR_NATIVE_METHOD;
</xsl:text> | |
921 <xsl:text> }
</xsl:text> | |
922 </xsl:if> | |
923 </xsl:template> | |
924 | |
925 | |
926 <xsl:template match="jfieldID" mode="dochecks"> | |
927 <xsl:param name="name"/> | |
928 <xsl:text> ResourceMark rm_fdesc(current_thread);
</xsl:text> | |
929 <xsl:text> fieldDescriptor fdesc;
</xsl:text> | |
930 <xsl:text> if (!JvmtiEnv::get_field_descriptor(k_oop, </xsl:text> | |
931 <xsl:value-of select="$name"/> | |
932 <xsl:text>, &fdesc)) {
</xsl:text> | |
933 <xsl:apply-templates select=".." mode="traceError"> | |
934 <xsl:with-param name="err">JVMTI_ERROR_INVALID_FIELDID</xsl:with-param> | |
935 </xsl:apply-templates> | |
936 <xsl:text>
</xsl:text> | |
937 <xsl:text> }
</xsl:text> | |
938 </xsl:template> | |
939 | |
940 | |
941 <xsl:template match="jint" mode="dochecks"> | |
942 <xsl:param name="name"/> | |
943 <xsl:if test="count(@min)=1"> | |
944 <xsl:text> if (</xsl:text> | |
945 <xsl:value-of select="$name"/> | |
946 <xsl:text> < </xsl:text> | |
947 <xsl:value-of select="@min"/> | |
948 <xsl:text>) { | |
949 </xsl:text> | |
950 <xsl:apply-templates select=".." mode="traceError"> | |
951 <xsl:with-param name="err">JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:with-param> | |
952 </xsl:apply-templates> | |
953 <xsl:text> | |
954 } | |
955 </xsl:text> | |
956 </xsl:if> | |
957 </xsl:template> | |
958 | |
959 <xsl:template match="jobject|jvalue|jthreadGroup|enum|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|struct" mode="dochecks"> | |
960 </xsl:template> | |
961 | |
962 <!-- iterate over parameters, stopping if specified is encountered --> | |
963 <xsl:template name="traceInValueParamsUpTo"> | |
964 <xsl:param name="params"/> | |
965 <xsl:param name="endParam"></xsl:param> | |
966 <xsl:param name="index" select="1"/> | |
967 <xsl:variable name="cParam" select="$params[position()=$index]"/> | |
968 <xsl:if test="$cParam!=$endParam"> | |
969 <xsl:apply-templates select="$cParam" mode="traceInValue"/> | |
970 <xsl:if test="count($params) > $index"> | |
971 <xsl:call-template name="traceInValueParamsUpTo"> | |
972 <xsl:with-param name="params" select="$params"/> | |
973 <xsl:with-param name="endParam" select="$endParam"/> | |
974 <xsl:with-param name="index" select="1+$index"/> | |
975 </xsl:call-template> | |
976 </xsl:if> | |
977 </xsl:if> | |
978 </xsl:template> | |
979 | |
980 <xsl:template name="traceInFormatParamsUpTo"> | |
981 <xsl:param name="params"/> | |
982 <xsl:param name="endParam"></xsl:param> | |
983 <xsl:param name="index" select="1"/> | |
984 <xsl:variable name="cParam" select="$params[position()=$index]"/> | |
985 <xsl:if test="$cParam!=$endParam"> | |
986 <xsl:apply-templates select="$cParam" mode="traceInFormat"/> | |
987 <xsl:if test="count($params) > $index"> | |
988 <xsl:call-template name="traceInFormatParamsUpTo"> | |
989 <xsl:with-param name="params" select="$params"/> | |
990 <xsl:with-param name="endParam" select="$endParam"/> | |
991 <xsl:with-param name="index" select="1+$index"/> | |
992 </xsl:call-template> | |
993 </xsl:if> | |
994 </xsl:if> | |
995 </xsl:template> | |
996 | |
997 <xsl:template match="parameters" mode="traceInFormat"> | |
998 <xsl:param name="endParam"></xsl:param> | |
999 <xsl:call-template name="traceInFormatParamsUpTo"> | |
1000 <xsl:with-param name="params" select="param"/> | |
1001 <xsl:with-param name="endParam" select="$endParam"/> | |
1002 </xsl:call-template> | |
1003 </xsl:template> | |
1004 | |
1005 <xsl:template match="parameters" mode="traceInValue"> | |
1006 <xsl:param name="endParam"></xsl:param> | |
1007 <xsl:call-template name="traceInValueParamsUpTo"> | |
1008 <xsl:with-param name="params" select="param"/> | |
1009 <xsl:with-param name="endParam" select="$endParam"/> | |
1010 </xsl:call-template> | |
1011 </xsl:template> | |
1012 | |
1013 <xsl:template match="param" mode="traceInFormat"> | |
1014 <xsl:apply-templates select="child::*[position()=1]" mode="traceInFormat"> | |
1015 <xsl:with-param name="name" select="@id"/> | |
1016 </xsl:apply-templates> | |
1017 </xsl:template> | |
1018 | |
1019 <xsl:template match="param" mode="traceInValue"> | |
1020 <xsl:apply-templates select="child::*[position()=1]" mode="traceInValue"> | |
1021 <xsl:with-param name="name" select="@id"/> | |
1022 </xsl:apply-templates> | |
1023 </xsl:template> | |
1024 | |
1025 <xsl:template match="outptr|outbuf|allocfieldbuf|vmbuf|allocbuf|agentbuf|allocallocbuf" mode="traceInFormat"> | |
1026 </xsl:template> | |
1027 | |
1028 <xsl:template match="outptr|outbuf|allocfieldbuf|vmbuf|allocbuf|agentbuf|allocallocbuf" mode="traceInValue"> | |
1029 </xsl:template> | |
1030 | |
1031 <xsl:template match="inbuf" mode="traceInFormat"> | |
1032 <xsl:param name="name"/> | |
1033 <xsl:text> </xsl:text> | |
1034 <xsl:value-of select="$name"/> | |
1035 <xsl:variable name="child" select="child::*[position()=1]"/> | |
1036 <xsl:choose> | |
1037 <xsl:when test="name($child)='char'"> | |
1038 <xsl:text>='%s'</xsl:text> | |
1039 </xsl:when> | |
1040 <xsl:otherwise> | |
1041 <xsl:text>=0x%x</xsl:text> | |
1042 </xsl:otherwise> | |
1043 </xsl:choose> | |
1044 </xsl:template> | |
1045 | |
1046 <xsl:template match="inbuf" mode="traceInValue"> | |
1047 <xsl:param name="name"/> | |
1048 <xsl:text>, </xsl:text> | |
1049 <xsl:value-of select="$name"/> | |
1050 </xsl:template> | |
1051 | |
1052 <xsl:template match="ptrtype" mode="traceInFormat"> | |
1053 <xsl:param name="name"/> | |
1054 <xsl:variable name="child" select="child::*[position()=1]"/> | |
1055 <xsl:choose> | |
1056 <xsl:when test="name($child)='jclass'"> | |
1057 <xsl:text> </xsl:text> | |
1058 <xsl:value-of select="$name"/> | |
1059 <xsl:text>=0x%x</xsl:text> | |
1060 </xsl:when> | |
1061 <xsl:otherwise> | |
1062 <xsl:apply-templates select="$child" mode="traceInFormat"/> | |
1063 </xsl:otherwise> | |
1064 </xsl:choose> | |
1065 </xsl:template> | |
1066 | |
1067 <xsl:template match="ptrtype" mode="traceInValue"> | |
1068 <xsl:param name="name"/> | |
1069 <xsl:variable name="child" select="child::*[position()=1]"/> | |
1070 <xsl:choose> | |
1071 <xsl:when test="name($child)='jclass'"> | |
1072 <xsl:text>, </xsl:text> | |
1073 <xsl:value-of select="$name"/> | |
1074 </xsl:when> | |
1075 <xsl:otherwise> | |
1076 <xsl:apply-templates select="$child" mode="traceInValue"/> | |
1077 </xsl:otherwise> | |
1078 </xsl:choose> | |
1079 </xsl:template> | |
1080 | |
1081 <xsl:template match="inptr" mode="traceInFormat"> | |
1082 <xsl:param name="name"/> | |
1083 <xsl:text> </xsl:text> | |
1084 <xsl:value-of select="$name"/> | |
1085 <xsl:text>=0x%x</xsl:text> | |
1086 </xsl:template> | |
1087 | |
1088 <xsl:template match="inptr" mode="traceInValue"> | |
1089 <xsl:param name="name"/> | |
1090 <xsl:text>, </xsl:text> | |
1091 <xsl:value-of select="$name"/> | |
1092 </xsl:template> | |
1093 | |
1094 <xsl:template match="jrawMonitorID|jfieldID" mode="traceInFormat"> | |
1095 <xsl:param name="name"/> | |
1096 <xsl:text> </xsl:text> | |
1097 <xsl:value-of select="$name"/> | |
1098 <xsl:text>=%s</xsl:text> | |
1099 </xsl:template> | |
1100 | |
1101 <xsl:template match="jclass" mode="traceInFormat"> | |
1102 <xsl:param name="name"/> | |
1103 <!-- for JVMTI a jclass/jmethodID becomes just jmethodID --> | |
1104 <xsl:if test="count(@method)=0"> | |
1105 <xsl:text> </xsl:text> | |
1106 <xsl:value-of select="$name"/> | |
1107 <xsl:text>=%s</xsl:text> | |
1108 </xsl:if> | |
1109 </xsl:template> | |
1110 | |
1111 <xsl:template match="jrawMonitorID" mode="traceInValue"> | |
1112 <xsl:param name="name"/> | |
1113 <xsl:text>, rmonitor->get_name()</xsl:text> | |
1114 </xsl:template> | |
1115 | |
1116 <xsl:template match="jthread" mode="traceInFormat"> | |
1117 <xsl:param name="name"/> | |
1118 <!-- If we convert and test threads --> | |
1119 <xsl:if test="count(@impl)=0 or not(contains(@impl,'noconvert'))"> | |
1120 <xsl:text> </xsl:text> | |
1121 <xsl:value-of select="$name"/> | |
1122 <xsl:text>=%s</xsl:text> | |
1123 </xsl:if> | |
1124 </xsl:template> | |
1125 | |
1126 <xsl:template match="jthread" mode="traceInValue"> | |
1127 <xsl:param name="name"/> | |
1128 <!-- If we convert and test threads --> | |
1129 <xsl:if test="count(@impl)=0 or not(contains(@impl,'noconvert'))"> | |
1130 <xsl:text>, | |
1131 JvmtiTrace::safe_get_thread_name(java_thread)</xsl:text> | |
1132 </xsl:if> | |
1133 </xsl:template> | |
1134 | |
1135 <xsl:template match="jframeID" mode="traceInFormat"> | |
1136 <xsl:param name="name"/> | |
1137 <xsl:text>depth=%d</xsl:text> | |
1138 </xsl:template> | |
1139 | |
1140 <xsl:template match="jframeID" mode="traceInValue"> | |
1141 <xsl:param name="name"/> | |
1142 <xsl:text>, </xsl:text> | |
1143 <xsl:value-of select="$name"/> | |
1144 </xsl:template> | |
1145 | |
1146 <xsl:template match="jclass" mode="traceInValue"> | |
1147 <!-- for JVMTI a jclass/jmethodID becomes just jmethodID --> | |
1148 <xsl:if test="count(@method)=0"> | |
1149 <xsl:text>, | |
1150 JvmtiTrace::get_class_name(k_mirror)</xsl:text> | |
1151 </xsl:if> | |
1152 </xsl:template> | |
1153 | |
1154 <xsl:template match="jmethodID" mode="traceInFormat"> | |
1155 <xsl:param name="name"/> | |
1156 <xsl:text> </xsl:text> | |
1157 <xsl:value-of select="$name"/> | |
1158 <xsl:text>=%s.%s</xsl:text> | |
1159 </xsl:template> | |
1160 | |
1161 <xsl:template match="jmethodID" mode="traceInValue"> | |
1162 <xsl:param name="name"/> | |
1163 <xsl:text>, | |
1164 method_oop == NULL? "NULL" : method_oop->klass_name()->as_C_string(), | |
1165 method_oop == NULL? "NULL" : method_oop->name()->as_C_string() | |
1166 </xsl:text> | |
1167 </xsl:template> | |
1168 | |
1169 <xsl:template match="jfieldID" mode="traceInValue"> | |
1170 <xsl:param name="name"/> | |
1171 <xsl:text>, fdesc.name()->as_C_string()</xsl:text> | |
1172 </xsl:template> | |
1173 | |
1174 <xsl:template match="enum" mode="traceInFormat"> | |
1175 <xsl:param name="name"/> | |
1176 <xsl:text> </xsl:text> | |
1177 <xsl:value-of select="$name"/> | |
1178 <xsl:text>=%d:%s</xsl:text> | |
1179 </xsl:template> | |
1180 | |
1181 <xsl:template match="enum" mode="traceInValue"> | |
1182 <xsl:param name="name"/> | |
1183 <xsl:text>, </xsl:text> | |
1184 <xsl:value-of select="$name"/> | |
1185 <xsl:text>, | |
1186 </xsl:text> | |
1187 <xsl:choose> | |
1188 <xsl:when test=".='jvmtiError'"> | |
1189 <xsl:text>JvmtiUtil::error_name(</xsl:text> | |
1190 <xsl:value-of select="$name"/> | |
1191 <xsl:text>) | |
1192 </xsl:text> | |
1193 </xsl:when> | |
1194 <xsl:otherwise> | |
1195 <xsl:choose> | |
1196 <xsl:when test=".='jvmtiEvent'"> | |
1197 <xsl:text>JvmtiTrace::event_name(</xsl:text> | |
1198 <xsl:value-of select="$name"/> | |
1199 <xsl:text>) | |
1200 </xsl:text> | |
1201 </xsl:when> | |
1202 <xsl:otherwise> | |
1203 <xsl:text>JvmtiTrace::enum_name(</xsl:text> | |
1204 <xsl:value-of select="."/> | |
1205 <xsl:text>ConstantNames, </xsl:text> | |
1206 <xsl:value-of select="."/> | |
1207 <xsl:text>ConstantValues, </xsl:text> | |
1208 <xsl:value-of select="$name"/> | |
1209 <xsl:text>)</xsl:text> | |
1210 </xsl:otherwise> | |
1211 </xsl:choose> | |
1212 </xsl:otherwise> | |
1213 </xsl:choose> | |
1214 </xsl:template> | |
1215 | |
1216 <xsl:template match="jint|jlocation" mode="traceInFormat"> | |
1217 <xsl:param name="name"/> | |
1218 <xsl:text> </xsl:text> | |
1219 <xsl:value-of select="$name"/> | |
1220 <xsl:text>=%d</xsl:text> | |
1221 </xsl:template> | |
1222 | |
1223 <xsl:template match="jlong" mode="traceInFormat"> | |
1224 <xsl:param name="name"/> | |
1225 <xsl:text> </xsl:text> | |
1226 <xsl:value-of select="$name"/> | |
1227 <xsl:text>=%ld</xsl:text> | |
1228 </xsl:template> | |
1229 | |
1230 <xsl:template match="size_t" mode="traceInFormat"> | |
1231 <xsl:param name="name"/> | |
1232 <xsl:text> </xsl:text> | |
1233 <xsl:value-of select="$name"/> | |
1234 <xsl:text>=0x%zx</xsl:text> | |
1235 </xsl:template> | |
1236 | |
1237 <xsl:template match="jfloat|jdouble" mode="traceInFormat"> | |
1238 <xsl:param name="name"/> | |
1239 <xsl:text> </xsl:text> | |
1240 <xsl:value-of select="$name"/> | |
1241 <xsl:text>=%f</xsl:text> | |
1242 </xsl:template> | |
1243 | |
1244 <xsl:template match="char" mode="traceInFormat"> | |
1245 <xsl:param name="name"/> | |
1246 <xsl:text> </xsl:text> | |
1247 <xsl:value-of select="$name"/> | |
1248 <xsl:text>=%c</xsl:text> | |
1249 </xsl:template> | |
1250 | |
1251 <xsl:template match="uchar|jchar" mode="traceInFormat"> | |
1252 <xsl:param name="name"/> | |
1253 <xsl:text> </xsl:text> | |
1254 <xsl:value-of select="$name"/> | |
1255 <xsl:text>=0x%x</xsl:text> | |
1256 </xsl:template> | |
1257 | |
1258 <xsl:template match="jint|jlocation|jchar|jlong|jfloat|jdouble|char|uchar|size_t" mode="traceInValue"> | |
1259 <xsl:param name="name"/> | |
1260 <xsl:text>, </xsl:text> | |
1261 <xsl:value-of select="$name"/> | |
1262 </xsl:template> | |
1263 | |
1264 | |
1265 <xsl:template match="jboolean" mode="traceInFormat"> | |
1266 <xsl:param name="name"/> | |
1267 <xsl:text> </xsl:text> | |
1268 <xsl:value-of select="$name"/> | |
1269 <xsl:text>=%s</xsl:text> | |
1270 </xsl:template> | |
1271 | |
1272 <xsl:template match="jboolean" mode="traceInValue"> | |
1273 <xsl:param name="name"/> | |
1274 <xsl:text>, </xsl:text> | |
1275 <xsl:value-of select="$name"/> | |
1276 <xsl:text>? "true" : "false"</xsl:text> | |
1277 </xsl:template> | |
1278 | |
1279 <xsl:template match="jobject|jvalue|jthreadGroup|void|struct" mode="traceInFormat"> | |
1280 </xsl:template> | |
1281 | |
1282 <xsl:template match="jobject|jvalue|jthreadGroup|void|struct" mode="traceInValue"> | |
1283 </xsl:template> | |
1284 | |
1285 | |
1286 | |
1287 </xsl:stylesheet> |