src/share/vm/prims/jvmtiH.xsl

Wed, 03 Jul 2019 20:42:37 +0800

author
aoqi
date
Wed, 03 Jul 2019 20:42:37 +0800
changeset 9637
eef07cd490d4
parent 6876
710a3c8b516e
permissions
-rw-r--r--

Merge

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

mercurial