Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-aarch32-jdk8u
Path: blob/jdk8u272-b10-aarch32-20201026/hotspot/src/share/vm/prims/jvmtiEnter.xsl
48773 views
1
<?xml version="1.0"?>
2
<!--
3
Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
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
20
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21
or visit www.oracle.com if you need additional information or have any
22
questions.
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>
39
# include "precompiled.hpp"
40
# include "utilities/macros.hpp"
41
#if INCLUDE_JVMTI
42
# include "prims/jvmtiEnter.hpp"
43
# include "prims/jvmtiRawMonitor.hpp"
44
# include "prims/jvmtiUtil.hpp"
45
46
// There are known-bad format/arg pairings in the code generated by this file.
47
PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
48
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 &gt; $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-&gt;</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 &gt; $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
};
255
#endif // INCLUDE_JVMTI
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 &gt; $index]) &gt; 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) &gt; 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 &gt; $index]) &gt; 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) &gt; 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 &gt; $index]) &gt; 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() &amp;&amp; !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"/>
435
<xsl:text>VM_ENTRY_BASE(jvmtiError, </xsl:text>
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-&gt;get_capabilities()-&gt;</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'))">
478
<xsl:text>&#xA;#if !INCLUDE_JVMTI &#xA;</xsl:text>
479
<xsl:text> return JVMTI_ERROR_NOT_AVAILABLE; &#xA;</xsl:text>
480
<xsl:text>#else &#xA;</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> &amp;&amp; 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 &amp;&amp; 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) &amp;&amp; !this_thread->is_VM_thread() &amp;&amp; !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'))">
605
<xsl:text>#endif // INCLUDE_JVMTI&#xA;</xsl:text>
606
</xsl:if>
607
608
<xsl:text>}&#xA;</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-&gt;</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 = NULL;
635
const char *curr_thread_name = NULL;
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 &amp; 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 &amp; JvmtiTrace::SHOW_ERROR) != 0) {
665
if ((trace_flags &amp; 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 &amp;&amp; (trace_flags &amp; JvmtiTrace::SHOW_ERROR) != 0) {
692
if ((trace_flags &amp; 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 &amp; 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>
779
<xsl:with-param name="comment"> - jthread resolved to NULL - jthread = 0x%x</xsl:with-param>
780
<xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
781
</xsl:apply-templates>
782
<xsl:text>
783
}
784
if (!thread_oop-&gt;is_a(SystemDictionary::Thread_klass())) {
785
</xsl:text>
786
<xsl:apply-templates select=".." mode="traceError">
787
<xsl:with-param name="err">JVMTI_ERROR_INVALID_THREAD</xsl:with-param>
788
<xsl:with-param name="comment"> - oop is not a thread - jthread = 0x%x</xsl:with-param>
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>
800
<xsl:with-param name="comment"> - not a Java thread - jthread = 0x%x</xsl:with-param>
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 &lt; 0) {
841
</xsl:text>
842
<xsl:apply-templates select=".." mode="traceError">
843
<xsl:with-param name="err">JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:with-param>
844
<xsl:with-param name="comment"> - negative depth - jthread = 0x%x</xsl:with-param>
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
}
868
if (!k_mirror->is_a(SystemDictionary::Class_klass())) {
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
}
889
Klass* k_oop = java_lang_Class::as_Klass(k_mirror);
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>
894
<xsl:with-param name="comment"> - no Klass* - jclass = 0x%x</xsl:with-param>
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"/>
907
<xsl:text> Method* method_oop = Method::checked_resolve_jmethod_id(</xsl:text>
908
<xsl:value-of select="$name"/>
909
<xsl:text>);&#xA;</xsl:text>
910
<xsl:text> if (method_oop == NULL) {&#xA;</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>&#xA;</xsl:text>
917
<xsl:text> }&#xA;</xsl:text>
918
<xsl:if test="count(@native)=1 and contains(@native,'error')">
919
<xsl:text> if (method_oop->is_native()) {&#xA;</xsl:text>
920
<xsl:text> return JVMTI_ERROR_NATIVE_METHOD;&#xA;</xsl:text>
921
<xsl:text> }&#xA;</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);&#xA;</xsl:text>
929
<xsl:text> fieldDescriptor fdesc;&#xA;</xsl:text>
930
<xsl:text> if (!JvmtiEnv::get_field_descriptor(k_oop, </xsl:text>
931
<xsl:value-of select="$name"/>
932
<xsl:text>, &amp;fdesc)) {&#xA;</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>&#xA;</xsl:text>
937
<xsl:text> }&#xA;</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> &lt; </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) &gt; $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) &gt; $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>
1288
1289