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

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!--
     3  Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
     4  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     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.
    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).
    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.
    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.
    24 -->
    26 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    27                 version="1.0">
    29   <xsl:import href="jvmtiLib.xsl"/>
    31   <xsl:output method="text" omit-xml-declaration="yes"/>
    33   <xsl:template match="/">
    34     <xsl:apply-templates select="specification"/>
    35   </xsl:template>
    37   <xsl:template match="specification">
    39     <xsl:call-template name="intro"/>
    41     <xsl:text>/* Derived Base Types */
    42 </xsl:text>
    43     <xsl:apply-templates select="//basetype"/>
    45     <xsl:text>
    47     /* Constants */
    48 </xsl:text>
    49     <xsl:apply-templates select="//constants"/>
    51     <xsl:text>
    53     /* Errors */
    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"/>
    72     <xsl:text>
    73     /* Pre-Declarations */
    74 </xsl:text>
    75 <xsl:apply-templates select="//typedef|//uniontypedef" mode="early"/>
    77     <xsl:text>
    78     /* Function Types */
    79 </xsl:text>
    80     <xsl:apply-templates select="//callback"/>
    82     <xsl:text>
    84     /* Structure Types */
    85 </xsl:text>
    86     <xsl:apply-templates select="//typedef|//uniontypedef" mode="body"/>
    87     <xsl:apply-templates select="//capabilitiestypedef"/>
    89     <xsl:apply-templates select="eventsection" mode="body"/>
    91     <xsl:apply-templates select="functionsection"/>
    93     <xsl:call-template name="outro"/>
    95   </xsl:template>
    97   <xsl:template name="intro">
    98   <xsl:call-template name="includeHeader"/>
    99   <xsl:text>
   100     /* Include file for the Java(tm) Virtual Machine Tool Interface */
   102 #ifndef _JAVA_JVMTI_H_
   103 #define _JAVA_JVMTI_H_
   105 #include "jni.h"
   107 #ifdef __cplusplus
   108 extern "C" {
   109 #endif
   111 enum {
   112     JVMTI_VERSION_1   = 0x30010000,
   113     JVMTI_VERSION_1_0 = 0x30010000,
   114     JVMTI_VERSION_1_1 = 0x30010100,
   116     JVMTI_VERSION = 0x30000000 + (</xsl:text>
   117   <xsl:value-of select="//specification/@majorversion"/>
   118   <xsl:text> * 0x10000) + (</xsl:text>
   119   <xsl:value-of select="//specification/@minorversion"/>
   120   <xsl:text> * 0x100)</xsl:text>
   121   <xsl:variable name="micro">
   122     <xsl:call-template name="microversion"/>
   123   </xsl:variable>
   124   <xsl:choose>
   125     <xsl:when test="string($micro)='dev'">
   126       <xsl:text>  /* checked out - </xsl:text>
   127     </xsl:when>
   128     <xsl:otherwise>
   129       <xsl:text> + </xsl:text>
   130       <xsl:value-of select="$micro"/>
   131       <xsl:text>  /* </xsl:text>
   132     </xsl:otherwise>
   133   </xsl:choose>
   134   <xsl:text>version: </xsl:text>
   135   <xsl:call-template name="showversion"/>
   136   <xsl:text> */
   137 };
   139 JNIEXPORT jint JNICALL 
   140 Agent_OnLoad(JavaVM *vm, char *options, void *reserved);
   142 JNIEXPORT jint JNICALL
   143 Agent_OnAttach(JavaVM* vm, char* options, void* reserved);
   145 JNIEXPORT void JNICALL 
   146 Agent_OnUnload(JavaVM *vm);
   148     /* Forward declaration of the environment */
   150 struct _jvmtiEnv;
   152 struct jvmtiInterface_1_;
   154 #ifdef __cplusplus
   155 typedef _jvmtiEnv jvmtiEnv;
   156 #else
   157 typedef const struct jvmtiInterface_1_ *jvmtiEnv;
   158 #endif /* __cplusplus */
   160 </xsl:text>
   161   </xsl:template>
   163   <xsl:template name="outro">
   164   <xsl:text>
   166 #ifdef __cplusplus
   167 } /* extern "C" */
   168 #endif /* __cplusplus */
   170 #endif /* !_JAVA_JVMTI_H_ */
   172 </xsl:text>
   173 </xsl:template>
   175 <xsl:template match="eventsection" mode="enum">
   176   <xsl:text>
   177     /* Event IDs */
   179 typedef enum {
   180 </xsl:text>
   181      <xsl:for-each select="event">
   182        <xsl:sort select="@num" data-type="number"/>
   183        <xsl:if test="position()=1">
   184          <xsl:text>    JVMTI_MIN_EVENT_TYPE_VAL = </xsl:text>
   185          <xsl:value-of select="@num"/>
   186          <xsl:text>,
   187 </xsl:text>
   188        </xsl:if>
   189        <xsl:apply-templates select="." mode="enum"/>
   190        <xsl:text>,
   191 </xsl:text>
   192        <xsl:if test="position()=last()">
   193          <xsl:text>    JVMTI_MAX_EVENT_TYPE_VAL = </xsl:text>
   194          <xsl:value-of select="@num"/>
   195        </xsl:if>
   196      </xsl:for-each>
   197     <xsl:text>
   198 } jvmtiEvent;
   200 </xsl:text>
   201 </xsl:template>
   203 <xsl:template match="eventsection" mode="body">
   204   <xsl:text>
   206     /* Event Definitions */
   208 typedef void (JNICALL *jvmtiEventReserved)(void);
   210 </xsl:text>
   211   <xsl:apply-templates select="event" mode="definition">
   212     <xsl:sort select="@id"/>
   213   </xsl:apply-templates>
   215   <xsl:text>
   216     /* Event Callback Structure */
   218 typedef struct {
   219 </xsl:text>
   220   <xsl:call-template name="eventStruct">
   221     <xsl:with-param name="events" select="event"/>
   222     <xsl:with-param name="index" select="0"/>
   223     <xsl:with-param name="started" select="false"/>
   224     <xsl:with-param name="comment" select="'Yes'"/>
   225   </xsl:call-template>
   226   <xsl:text>} jvmtiEventCallbacks;
   227 </xsl:text>
   229 </xsl:template>
   232 <xsl:template match="event" mode="definition">
   233   <xsl:text>
   234 typedef void (JNICALL *jvmtiEvent</xsl:text>
   235   <xsl:value-of select="@id"/>
   236   <xsl:text>)
   237     (jvmtiEnv *jvmti_env</xsl:text>
   238   <xsl:apply-templates select="parameters" mode="signature">
   239     <xsl:with-param name="comma">
   240       <xsl:text>, 
   241      </xsl:text>
   242     </xsl:with-param>
   243    </xsl:apply-templates>
   244  <xsl:text>);
   245 </xsl:text>
   246 </xsl:template>
   248 <xsl:template match="functionsection">
   249    <xsl:text>
   251     /* Function Interface */
   253 typedef struct jvmtiInterface_1_ {
   255 </xsl:text>
   256   <xsl:call-template name="funcStruct">
   257     <xsl:with-param name="funcs" select="category/function[count(@hide)=0]"/>
   258     <xsl:with-param name="index" select="1"/>
   259   </xsl:call-template>
   261   <xsl:text>} jvmtiInterface_1;
   263 struct _jvmtiEnv {
   264     const struct jvmtiInterface_1_ *functions;
   265 #ifdef __cplusplus
   267 </xsl:text>
   268   <xsl:apply-templates select="category" mode="cppinline"/>
   269   <xsl:text>
   270 #endif /* __cplusplus */
   271 };
   272 </xsl:text>
   274 </xsl:template>
   276 <xsl:template name="funcStruct">
   277   <xsl:param name="funcs"/>
   278   <xsl:param name="index"/>
   279   <xsl:variable name="thisFunction" select="$funcs[@num=$index]"/>
   280   <xsl:text>  /* </xsl:text>
   281   <xsl:number value="$index" format="  1"/>
   282   <xsl:text> : </xsl:text>
   283   <xsl:choose>
   284     <xsl:when test="count($thisFunction)=1">
   285       <xsl:value-of select="$thisFunction/synopsis"/>
   286       <xsl:text> */
   287   jvmtiError (JNICALL *</xsl:text>
   288       <xsl:value-of select="$thisFunction/@id"/>
   289       <xsl:text>) (jvmtiEnv* env</xsl:text>
   290       <xsl:apply-templates select="$thisFunction/parameters" mode="signature">
   291         <xsl:with-param name="comma">
   292           <xsl:text>, 
   293     </xsl:text>
   294         </xsl:with-param>
   295       </xsl:apply-templates>
   296       <xsl:text>)</xsl:text>
   297     </xsl:when>
   298     <xsl:otherwise>
   299       <xsl:text> RESERVED */
   300   void *reserved</xsl:text>        
   301       <xsl:value-of select="$index"/>
   302     </xsl:otherwise>
   303   </xsl:choose>
   304   <xsl:text>;
   306 </xsl:text>
   307   <xsl:if test="count($funcs[@num &gt; $index]) &gt; 0">
   308     <xsl:call-template name="funcStruct">
   309       <xsl:with-param name="funcs" select="$funcs"/>
   310       <xsl:with-param name="index" select="1+$index"/>
   311     </xsl:call-template>
   312   </xsl:if>
   313 </xsl:template>
   316 <xsl:template match="function">
   317   <xsl:text>  jvmtiError (JNICALL *</xsl:text>
   318   <xsl:value-of select="@id"/>
   319   <xsl:text>) (jvmtiEnv* env</xsl:text>
   320   <xsl:apply-templates select="parameters" mode="signature"/>
   321   <xsl:text>);
   323 </xsl:text>
   324 </xsl:template>
   326 <xsl:template match="category" mode="cppinline">
   327     <xsl:apply-templates select="function[count(@hide)=0]" mode="cppinline"/>
   328 </xsl:template>
   330 <xsl:template match="function" mode="cppinline">
   331   <xsl:text>
   332   jvmtiError </xsl:text>
   333   <xsl:value-of select="@id"/>
   334   <xsl:text>(</xsl:text>
   335   <xsl:apply-templates select="parameters" mode="signaturenoleadcomma"/>
   336   <xsl:text>) {
   337     return functions-></xsl:text>
   338   <xsl:value-of select="@id"/>
   339   <xsl:text>(this</xsl:text>
   340   <xsl:for-each select="parameters">
   341     <xsl:for-each select="param">
   342       <xsl:if test="@id != '...' and count(jclass/@method) = 0">
   343         <xsl:text>, </xsl:text>
   344         <xsl:value-of select="@id"/>
   345       </xsl:if>
   346     </xsl:for-each>
   347   </xsl:for-each>
   348   <xsl:text>);
   349   }
   350 </xsl:text>
   351 </xsl:template>
   354   <xsl:template match="basetype">
   355     <xsl:if test="count(definition)!=0">
   356       <xsl:text>
   357 </xsl:text>
   358       <xsl:apply-templates select="definition"/>
   359     </xsl:if>
   360   </xsl:template>
   362   <xsl:template match="constants">
   363     <xsl:text>
   365     /* </xsl:text>
   366     <xsl:value-of select="@label"/>
   367     <xsl:text> */ 
   368 </xsl:text>
   369     <xsl:choose>
   370       <xsl:when test="@kind='enum'">
   371         <xsl:apply-templates select="." mode="enum"/>
   372       </xsl:when>
   373       <xsl:otherwise>
   374         <xsl:apply-templates select="." mode="constants"/>
   375       </xsl:otherwise>
   376     </xsl:choose>
   377   </xsl:template>
   379 <xsl:template match="callback">
   380       <xsl:text>
   381 typedef </xsl:text>
   382       <xsl:apply-templates select="child::*[position()=1]" mode="signature"/>
   383       <xsl:text> (JNICALL *</xsl:text>
   384       <xsl:value-of select="@id"/>
   385       <xsl:text>)
   386     (</xsl:text>
   387       <xsl:for-each select="parameters">
   388         <xsl:apply-templates select="param[position()=1]" mode="signature"/>
   389         <xsl:for-each select="param[position()>1]">
   390           <xsl:text>, </xsl:text>
   391           <xsl:apply-templates select="." mode="signature"/>
   392         </xsl:for-each>
   393       </xsl:for-each>
   394       <xsl:text>);
   395 </xsl:text>
   396 </xsl:template>
   398 <xsl:template match="capabilitiestypedef">
   399   <xsl:text>
   400 </xsl:text>
   401   <xsl:apply-templates select="." mode="genstruct"/>
   402   <xsl:text>
   403 </xsl:text>
   404 </xsl:template>
   406 <xsl:template match="typedef" mode="early">
   407   <xsl:text>struct _</xsl:text>
   408   <xsl:value-of select="@id"/>
   409   <xsl:text>;
   410 </xsl:text>
   411   <xsl:text>typedef struct _</xsl:text>
   412   <xsl:value-of select="@id"/>
   413   <xsl:text> </xsl:text>
   414   <xsl:value-of select="@id"/>
   415   <xsl:text>;
   416 </xsl:text>
   417 </xsl:template>
   419 <xsl:template match="typedef" mode="body">
   420   <xsl:text>struct _</xsl:text>
   421   <xsl:value-of select="@id"/>
   422   <xsl:text> {
   423 </xsl:text>
   424 <xsl:apply-templates select="field" mode="signature"/>
   425   <xsl:text>};
   426 </xsl:text>
   427 </xsl:template>
   429 <xsl:template match="uniontypedef" mode="early">
   430   <xsl:text>union _</xsl:text>
   431   <xsl:value-of select="@id"/>
   432   <xsl:text>;
   433 </xsl:text>
   434   <xsl:text>typedef union _</xsl:text>
   435   <xsl:value-of select="@id"/>
   436   <xsl:text> </xsl:text>
   437   <xsl:value-of select="@id"/>
   438   <xsl:text>;
   439 </xsl:text>
   440 </xsl:template>
   442 <xsl:template match="uniontypedef" mode="body">
   443   <xsl:text>union _</xsl:text>
   444   <xsl:value-of select="@id"/>
   445   <xsl:text> {
   446 </xsl:text>
   447 <xsl:apply-templates select="field" mode="signature"/>
   448   <xsl:text>};
   449 </xsl:text>
   450 </xsl:template>
   452 </xsl:stylesheet>

mercurial