src/share/vm/prims/jvmtiH.xsl

Tue, 02 Apr 2013 11:28:33 +0200

author
mgerdin
date
Tue, 02 Apr 2013 11:28:33 +0200
changeset 4850
ede380e13960
parent 2330
684faacebf20
child 6876
710a3c8b516e
permissions
-rw-r--r--

8009763: Add WB test for String.intern()
Summary: Add convenience method in StringTable, add WhiteBox method and simple sanity test
Reviewed-by: mgerdin, zgu
Contributed-by: leonid.mesnik@oracle.com

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!--
     3  Copyright (c) 2002, 2010, 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,
   115     JVMTI_VERSION_1_2 = 0x30010200,
   117     JVMTI_VERSION = 0x30000000 + (</xsl:text>
   118   <xsl:value-of select="//specification/@majorversion"/>
   119   <xsl:text> * 0x10000) + (</xsl:text>
   120   <xsl:value-of select="//specification/@minorversion"/>
   121   <xsl:text> * 0x100)</xsl:text>
   122   <xsl:variable name="micro">
   123     <xsl:call-template name="microversion"/>
   124   </xsl:variable>
   125   <xsl:choose>
   126     <xsl:when test="string($micro)='dev'">
   127       <xsl:text>  /* checked out - </xsl:text>
   128     </xsl:when>
   129     <xsl:otherwise>
   130       <xsl:text> + </xsl:text>
   131       <xsl:value-of select="$micro"/>
   132       <xsl:text>  /* </xsl:text>
   133     </xsl:otherwise>
   134   </xsl:choose>
   135   <xsl:text>version: </xsl:text>
   136   <xsl:call-template name="showversion"/>
   137   <xsl:text> */
   138 };
   140 JNIEXPORT jint JNICALL 
   141 Agent_OnLoad(JavaVM *vm, char *options, void *reserved);
   143 JNIEXPORT jint JNICALL
   144 Agent_OnAttach(JavaVM* vm, char* options, void* reserved);
   146 JNIEXPORT void JNICALL 
   147 Agent_OnUnload(JavaVM *vm);
   149     /* Forward declaration of the environment */
   151 struct _jvmtiEnv;
   153 struct jvmtiInterface_1_;
   155 #ifdef __cplusplus
   156 typedef _jvmtiEnv jvmtiEnv;
   157 #else
   158 typedef const struct jvmtiInterface_1_ *jvmtiEnv;
   159 #endif /* __cplusplus */
   161 </xsl:text>
   162   </xsl:template>
   164   <xsl:template name="outro">
   165   <xsl:text>
   167 #ifdef __cplusplus
   168 } /* extern "C" */
   169 #endif /* __cplusplus */
   171 #endif /* !_JAVA_JVMTI_H_ */
   173 </xsl:text>
   174 </xsl:template>
   176 <xsl:template match="eventsection" mode="enum">
   177   <xsl:text>
   178     /* Event IDs */
   180 typedef enum {
   181 </xsl:text>
   182      <xsl:for-each select="event">
   183        <xsl:sort select="@num" data-type="number"/>
   184        <xsl:if test="position()=1">
   185          <xsl:text>    JVMTI_MIN_EVENT_TYPE_VAL = </xsl:text>
   186          <xsl:value-of select="@num"/>
   187          <xsl:text>,
   188 </xsl:text>
   189        </xsl:if>
   190        <xsl:apply-templates select="." mode="enum"/>
   191        <xsl:text>,
   192 </xsl:text>
   193        <xsl:if test="position()=last()">
   194          <xsl:text>    JVMTI_MAX_EVENT_TYPE_VAL = </xsl:text>
   195          <xsl:value-of select="@num"/>
   196        </xsl:if>
   197      </xsl:for-each>
   198     <xsl:text>
   199 } jvmtiEvent;
   201 </xsl:text>
   202 </xsl:template>
   204 <xsl:template match="eventsection" mode="body">
   205   <xsl:text>
   207     /* Event Definitions */
   209 typedef void (JNICALL *jvmtiEventReserved)(void);
   211 </xsl:text>
   212   <xsl:apply-templates select="event" mode="definition">
   213     <xsl:sort select="@id"/>
   214   </xsl:apply-templates>
   216   <xsl:text>
   217     /* Event Callback Structure */
   219 typedef struct {
   220 </xsl:text>
   221   <xsl:call-template name="eventStruct">
   222     <xsl:with-param name="events" select="event"/>
   223     <xsl:with-param name="index" select="0"/>
   224     <xsl:with-param name="started" select="false"/>
   225     <xsl:with-param name="comment" select="'Yes'"/>
   226   </xsl:call-template>
   227   <xsl:text>} jvmtiEventCallbacks;
   228 </xsl:text>
   230 </xsl:template>
   233 <xsl:template match="event" mode="definition">
   234   <xsl:text>
   235 typedef void (JNICALL *jvmtiEvent</xsl:text>
   236   <xsl:value-of select="@id"/>
   237   <xsl:text>)
   238     (jvmtiEnv *jvmti_env</xsl:text>
   239   <xsl:apply-templates select="parameters" mode="signature">
   240     <xsl:with-param name="comma">
   241       <xsl:text>, 
   242      </xsl:text>
   243     </xsl:with-param>
   244    </xsl:apply-templates>
   245  <xsl:text>);
   246 </xsl:text>
   247 </xsl:template>
   249 <xsl:template match="functionsection">
   250    <xsl:text>
   252     /* Function Interface */
   254 typedef struct jvmtiInterface_1_ {
   256 </xsl:text>
   257   <xsl:call-template name="funcStruct">
   258     <xsl:with-param name="funcs" select="category/function[count(@hide)=0]"/>
   259     <xsl:with-param name="index" select="1"/>
   260   </xsl:call-template>
   262   <xsl:text>} jvmtiInterface_1;
   264 struct _jvmtiEnv {
   265     const struct jvmtiInterface_1_ *functions;
   266 #ifdef __cplusplus
   268 </xsl:text>
   269   <xsl:apply-templates select="category" mode="cppinline"/>
   270   <xsl:text>
   271 #endif /* __cplusplus */
   272 };
   273 </xsl:text>
   275 </xsl:template>
   277 <xsl:template name="funcStruct">
   278   <xsl:param name="funcs"/>
   279   <xsl:param name="index"/>
   280   <xsl:variable name="thisFunction" select="$funcs[@num=$index]"/>
   281   <xsl:text>  /* </xsl:text>
   282   <xsl:number value="$index" format="  1"/>
   283   <xsl:text> : </xsl:text>
   284   <xsl:choose>
   285     <xsl:when test="count($thisFunction)=1">
   286       <xsl:value-of select="$thisFunction/synopsis"/>
   287       <xsl:text> */
   288   jvmtiError (JNICALL *</xsl:text>
   289       <xsl:value-of select="$thisFunction/@id"/>
   290       <xsl:text>) (jvmtiEnv* env</xsl:text>
   291       <xsl:apply-templates select="$thisFunction/parameters" mode="signature">
   292         <xsl:with-param name="comma">
   293           <xsl:text>, 
   294     </xsl:text>
   295         </xsl:with-param>
   296       </xsl:apply-templates>
   297       <xsl:text>)</xsl:text>
   298     </xsl:when>
   299     <xsl:otherwise>
   300       <xsl:text> RESERVED */
   301   void *reserved</xsl:text>        
   302       <xsl:value-of select="$index"/>
   303     </xsl:otherwise>
   304   </xsl:choose>
   305   <xsl:text>;
   307 </xsl:text>
   308   <xsl:if test="count($funcs[@num &gt; $index]) &gt; 0">
   309     <xsl:call-template name="funcStruct">
   310       <xsl:with-param name="funcs" select="$funcs"/>
   311       <xsl:with-param name="index" select="1+$index"/>
   312     </xsl:call-template>
   313   </xsl:if>
   314 </xsl:template>
   317 <xsl:template match="function">
   318   <xsl:text>  jvmtiError (JNICALL *</xsl:text>
   319   <xsl:value-of select="@id"/>
   320   <xsl:text>) (jvmtiEnv* env</xsl:text>
   321   <xsl:apply-templates select="parameters" mode="signature"/>
   322   <xsl:text>);
   324 </xsl:text>
   325 </xsl:template>
   327 <xsl:template match="category" mode="cppinline">
   328     <xsl:apply-templates select="function[count(@hide)=0]" mode="cppinline"/>
   329 </xsl:template>
   331 <xsl:template match="function" mode="cppinline">
   332   <xsl:text>
   333   jvmtiError </xsl:text>
   334   <xsl:value-of select="@id"/>
   335   <xsl:text>(</xsl:text>
   336   <xsl:apply-templates select="parameters" mode="signaturenoleadcomma"/>
   337   <xsl:text>) {
   338     return functions-></xsl:text>
   339   <xsl:value-of select="@id"/>
   340   <xsl:text>(this</xsl:text>
   341   <xsl:for-each select="parameters">
   342     <xsl:for-each select="param">
   343       <xsl:if test="@id != '...' and count(jclass/@method) = 0">
   344         <xsl:text>, </xsl:text>
   345         <xsl:value-of select="@id"/>
   346       </xsl:if>
   347     </xsl:for-each>
   348   </xsl:for-each>
   349   <xsl:text>);
   350   }
   351 </xsl:text>
   352 </xsl:template>
   355   <xsl:template match="basetype">
   356     <xsl:if test="count(definition)!=0">
   357       <xsl:text>
   358 </xsl:text>
   359       <xsl:apply-templates select="definition"/>
   360     </xsl:if>
   361   </xsl:template>
   363   <xsl:template match="constants">
   364     <xsl:text>
   366     /* </xsl:text>
   367     <xsl:value-of select="@label"/>
   368     <xsl:text> */ 
   369 </xsl:text>
   370     <xsl:choose>
   371       <xsl:when test="@kind='enum'">
   372         <xsl:apply-templates select="." mode="enum"/>
   373       </xsl:when>
   374       <xsl:otherwise>
   375         <xsl:apply-templates select="." mode="constants"/>
   376       </xsl:otherwise>
   377     </xsl:choose>
   378   </xsl:template>
   380 <xsl:template match="callback">
   381       <xsl:text>
   382 typedef </xsl:text>
   383       <xsl:apply-templates select="child::*[position()=1]" mode="signature"/>
   384       <xsl:text> (JNICALL *</xsl:text>
   385       <xsl:value-of select="@id"/>
   386       <xsl:text>)
   387     (</xsl:text>
   388       <xsl:for-each select="parameters">
   389         <xsl:apply-templates select="param[position()=1]" mode="signature"/>
   390         <xsl:for-each select="param[position()>1]">
   391           <xsl:text>, </xsl:text>
   392           <xsl:apply-templates select="." mode="signature"/>
   393         </xsl:for-each>
   394       </xsl:for-each>
   395       <xsl:text>);
   396 </xsl:text>
   397 </xsl:template>
   399 <xsl:template match="capabilitiestypedef">
   400   <xsl:text>
   401 </xsl:text>
   402   <xsl:apply-templates select="." mode="genstruct"/>
   403   <xsl:text>
   404 </xsl:text>
   405 </xsl:template>
   407 <xsl:template match="typedef" mode="early">
   408   <xsl:text>struct _</xsl:text>
   409   <xsl:value-of select="@id"/>
   410   <xsl:text>;
   411 </xsl:text>
   412   <xsl:text>typedef struct _</xsl:text>
   413   <xsl:value-of select="@id"/>
   414   <xsl:text> </xsl:text>
   415   <xsl:value-of select="@id"/>
   416   <xsl:text>;
   417 </xsl:text>
   418 </xsl:template>
   420 <xsl:template match="typedef" mode="body">
   421   <xsl:text>struct _</xsl:text>
   422   <xsl:value-of select="@id"/>
   423   <xsl:text> {
   424 </xsl:text>
   425 <xsl:apply-templates select="field" mode="signature"/>
   426   <xsl:text>};
   427 </xsl:text>
   428 </xsl:template>
   430 <xsl:template match="uniontypedef" mode="early">
   431   <xsl:text>union _</xsl:text>
   432   <xsl:value-of select="@id"/>
   433   <xsl:text>;
   434 </xsl:text>
   435   <xsl:text>typedef union _</xsl:text>
   436   <xsl:value-of select="@id"/>
   437   <xsl:text> </xsl:text>
   438   <xsl:value-of select="@id"/>
   439   <xsl:text>;
   440 </xsl:text>
   441 </xsl:template>
   443 <xsl:template match="uniontypedef" mode="body">
   444   <xsl:text>union _</xsl:text>
   445   <xsl:value-of select="@id"/>
   446   <xsl:text> {
   447 </xsl:text>
   448 <xsl:apply-templates select="field" mode="signature"/>
   449   <xsl:text>};
   450 </xsl:text>
   451 </xsl:template>
   453 </xsl:stylesheet>

mercurial