src/share/vm/prims/jvmtiH.xsl

Thu, 27 May 2010 19:08:38 -0700

author
trims
date
Thu, 27 May 2010 19:08:38 -0700
changeset 1907
c18cbe5936b8
parent 435
a61af66fc99e
child 2330
684faacebf20
permissions
-rw-r--r--

6941466: Oracle rebranding changes for Hotspot repositories
Summary: Change all the Sun copyrights to Oracle copyright
Reviewed-by: ohair

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

mercurial