hotspot/src/share/vm/prims/jvmtiH.xsl
changeset 1 489c9b5090e2
child 5547 f4b087cbb361
equal deleted inserted replaced
0:fd16c54261b3 1:489c9b5090e2
       
     1 <?xml version="1.0" encoding="utf-8"?>
       
     2 <!--
       
     3  Copyright 2002-2006 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    21  CA 95054 USA or visit www.sun.com if you need additional information or
       
    22  have any 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="includeHeader"/>
       
    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 
       
   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 };
       
   138 
       
   139 JNIEXPORT jint JNICALL 
       
   140 Agent_OnLoad(JavaVM *vm, char *options, void *reserved);
       
   141 
       
   142 JNIEXPORT jint JNICALL
       
   143 Agent_OnAttach(JavaVM* vm, char* options, void* reserved);
       
   144 
       
   145 JNIEXPORT void JNICALL 
       
   146 Agent_OnUnload(JavaVM *vm);
       
   147 
       
   148     /* Forward declaration of the environment */
       
   149         
       
   150 struct _jvmtiEnv;
       
   151 
       
   152 struct jvmtiInterface_1_;
       
   153   
       
   154 #ifdef __cplusplus
       
   155 typedef _jvmtiEnv jvmtiEnv;
       
   156 #else
       
   157 typedef const struct jvmtiInterface_1_ *jvmtiEnv;
       
   158 #endif /* __cplusplus */
       
   159 
       
   160 </xsl:text>
       
   161   </xsl:template>
       
   162 
       
   163   <xsl:template name="outro">
       
   164   <xsl:text>
       
   165 
       
   166 #ifdef __cplusplus
       
   167 } /* extern "C" */
       
   168 #endif /* __cplusplus */
       
   169 
       
   170 #endif /* !_JAVA_JVMTI_H_ */
       
   171 
       
   172 </xsl:text>
       
   173 </xsl:template>
       
   174 
       
   175 <xsl:template match="eventsection" mode="enum">
       
   176   <xsl:text>
       
   177     /* Event IDs */
       
   178 
       
   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;
       
   199 
       
   200 </xsl:text>
       
   201 </xsl:template>
       
   202 
       
   203 <xsl:template match="eventsection" mode="body">
       
   204   <xsl:text>
       
   205 
       
   206     /* Event Definitions */
       
   207 
       
   208 typedef void (JNICALL *jvmtiEventReserved)(void);
       
   209 
       
   210 </xsl:text>
       
   211   <xsl:apply-templates select="event" mode="definition">
       
   212     <xsl:sort select="@id"/>
       
   213   </xsl:apply-templates>
       
   214 
       
   215   <xsl:text>
       
   216     /* Event Callback Structure */
       
   217 
       
   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>
       
   228 
       
   229 </xsl:template>
       
   230 
       
   231 
       
   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>
       
   247 
       
   248 <xsl:template match="functionsection">
       
   249    <xsl:text>
       
   250 
       
   251     /* Function Interface */
       
   252     
       
   253 typedef struct jvmtiInterface_1_ {
       
   254 
       
   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>
       
   260 
       
   261   <xsl:text>} jvmtiInterface_1;
       
   262 
       
   263 struct _jvmtiEnv {
       
   264     const struct jvmtiInterface_1_ *functions;
       
   265 #ifdef __cplusplus
       
   266 
       
   267 </xsl:text>
       
   268   <xsl:apply-templates select="category" mode="cppinline"/>
       
   269   <xsl:text>
       
   270 #endif /* __cplusplus */
       
   271 };
       
   272 </xsl:text>
       
   273 
       
   274 </xsl:template>
       
   275 
       
   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>;
       
   305 
       
   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>
       
   314 
       
   315 
       
   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>);
       
   322 
       
   323 </xsl:text>
       
   324 </xsl:template>
       
   325 
       
   326 <xsl:template match="category" mode="cppinline">
       
   327     <xsl:apply-templates select="function[count(@hide)=0]" mode="cppinline"/>
       
   328 </xsl:template>
       
   329 
       
   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>
       
   352 
       
   353 
       
   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>
       
   361 
       
   362   <xsl:template match="constants">
       
   363     <xsl:text>
       
   364 
       
   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>
       
   378 
       
   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>
       
   397 
       
   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>
       
   405 
       
   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>
       
   418 
       
   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>
       
   428 
       
   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>
       
   441 
       
   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>
       
   451 
       
   452 </xsl:stylesheet>