Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/hotspot/share/prims/jvmtiH.xsl
41145 views
1
<?xml version="1.0" encoding="utf-8"?>
2
<!--
3
Copyright (c) 2002, 2020, 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"
27
version="1.0">
28
29
<xsl:import href="jvmtiLib.xsl"/>
30
31
<xsl:output method="text" omit-xml-declaration="yes"/>
32
33
<xsl:template match="/">
34
<xsl:apply-templates select="specification"/>
35
</xsl:template>
36
37
<xsl:template match="specification">
38
39
<xsl:call-template name="intro"/>
40
41
<xsl:text>/* Derived Base Types */
42
</xsl:text>
43
<xsl:apply-templates select="//basetype"/>
44
45
<xsl:text>
46
47
/* Constants */
48
</xsl:text>
49
<xsl:apply-templates select="//constants"/>
50
51
<xsl:text>
52
53
/* Errors */
54
55
typedef enum {
56
</xsl:text>
57
<xsl:for-each select="//errorid">
58
<xsl:sort select="@num" data-type="number"/>
59
<xsl:apply-templates select="." mode="enum"/>
60
<xsl:text>,
61
</xsl:text>
62
<xsl:if test="position() = last()">
63
<xsl:text> JVMTI_ERROR_MAX = </xsl:text>
64
<xsl:value-of select="@num"/>
65
</xsl:if>
66
</xsl:for-each>
67
<xsl:text>
68
} jvmtiError;
69
</xsl:text>
70
<xsl:apply-templates select="eventsection" mode="enum"/>
71
72
<xsl:text>
73
/* Pre-Declarations */
74
</xsl:text>
75
<xsl:apply-templates select="//typedef|//uniontypedef" mode="early"/>
76
77
<xsl:text>
78
/* Function Types */
79
</xsl:text>
80
<xsl:apply-templates select="//callback"/>
81
82
<xsl:text>
83
84
/* Structure Types */
85
</xsl:text>
86
<xsl:apply-templates select="//typedef|//uniontypedef" mode="body"/>
87
<xsl:apply-templates select="//capabilitiestypedef"/>
88
89
<xsl:apply-templates select="eventsection" mode="body"/>
90
91
<xsl:apply-templates select="functionsection"/>
92
93
<xsl:call-template name="outro"/>
94
95
</xsl:template>
96
97
<xsl:template name="intro">
98
<xsl:call-template name="include_GPL_CP_Header"/>
99
<xsl:text>
100
/* Include file for the Java(tm) Virtual Machine Tool Interface */
101
102
#ifndef _JAVA_JVMTI_H_
103
#define _JAVA_JVMTI_H_
104
105
#include "jni.h"
106
107
#ifdef __cplusplus
108
extern "C" {
109
#endif
110
111
enum {
112
JVMTI_VERSION_1 = 0x30010000,
113
JVMTI_VERSION_1_0 = 0x30010000,
114
JVMTI_VERSION_1_1 = 0x30010100,
115
JVMTI_VERSION_1_2 = 0x30010200,
116
JVMTI_VERSION_9 = 0x30090000,
117
JVMTI_VERSION_11 = 0x300B0000,
118
119
JVMTI_VERSION = 0x30000000 + (</xsl:text>
120
<xsl:value-of select="$majorversion"/>
121
<xsl:text> * 0x10000) + (</xsl:text>
122
<!-- Now minorversion is always 0 -->
123
<xsl:text> 0 * 0x100)</xsl:text>
124
<xsl:variable name="micro">
125
<xsl:call-template name="microversion"/>
126
</xsl:variable>
127
<xsl:choose>
128
<xsl:when test="string($micro)='dev'">
129
<xsl:text> /* checked out - </xsl:text>
130
</xsl:when>
131
<xsl:otherwise>
132
<xsl:text> + </xsl:text>
133
<xsl:value-of select="$micro"/>
134
<xsl:text> /* </xsl:text>
135
</xsl:otherwise>
136
</xsl:choose>
137
<xsl:text>version: </xsl:text>
138
<xsl:call-template name="showversion"/>
139
<xsl:text> */
140
};
141
142
JNIEXPORT jint JNICALL
143
Agent_OnLoad(JavaVM *vm, char *options, void *reserved);
144
145
JNIEXPORT jint JNICALL
146
Agent_OnAttach(JavaVM* vm, char* options, void* reserved);
147
148
JNIEXPORT void JNICALL
149
Agent_OnUnload(JavaVM *vm);
150
151
/* Forward declaration of the environment */
152
153
struct _jvmtiEnv;
154
155
struct jvmtiInterface_1_;
156
157
#ifdef __cplusplus
158
typedef _jvmtiEnv jvmtiEnv;
159
#else
160
typedef const struct jvmtiInterface_1_ *jvmtiEnv;
161
#endif /* __cplusplus */
162
163
</xsl:text>
164
</xsl:template>
165
166
<xsl:template name="outro">
167
<xsl:text>
168
169
#ifdef __cplusplus
170
} /* extern "C" */
171
#endif /* __cplusplus */
172
173
#endif /* !_JAVA_JVMTI_H_ */
174
</xsl:text>
175
</xsl:template>
176
177
<xsl:template match="eventsection" mode="enum">
178
<xsl:text>
179
/* Event IDs */
180
181
typedef enum {
182
</xsl:text>
183
<xsl:for-each select="event">
184
<xsl:sort select="@num" data-type="number"/>
185
<xsl:if test="position()=1">
186
<xsl:text> JVMTI_MIN_EVENT_TYPE_VAL = </xsl:text>
187
<xsl:value-of select="@num"/>
188
<xsl:text>,
189
</xsl:text>
190
</xsl:if>
191
<xsl:apply-templates select="." mode="enum"/>
192
<xsl:text>,
193
</xsl:text>
194
<xsl:if test="position()=last()">
195
<xsl:text> JVMTI_MAX_EVENT_TYPE_VAL = </xsl:text>
196
<xsl:value-of select="@num"/>
197
</xsl:if>
198
</xsl:for-each>
199
<xsl:text>
200
} jvmtiEvent;
201
202
</xsl:text>
203
</xsl:template>
204
205
<xsl:template match="eventsection" mode="body">
206
<xsl:text>
207
208
/* Event Definitions */
209
210
typedef void (JNICALL *jvmtiEventReserved)(void);
211
212
</xsl:text>
213
<xsl:apply-templates select="event" mode="definition">
214
<xsl:sort select="@id"/>
215
</xsl:apply-templates>
216
217
<xsl:text>
218
/* Event Callback Structure */
219
220
typedef struct {
221
</xsl:text>
222
<xsl:call-template name="eventStruct">
223
<xsl:with-param name="events" select="event"/>
224
<xsl:with-param name="index" select="0"/>
225
<xsl:with-param name="started" select="false"/>
226
<xsl:with-param name="comment" select="'Yes'"/>
227
</xsl:call-template>
228
<xsl:text>} jvmtiEventCallbacks;
229
</xsl:text>
230
231
</xsl:template>
232
233
234
<xsl:template match="event" mode="definition">
235
<xsl:text>
236
typedef void (JNICALL *jvmtiEvent</xsl:text>
237
<xsl:value-of select="@id"/>
238
<xsl:text>)
239
(jvmtiEnv *jvmti_env</xsl:text>
240
<xsl:apply-templates select="parameters" mode="signature">
241
<xsl:with-param name="comma">
242
<xsl:text>,
243
</xsl:text>
244
</xsl:with-param>
245
</xsl:apply-templates>
246
<xsl:text>);
247
</xsl:text>
248
</xsl:template>
249
250
<xsl:template match="functionsection">
251
<xsl:text>
252
253
/* Function Interface */
254
255
typedef struct jvmtiInterface_1_ {
256
257
</xsl:text>
258
<xsl:call-template name="funcStruct">
259
<xsl:with-param name="funcs" select="category/function[count(@hide)=0]"/>
260
<xsl:with-param name="index" select="1"/>
261
</xsl:call-template>
262
263
<xsl:text>} jvmtiInterface_1;
264
265
struct _jvmtiEnv {
266
const struct jvmtiInterface_1_ *functions;
267
#ifdef __cplusplus
268
269
</xsl:text>
270
<xsl:apply-templates select="category" mode="cppinline"/>
271
<xsl:text>
272
#endif /* __cplusplus */
273
};
274
</xsl:text>
275
276
</xsl:template>
277
278
<xsl:template name="funcStruct">
279
<xsl:param name="funcs"/>
280
<xsl:param name="index"/>
281
<xsl:variable name="thisFunction" select="$funcs[@num=$index]"/>
282
<xsl:text> /* </xsl:text>
283
<xsl:number value="$index" format=" 1"/>
284
<xsl:text> : </xsl:text>
285
<xsl:choose>
286
<xsl:when test="count($thisFunction)=1">
287
<xsl:value-of select="$thisFunction/synopsis"/>
288
<xsl:text> */
289
jvmtiError (JNICALL *</xsl:text>
290
<xsl:value-of select="$thisFunction/@id"/>
291
<xsl:text>) (jvmtiEnv* env</xsl:text>
292
<xsl:apply-templates select="$thisFunction/parameters" mode="signature">
293
<xsl:with-param name="comma">
294
<xsl:text>,
295
</xsl:text>
296
</xsl:with-param>
297
</xsl:apply-templates>
298
<xsl:text>)</xsl:text>
299
</xsl:when>
300
<xsl:otherwise>
301
<xsl:text> RESERVED */
302
void *reserved</xsl:text>
303
<xsl:value-of select="$index"/>
304
</xsl:otherwise>
305
</xsl:choose>
306
<xsl:text>;
307
308
</xsl:text>
309
<xsl:if test="count($funcs[@num &gt; $index]) &gt; 0">
310
<xsl:call-template name="funcStruct">
311
<xsl:with-param name="funcs" select="$funcs"/>
312
<xsl:with-param name="index" select="1+$index"/>
313
</xsl:call-template>
314
</xsl:if>
315
</xsl:template>
316
317
318
<xsl:template match="function">
319
<xsl:text> jvmtiError (JNICALL *</xsl:text>
320
<xsl:value-of select="@id"/>
321
<xsl:text>) (jvmtiEnv* env</xsl:text>
322
<xsl:apply-templates select="parameters" mode="signature"/>
323
<xsl:text>);
324
325
</xsl:text>
326
</xsl:template>
327
328
<xsl:template match="category" mode="cppinline">
329
<xsl:apply-templates select="function[count(@hide)=0]" mode="cppinline"/>
330
</xsl:template>
331
332
<xsl:template match="function" mode="cppinline">
333
<xsl:text>
334
jvmtiError </xsl:text>
335
<xsl:value-of select="@id"/>
336
<xsl:text>(</xsl:text>
337
<xsl:apply-templates select="parameters" mode="signaturenoleadcomma"/>
338
<xsl:text>) {
339
return functions-></xsl:text>
340
<xsl:value-of select="@id"/>
341
<xsl:text>(this</xsl:text>
342
<xsl:for-each select="parameters">
343
<xsl:for-each select="param">
344
<xsl:if test="@id != '...' and count(jclass/@method) = 0">
345
<xsl:text>, </xsl:text>
346
<xsl:value-of select="@id"/>
347
</xsl:if>
348
</xsl:for-each>
349
</xsl:for-each>
350
<xsl:text>);
351
}
352
</xsl:text>
353
</xsl:template>
354
355
356
<xsl:template match="basetype">
357
<xsl:if test="count(definition)!=0">
358
<xsl:text>
359
</xsl:text>
360
<xsl:apply-templates select="definition"/>
361
</xsl:if>
362
</xsl:template>
363
364
<xsl:template match="constants">
365
<xsl:text>
366
367
/* </xsl:text>
368
<xsl:value-of select="@label"/>
369
<xsl:text> */
370
</xsl:text>
371
<xsl:choose>
372
<xsl:when test="@kind='enum'">
373
<xsl:apply-templates select="." mode="enum"/>
374
</xsl:when>
375
<xsl:otherwise>
376
<xsl:apply-templates select="." mode="constants"/>
377
</xsl:otherwise>
378
</xsl:choose>
379
</xsl:template>
380
381
<xsl:template match="callback">
382
<xsl:text>
383
typedef </xsl:text>
384
<xsl:apply-templates select="child::*[position()=1]" mode="signature"/>
385
<xsl:text> (JNICALL *</xsl:text>
386
<xsl:value-of select="@id"/>
387
<xsl:text>)
388
(</xsl:text>
389
<xsl:for-each select="parameters">
390
<xsl:apply-templates select="param[position()=1]" mode="signature"/>
391
<xsl:for-each select="param[position()>1]">
392
<xsl:text>, </xsl:text>
393
<xsl:apply-templates select="." mode="signature"/>
394
</xsl:for-each>
395
</xsl:for-each>
396
<xsl:text>);
397
</xsl:text>
398
</xsl:template>
399
400
<xsl:template match="capabilitiestypedef">
401
<xsl:text>
402
</xsl:text>
403
<xsl:apply-templates select="." mode="genstruct"/>
404
<xsl:text>
405
</xsl:text>
406
</xsl:template>
407
408
<xsl:template match="typedef" mode="early">
409
<xsl:text>struct </xsl:text>
410
<xsl:value-of select="@id"/>
411
<xsl:text>;
412
</xsl:text>
413
<xsl:text>typedef struct </xsl:text>
414
<xsl:value-of select="@id"/>
415
<xsl:text> </xsl:text>
416
<xsl:value-of select="@id"/>
417
<xsl:text>;
418
</xsl:text>
419
</xsl:template>
420
421
<xsl:template match="typedef" mode="body">
422
<xsl:text>struct </xsl:text>
423
<xsl:value-of select="@id"/>
424
<xsl:text> {
425
</xsl:text>
426
<xsl:apply-templates select="field" mode="signature"/>
427
<xsl:text>};
428
</xsl:text>
429
</xsl:template>
430
431
<xsl:template match="uniontypedef" mode="early">
432
<xsl:text>union </xsl:text>
433
<xsl:value-of select="@id"/>
434
<xsl:text>;
435
</xsl:text>
436
<xsl:text>typedef union </xsl:text>
437
<xsl:value-of select="@id"/>
438
<xsl:text> </xsl:text>
439
<xsl:value-of select="@id"/>
440
<xsl:text>;
441
</xsl:text>
442
</xsl:template>
443
444
<xsl:template match="uniontypedef" mode="body">
445
<xsl:text>union </xsl:text>
446
<xsl:value-of select="@id"/>
447
<xsl:text> {
448
</xsl:text>
449
<xsl:apply-templates select="field" mode="signature"/>
450
<xsl:text>};
451
</xsl:text>
452
</xsl:template>
453
454
</xsl:stylesheet>
455
456