1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/share/vm/prims/jvmtiLib.xsl Wed Apr 27 01:25:04 2016 +0800 1.3 @@ -0,0 +1,971 @@ 1.4 +<?xml version="1.0" encoding="utf-8"?> 1.5 +<!-- 1.6 + 1.7 + Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. 1.8 + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.9 + 1.10 + This code is free software; you can redistribute it and/or modify it 1.11 + under the terms of the GNU General Public License version 2 only, as 1.12 + published by the Free Software Foundation. 1.13 + 1.14 + This code is distributed in the hope that it will be useful, but WITHOUT 1.15 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1.16 + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1.17 + version 2 for more details (a copy is included in the LICENSE file that 1.18 + accompanied this code). 1.19 + 1.20 + You should have received a copy of the GNU General Public License version 1.21 + 2 along with this work; if not, write to the Free Software Foundation, 1.22 + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1.23 + 1.24 + Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 1.25 + or visit www.oracle.com if you need additional information or have any 1.26 + questions. 1.27 + 1.28 +--> 1.29 + 1.30 +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 1.31 + version="1.0"> 1.32 + 1.33 + <xsl:template name="microversion"> 1.34 + <xsl:value-of select="//specification/@microversion"/> 1.35 + </xsl:template> 1.36 + 1.37 + <xsl:template name="showbasicversion"> 1.38 + <xsl:value-of select="//specification/@majorversion"/> 1.39 + <xsl:text>.</xsl:text> 1.40 + <xsl:value-of select="//specification/@minorversion"/> 1.41 + </xsl:template> 1.42 + 1.43 + <xsl:template name="showversion"> 1.44 + <xsl:call-template name="showbasicversion"/> 1.45 + <xsl:text>.</xsl:text> 1.46 + <xsl:call-template name="microversion"/> 1.47 + </xsl:template> 1.48 + 1.49 + <xsl:template name="copyrightComment"> 1.50 + <xsl:text>/* </xsl:text> 1.51 + <!-- Copy the Copyright comment from jvmti.xml --> 1.52 + <xsl:value-of select="/comment()[position()=1]"/> 1.53 + <xsl:text> */ 

</xsl:text> 1.54 + </xsl:template> 1.55 + 1.56 + <xsl:template name="includeHeader"> 1.57 + <xsl:call-template name="copyrightComment"/> 1.58 + <xsl:text> /* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */ 
</xsl:text> 1.59 + </xsl:template> 1.60 + 1.61 + <xsl:template name="sourceHeader"> 1.62 + <xsl:call-template name="copyrightComment"/> 1.63 + <xsl:text> // AUTOMATICALLY GENERATED FILE - DO NOT EDIT 
</xsl:text> 1.64 + </xsl:template> 1.65 + 1.66 + 1.67 +<xsl:template match="parameters" mode="signature"> 1.68 + <xsl:param name="comma"> 1.69 + <xsl:text>, 1.70 + </xsl:text> 1.71 + </xsl:param> 1.72 + <xsl:if test="count(param) != 0"> 1.73 + <xsl:value-of select="$comma"/> 1.74 + </xsl:if> 1.75 + <xsl:apply-templates select="." mode="signaturenoleadcomma"> 1.76 + <xsl:with-param name="comma" select="$comma"/> 1.77 + </xsl:apply-templates> 1.78 +</xsl:template> 1.79 + 1.80 + 1.81 +<xsl:template match="parameters" mode="signaturenoleadcomma"> 1.82 + <xsl:param name="comma"> 1.83 + <xsl:text>, 1.84 + </xsl:text> 1.85 + </xsl:param> 1.86 + <xsl:variable name="length" select="count(param)"/> 1.87 + <xsl:for-each select="param"> 1.88 + <xsl:variable name="separator"> 1.89 + <xsl:choose> 1.90 + <xsl:when test="position()=$length"> 1.91 + <xsl:text></xsl:text> 1.92 + </xsl:when> 1.93 + <xsl:otherwise> 1.94 + <xsl:value-of select="$comma"/> 1.95 + </xsl:otherwise> 1.96 + </xsl:choose> 1.97 + </xsl:variable> 1.98 + <xsl:apply-templates select="." mode="signature"> 1.99 + <xsl:with-param name="comma" select="$separator"/> 1.100 + </xsl:apply-templates> 1.101 + </xsl:for-each> 1.102 +</xsl:template> 1.103 + 1.104 + 1.105 +<!-- remove jclass parameters that are jclass/jmethodID pairs. 1.106 + since the jclass was removed in JVMTI. 1.107 +--> 1.108 +<xsl:template match="param" mode="signature"> 1.109 + <xsl:param name="comma"/> 1.110 + <xsl:variable name="id" select="@id"/> 1.111 + <xsl:for-each select="child::*[position()=1]"> 1.112 + <xsl:if test="count(@method)=0"> 1.113 + <xsl:apply-templates select="." mode="signature"/> 1.114 + <xsl:text> </xsl:text> 1.115 + <xsl:value-of select="$id"/> 1.116 + <xsl:value-of select="$comma"/> 1.117 + </xsl:if> 1.118 + </xsl:for-each> 1.119 +</xsl:template> 1.120 + 1.121 + 1.122 +<xsl:template match="field" mode="signature"> 1.123 + <xsl:text> </xsl:text> 1.124 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.125 + <xsl:text> </xsl:text> 1.126 + <xsl:value-of select="@id"/> 1.127 + <xsl:text>; 1.128 +</xsl:text> 1.129 +</xsl:template> 1.130 + 1.131 +<xsl:template match="nullok" mode="funcdescription"> 1.132 + If 1.133 + <code> 1.134 + <xsl:value-of select="../../@id"/> 1.135 + </code> 1.136 + is 1.137 + <code>NULL</code>, <xsl:apply-templates/>. 1.138 +</xsl:template> 1.139 + 1.140 +<xsl:template match="vmbuf|allocfieldbuf|struct" mode="funcdescription"> 1.141 + <xsl:message terminate="yes"> 1.142 + vmbuf|allocfieldbuf|struct as type of function parameter 1.143 + </xsl:message> 1.144 +</xsl:template> 1.145 + 1.146 +<xsl:template match="ptrtype" mode="funcdescription"> 1.147 + <p/> 1.148 + <xsl:apply-templates select="nullok" mode="funcdescription"/> 1.149 +</xsl:template> 1.150 + 1.151 +<xsl:template match="inptr" mode="funcdescription"> 1.152 + <p/> 1.153 + <xsl:variable name="child" select="child::*[position()=1]"/> 1.154 + <xsl:text>Agent passes in a pointer</xsl:text> 1.155 + <xsl:if test="name($child)!='void'"> 1.156 + <xsl:text> to </xsl:text> 1.157 + <code> 1.158 + <xsl:apply-templates select="$child" mode="signature"/> 1.159 + </code> 1.160 + </xsl:if> 1.161 + <xsl:text>. </xsl:text> 1.162 + <xsl:apply-templates select="nullok" mode="funcdescription"/> 1.163 +</xsl:template> 1.164 + 1.165 +<xsl:template match="inbuf" mode="funcdescription"> 1.166 + <p/> 1.167 + <xsl:variable name="child" select="child::*[position()=1]"/> 1.168 + <xsl:text>Agent passes in </xsl:text> 1.169 + <xsl:choose> 1.170 + <xsl:when test="name($child)='void'"> 1.171 + <xsl:text> a pointer</xsl:text> 1.172 + </xsl:when> 1.173 + <xsl:otherwise> 1.174 + <xsl:text> an array of </xsl:text> 1.175 + <xsl:if test="count(@incount)=1 and @incount!=''"> 1.176 + <code> 1.177 + <xsl:value-of select="@incount"/> 1.178 + </code> 1.179 + <xsl:text> elements of </xsl:text> 1.180 + </xsl:if> 1.181 + <code> 1.182 + <xsl:apply-templates select="$child" mode="signature"/> 1.183 + </code> 1.184 + </xsl:otherwise> 1.185 + </xsl:choose> 1.186 + <xsl:text>. </xsl:text> 1.187 + <xsl:apply-templates select="nullok" mode="funcdescription"/> 1.188 +</xsl:template> 1.189 + 1.190 +<xsl:template match="outptr" mode="funcdescription"> 1.191 + <p/> 1.192 + <xsl:text>Agent passes a pointer to a </xsl:text> 1.193 + <code> 1.194 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.195 + </code> 1.196 + <xsl:text>. </xsl:text> 1.197 + <xsl:text>On return, the </xsl:text> 1.198 + <code> 1.199 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.200 + </code> 1.201 + <xsl:text> has been set. </xsl:text> 1.202 + <xsl:apply-templates select="nullok" mode="funcdescription"/> 1.203 + <xsl:apply-templates select="child::*[position()=1]" mode="returndescription"/> 1.204 +</xsl:template> 1.205 + 1.206 +<xsl:template match="allocbuf" mode="funcdescription"> 1.207 + <p/> 1.208 + <xsl:text>Agent passes a pointer to a </xsl:text> 1.209 + <code> 1.210 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.211 + <xsl:text>*</xsl:text> 1.212 + </code> 1.213 + <xsl:text>. </xsl:text> 1.214 + <xsl:text>On return, the </xsl:text> 1.215 + <code> 1.216 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.217 + <xsl:text>*</xsl:text> 1.218 + </code> 1.219 + <xsl:text> points to a newly allocated array</xsl:text> 1.220 + <xsl:choose> 1.221 + <xsl:when test="count(@outcount)=1 and @outcount!=''"> 1.222 + <xsl:text> of size </xsl:text> 1.223 + <code> 1.224 + <xsl:text>*</xsl:text> 1.225 + <xsl:value-of select="@outcount"/> 1.226 + </code> 1.227 + </xsl:when> 1.228 + <xsl:otherwise> 1.229 + <xsl:if test="count(@incount)=1 and @incount!=''"> 1.230 + <xsl:text> of size </xsl:text> 1.231 + <code> 1.232 + <xsl:value-of select="@incount"/> 1.233 + </code> 1.234 + </xsl:if> 1.235 + </xsl:otherwise> 1.236 + </xsl:choose> 1.237 + <xsl:text>. The array should be freed with </xsl:text> 1.238 + <a href="#Deallocate"><code>Deallocate</code></a> 1.239 + <xsl:text>. </xsl:text> 1.240 + <xsl:apply-templates select="nullok" mode="funcdescription"/> 1.241 + <xsl:apply-templates select="child::*[position()=1]" mode="returndescription"> 1.242 + <xsl:with-param name="plural" select="'plural'"/> 1.243 + </xsl:apply-templates> 1.244 +</xsl:template> 1.245 + 1.246 +<xsl:template match="allocallocbuf" mode="funcdescription"> 1.247 + <p/> 1.248 + <xsl:text>Agent passes a pointer to a </xsl:text> 1.249 + <code> 1.250 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.251 + <xsl:text>**</xsl:text> 1.252 + </code> 1.253 + <xsl:text>. </xsl:text> 1.254 + <xsl:text>On return, the </xsl:text> 1.255 + <code> 1.256 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.257 + <xsl:text>**</xsl:text> 1.258 + </code> 1.259 + <xsl:text> points to a newly allocated array</xsl:text> 1.260 + <xsl:choose> 1.261 + <xsl:when test="count(@outcount)=1 and @outcount!=''"> 1.262 + <xsl:text> of size </xsl:text> 1.263 + <code> 1.264 + <xsl:text>*</xsl:text> 1.265 + <xsl:value-of select="@outcount"/> 1.266 + </code> 1.267 + </xsl:when> 1.268 + <xsl:otherwise> 1.269 + <xsl:if test="count(@incount)=1 and @incount!=''"> 1.270 + <xsl:text> of size </xsl:text> 1.271 + <code> 1.272 + <xsl:value-of select="@incount"/> 1.273 + </code> 1.274 + </xsl:if> 1.275 + </xsl:otherwise> 1.276 + </xsl:choose> 1.277 + <xsl:text>, each element of which is also newly allocated. 1.278 + The array should be freed with </xsl:text> 1.279 + <a href="#Deallocate"><code>Deallocate</code></a> 1.280 + <xsl:text>. 1.281 + Each of the elements should be freed with </xsl:text> 1.282 + <a href="#Deallocate"><code>Deallocate</code></a> 1.283 + <xsl:text>. </xsl:text> 1.284 + <xsl:apply-templates select="nullok" mode="funcdescription"/> 1.285 + <xsl:apply-templates select="child::*[position()=1]" mode="returndescription"> 1.286 + <xsl:with-param name="plural" select="'plural'"/> 1.287 + </xsl:apply-templates> 1.288 +</xsl:template> 1.289 + 1.290 +<xsl:template match="outbuf" mode="funcdescription"> 1.291 + <p/> 1.292 + <xsl:text>Agent passes an array </xsl:text> 1.293 + <xsl:if test="count(@incount)=1 and @incount!=''"> 1.294 + <xsl:text>large enough to hold </xsl:text> 1.295 + <code> 1.296 + <xsl:value-of select="@incount"/> 1.297 + </code> 1.298 + <xsl:text> elements </xsl:text> 1.299 + </xsl:if> 1.300 + <xsl:text>of </xsl:text> 1.301 + <code> 1.302 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.303 + </code> 1.304 + <xsl:text>. The incoming values of the elements of the array are ignored. </xsl:text> 1.305 + <xsl:text>On return, </xsl:text> 1.306 + <xsl:if test="count(@outcount)=1 and @outcount!=''"> 1.307 + <code> 1.308 + <xsl:text>*</xsl:text> 1.309 + <xsl:value-of select="@outcount"/> 1.310 + </code> 1.311 + <xsl:text> of </xsl:text> 1.312 + </xsl:if> 1.313 + <xsl:text>the elements are set. </xsl:text> 1.314 + <xsl:apply-templates select="nullok" mode="funcdescription"/> 1.315 + <xsl:apply-templates select="child::*[position()=1]" mode="returndescription"> 1.316 + <xsl:with-param name="plural" select="'plural'"/> 1.317 + </xsl:apply-templates> 1.318 +</xsl:template> 1.319 + 1.320 +<xsl:template match="agentbuf" mode="funcdescription"> 1.321 + <p/> 1.322 + <xsl:apply-templates select="nullok" mode="funcdescription"/> 1.323 + <xsl:apply-templates select="child::*[position()=1]" mode="returndescription"> 1.324 + <xsl:with-param name="plural" select="'plural'"/> 1.325 + </xsl:apply-templates> 1.326 +</xsl:template> 1.327 + 1.328 +<xsl:template match="jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jobject|jvalue|jthreadGroup|enum|jint|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|varargs|struct" mode="funcdescription"> 1.329 +</xsl:template> 1.330 + 1.331 +<xsl:template match="jthread" mode="funcdescription"> 1.332 + <xsl:if test="count(@null)!=0"> 1.333 + If 1.334 + <code> 1.335 + <xsl:value-of select="../@id"/> 1.336 + </code> 1.337 + is 1.338 + <code>NULL</code>, the current thread is used. 1.339 + </xsl:if> 1.340 +</xsl:template> 1.341 + 1.342 +<xsl:template match="jmethodID|jfieldID|jframeID|jrawMonitorID|enum|jint|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|varargs" mode="returndescription"> 1.343 +</xsl:template> 1.344 + 1.345 +<xsl:template match="struct" mode="returndescription"> 1.346 + <xsl:param name="plural"/> 1.347 + <xsl:variable name="structname" select="."/> 1.348 + <xsl:for-each select="//typedef[@id=$structname]|//uniontypedef[@id=$structname]"> 1.349 + <xsl:for-each select="field"> 1.350 + <xsl:apply-templates select="child::*[position()=1]" mode="fieldreturndescription"> 1.351 + <xsl:with-param name="plural" select="$plural"/> 1.352 + </xsl:apply-templates> 1.353 + </xsl:for-each> 1.354 + </xsl:for-each> 1.355 +</xsl:template> 1.356 + 1.357 +<xsl:template match="jclass|jthread|jobject|jvalue|jthreadGroup" mode="returndescription"> 1.358 + <xsl:param name="plural"/> 1.359 + <xsl:text>The object</xsl:text> 1.360 + <xsl:if test="$plural='plural'"> 1.361 + <xsl:text>s</xsl:text> 1.362 + </xsl:if> 1.363 + <xsl:text> returned by </xsl:text> 1.364 + <code> 1.365 + <xsl:value-of select="../../@id"/> 1.366 + </code> 1.367 + <xsl:choose> 1.368 + <xsl:when test="$plural='plural'"> 1.369 + <xsl:text> are JNI local references and must be </xsl:text> 1.370 + </xsl:when> 1.371 + <xsl:otherwise> 1.372 + <xsl:text> is a JNI local reference and must be </xsl:text> 1.373 + </xsl:otherwise> 1.374 + </xsl:choose> 1.375 + <a href="#refs">managed</a>. 1.376 +</xsl:template> 1.377 + 1.378 +<xsl:template match="outptr|inptr|inbuf|agentbuf|allocbuf|allocallocbuf" mode="fieldreturndescription"> 1.379 + <xsl:variable name="field" select="ancestor::field"/> 1.380 + <xsl:message terminate="yes"> 1.381 + outptr, allocallocbuf, outbuf, vmbuf, allocbuf, inptr, inbuf or agentbuf as type of returned field: 1.382 + <xsl:value-of select="$field/@id"/> of <xsl:value-of select="$field/../@id"/> 1.383 + </xsl:message> 1.384 +</xsl:template> 1.385 + 1.386 +<xsl:template match="outbuf" mode="fieldreturndescription"> 1.387 + <!-- hand document this special case. 1.388 + --> 1.389 +</xsl:template> 1.390 + 1.391 +<xsl:template match="struct" mode="fieldreturndescription"> 1.392 + <xsl:param name="plural"/> 1.393 + <xsl:variable name="structname" select="."/> 1.394 + <xsl:for-each select="//typedef[@id=$structname]|//uniontypedef[@id=$structname]"> 1.395 + <xsl:for-each select="field"> 1.396 + <xsl:apply-templates select="child::*[position()=1]" mode="fieldreturndescription"> 1.397 + <xsl:with-param name="plural" select="$plural"/> 1.398 + </xsl:apply-templates> 1.399 + </xsl:for-each> 1.400 + </xsl:for-each> 1.401 +</xsl:template> 1.402 + 1.403 +<xsl:template match="allocfieldbuf" mode="fieldreturndescription"> 1.404 + <xsl:param name="plural"/> 1.405 + <xsl:variable name="field" select="ancestor::field"/> 1.406 + <xsl:text>The pointer</xsl:text> 1.407 + <xsl:if test="$plural='plural'"> 1.408 + <xsl:text>s</xsl:text> 1.409 + </xsl:if> 1.410 + <xsl:text> returned in the field </xsl:text> 1.411 + <code> 1.412 + <xsl:value-of select="$field/@id"/> 1.413 + </code> 1.414 + <xsl:text> of </xsl:text> 1.415 + <code> 1.416 + <xsl:value-of select="$field/../@id"/> 1.417 + </code> 1.418 + <xsl:choose> 1.419 + <xsl:when test="$plural='plural'"> 1.420 + <xsl:text> are newly allocated arrays. The arrays</xsl:text> 1.421 + </xsl:when> 1.422 + <xsl:otherwise> 1.423 + <xsl:text> is a newly allocated array. The array</xsl:text> 1.424 + </xsl:otherwise> 1.425 + </xsl:choose> 1.426 + <xsl:text> should be freed with </xsl:text> 1.427 + <a href="#Deallocate"><code>Deallocate</code></a> 1.428 + <xsl:text>. </xsl:text> 1.429 + 1.430 + <xsl:apply-templates select="child::*[position()=1]" mode="fieldreturndescription"> 1.431 + <xsl:with-param name="plural" select="'plural'"/> 1.432 + </xsl:apply-templates> 1.433 +</xsl:template> 1.434 + 1.435 +<xsl:template match="ptrtype|vmbuf|jmethodID|jfieldID|jframeID|jrawMonitorID|enum|jint|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void" mode="fieldreturndescription"> 1.436 +</xsl:template> 1.437 + 1.438 +<xsl:template match="jclass|jthread|jobject|jvalue|jthreadGroup" mode="fieldreturndescription"> 1.439 + <xsl:param name="plural"/> 1.440 + <xsl:variable name="field" select="ancestor::field"/> 1.441 + <xsl:text>The object</xsl:text> 1.442 + <xsl:if test="$plural='plural'"> 1.443 + <xsl:text>s</xsl:text> 1.444 + </xsl:if> 1.445 + <xsl:text> returned in the field </xsl:text> 1.446 + <code> 1.447 + <xsl:value-of select="$field/@id"/> 1.448 + </code> 1.449 + <xsl:text> of </xsl:text> 1.450 + <code> 1.451 + <xsl:value-of select="$field/../@id"/> 1.452 + </code> 1.453 + <xsl:choose> 1.454 + <xsl:when test="$plural='plural'"> 1.455 + <xsl:text> are JNI local references and must be </xsl:text> 1.456 + </xsl:when> 1.457 + <xsl:otherwise> 1.458 + <xsl:text> is a JNI local reference and must be </xsl:text> 1.459 + </xsl:otherwise> 1.460 + </xsl:choose> 1.461 + <a href="#refs">managed</a>. 1.462 +</xsl:template> 1.463 + 1.464 +<xsl:template match="nullok" mode="signature"> 1.465 +</xsl:template> 1.466 + 1.467 +<xsl:template match="jmethodID|jfieldID|jrawMonitorID|jclass|jthread|jobject|jvalue|jthreadGroup|jint|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|size_t|void" mode="signature"> 1.468 + <xsl:value-of select="name()"/> 1.469 +</xsl:template> 1.470 + 1.471 +<xsl:template match="jframeID" mode="signature"> 1.472 + <xsl:text>jint</xsl:text> 1.473 +</xsl:template> 1.474 + 1.475 +<xsl:template match="uchar" mode="signature"> 1.476 + <xsl:text>unsigned char</xsl:text> 1.477 +</xsl:template> 1.478 + 1.479 +<xsl:template match="enum|struct" mode="signature"> 1.480 + <xsl:value-of select="."/> 1.481 +</xsl:template> 1.482 + 1.483 +<xsl:template match="varargs" mode="signature"> 1.484 +</xsl:template> 1.485 + 1.486 +<xsl:template match="outptr|outbuf|allocfieldbuf" mode="signature"> 1.487 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.488 + <xsl:text>*</xsl:text> 1.489 +</xsl:template> 1.490 + 1.491 +<xsl:template match="ptrtype" mode="signature"> 1.492 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.493 +</xsl:template> 1.494 + 1.495 +<xsl:template match="inptr|inbuf|vmbuf" mode="signature"> 1.496 + <xsl:text>const </xsl:text> 1.497 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.498 + <xsl:text>*</xsl:text> 1.499 +</xsl:template> 1.500 + 1.501 +<xsl:template match="allocbuf|agentbuf" mode="signature"> 1.502 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.503 + <xsl:text>**</xsl:text> 1.504 +</xsl:template> 1.505 + 1.506 +<xsl:template match="allocallocbuf" mode="signature"> 1.507 + <xsl:apply-templates select="child::*[position()=1]" mode="signature"/> 1.508 + <xsl:text>***</xsl:text> 1.509 +</xsl:template> 1.510 + 1.511 +<xsl:template match="nullok" mode="link"> 1.512 +</xsl:template> 1.513 + 1.514 +<xsl:template match="jmethodID|jfieldID|jrawMonitorID|jclass|jthread|jobject|jvalue|jint|jchar|jlong|jfloat|jdouble|jlocation|jboolean|jthreadGroup" mode="link"> 1.515 + <a> 1.516 + <xsl:attribute name="href"> 1.517 + <xsl:text>#</xsl:text><xsl:value-of select="name()"/> 1.518 + </xsl:attribute> 1.519 + <xsl:value-of select="name()"/> 1.520 + </a> 1.521 +</xsl:template> 1.522 + 1.523 +<xsl:template match="jframeID" mode="link"> 1.524 + <a> 1.525 + <xsl:attribute name="href"> 1.526 + <xsl:text>#jint</xsl:text> 1.527 + </xsl:attribute> 1.528 + <xsl:text>jint</xsl:text> 1.529 + </a> 1.530 +</xsl:template> 1.531 + 1.532 +<xsl:template match="enum|struct" mode="link"> 1.533 + <a> 1.534 + <xsl:attribute name="href"> 1.535 + <xsl:text>#</xsl:text> 1.536 + <xsl:value-of select="."/> 1.537 + </xsl:attribute> 1.538 + <xsl:value-of select="."/> 1.539 + </a> 1.540 +</xsl:template> 1.541 + 1.542 +<xsl:template match="char|size_t|void" mode="link"> 1.543 + <xsl:value-of select="name()"/> 1.544 +</xsl:template> 1.545 + 1.546 +<xsl:template match="uchar" mode="link"> 1.547 + <xsl:text>unsigned char</xsl:text> 1.548 +</xsl:template> 1.549 + 1.550 +<xsl:template match="varargs" mode="link"> 1.551 + <xsl:text>...</xsl:text> 1.552 +</xsl:template> 1.553 + 1.554 +<xsl:template match="ptrtype" mode="link"> 1.555 + <xsl:apply-templates mode="link"/> 1.556 +</xsl:template> 1.557 + 1.558 +<xsl:template match="outptr|outbuf|allocfieldbuf" mode="link"> 1.559 + <xsl:apply-templates mode="link"/> 1.560 + <xsl:text>*</xsl:text> 1.561 +</xsl:template> 1.562 + 1.563 +<xsl:template match="inptr|inbuf|vmbuf" mode="link"> 1.564 + <xsl:text>const </xsl:text> 1.565 + <xsl:apply-templates mode="link"/> 1.566 + <xsl:text>*</xsl:text> 1.567 +</xsl:template> 1.568 + 1.569 +<xsl:template match="allocbuf|agentbuf" mode="link"> 1.570 + <xsl:apply-templates mode="link"/> 1.571 + <xsl:text>**</xsl:text> 1.572 +</xsl:template> 1.573 + 1.574 +<xsl:template match="allocallocbuf" mode="link"> 1.575 + <xsl:apply-templates mode="link"/> 1.576 + <xsl:text>***</xsl:text> 1.577 +</xsl:template> 1.578 + 1.579 +<xsl:template match="jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jobject|jvalue|jthreadGroup|jthread|jint|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|size_t|void" mode="btsig"> 1.580 + <xsl:value-of select="name()"/> 1.581 +</xsl:template> 1.582 + 1.583 +<xsl:template match="uchar" mode="btsig"> 1.584 + <xsl:text>unsigned char</xsl:text> 1.585 +</xsl:template> 1.586 + 1.587 +<xsl:template match="enum|struct" mode="btsig"> 1.588 + <xsl:value-of select="."/> 1.589 +</xsl:template> 1.590 + 1.591 +<xsl:template match="outbuf" mode="btsig"> 1.592 + <xsl:apply-templates select="child::*[position()=1]" mode="btsig"/> 1.593 + <xsl:text>*</xsl:text> 1.594 +</xsl:template> 1.595 + 1.596 +<xsl:template name="gentypedef"> 1.597 + <xsl:param name="tdef"/> 1.598 + <xsl:text>typedef struct { 1.599 +</xsl:text> 1.600 +<xsl:apply-templates select="$tdef/field" mode="signature"/> 1.601 + <xsl:text>} </xsl:text> 1.602 + <xsl:value-of select="$tdef/@id"/> 1.603 + <xsl:text>;</xsl:text> 1.604 +</xsl:template> 1.605 + 1.606 +<xsl:template name="genuniontypedef"> 1.607 + <xsl:param name="tdef"/> 1.608 + <xsl:text>typedef union { 1.609 +</xsl:text> 1.610 +<xsl:apply-templates select="$tdef/field" mode="signature"/> 1.611 + <xsl:text>} </xsl:text> 1.612 + <xsl:value-of select="$tdef/@id"/> 1.613 + <xsl:text>;</xsl:text> 1.614 +</xsl:template> 1.615 + 1.616 + 1.617 +<xsl:template match="capabilitiestypedef" mode="genstruct"> 1.618 + <xsl:variable name="caps" select="count(capabilityfield)"/> 1.619 + <xsl:text>typedef struct { 1.620 +</xsl:text> 1.621 + <xsl:apply-templates select="capabilityfield" mode="signature"/> 1.622 + <xsl:variable name="rem" select="$caps mod 16"/> 1.623 + <xsl:if test="$rem != 0"> 1.624 + <xsl:text> unsigned int : </xsl:text> 1.625 + <xsl:value-of select="16 - $rem"/> 1.626 + <xsl:text>; 1.627 +</xsl:text> 1.628 + </xsl:if> 1.629 + <xsl:if test="$caps <= 32"> 1.630 + <xsl:text> unsigned int : 16; 1.631 +</xsl:text> 1.632 + </xsl:if> 1.633 + <xsl:if test="$caps <= 48"> 1.634 + <xsl:text> unsigned int : 16; 1.635 +</xsl:text> 1.636 + </xsl:if> 1.637 + <xsl:if test="$caps <= 64"> 1.638 + <xsl:text> unsigned int : 16; 1.639 +</xsl:text> 1.640 + </xsl:if> 1.641 + <xsl:if test="$caps <= 80"> 1.642 + <xsl:text> unsigned int : 16; 1.643 +</xsl:text> 1.644 + </xsl:if> 1.645 + <xsl:if test="$caps <= 96"> 1.646 + <xsl:text> unsigned int : 16; 1.647 +</xsl:text> 1.648 + </xsl:if> 1.649 + <xsl:if test="$caps <= 112"> 1.650 + <xsl:text> unsigned int : 16; 1.651 +</xsl:text> 1.652 + </xsl:if> 1.653 + <xsl:text>} </xsl:text> 1.654 + <xsl:value-of select="@id"/> 1.655 + <xsl:text>;</xsl:text> 1.656 +</xsl:template> 1.657 + 1.658 +<xsl:template match="capabilityfield" mode="signature"> 1.659 + <xsl:text> unsigned int </xsl:text> 1.660 + <xsl:value-of select="@id"/> 1.661 + <xsl:text> : 1; 1.662 +</xsl:text> 1.663 +</xsl:template> 1.664 + 1.665 +<xsl:template match="constants" mode="enum"> 1.666 + <xsl:text> 1.667 +typedef </xsl:text> 1.668 + <xsl:apply-templates select="." mode="enumcore"/> 1.669 + <xsl:text> </xsl:text> 1.670 + <xsl:value-of select="@id"/> 1.671 + <xsl:text>;</xsl:text> 1.672 +</xsl:template> 1.673 + 1.674 +<xsl:template match="constants" mode="constants"> 1.675 + <xsl:text> 1.676 +</xsl:text> 1.677 + <xsl:apply-templates select="." mode="enumcore"/> 1.678 + <xsl:text>;</xsl:text> 1.679 +</xsl:template> 1.680 + 1.681 +<xsl:template match="constants" mode="enumcore"> 1.682 + <xsl:text>enum { 1.683 +</xsl:text> 1.684 + <xsl:for-each select="constant"> 1.685 + <xsl:if test="position() > 1"> 1.686 + <xsl:text>, 1.687 +</xsl:text> 1.688 + </xsl:if> 1.689 + <xsl:apply-templates select="." mode="enum"/> 1.690 + </xsl:for-each> 1.691 + <xsl:text> 1.692 +}</xsl:text> 1.693 +</xsl:template> 1.694 + 1.695 +<xsl:template match="event" mode="enum"> 1.696 + <xsl:text> </xsl:text> 1.697 + <xsl:value-of select="@const"/> 1.698 + <xsl:text> = </xsl:text> 1.699 + <xsl:value-of select="@num"/> 1.700 +</xsl:template> 1.701 + 1.702 +<xsl:template match="constant|errorid" mode="enum"> 1.703 + <xsl:text> </xsl:text> 1.704 + <xsl:value-of select="@id"/> 1.705 + <xsl:text> = </xsl:text> 1.706 + <xsl:value-of select="@num"/> 1.707 +</xsl:template> 1.708 + 1.709 + 1.710 + <xsl:template name="eventStruct"> 1.711 + <xsl:param name="events"/> 1.712 + <xsl:param name="index"/> 1.713 + <xsl:param name="started"/> 1.714 + <xsl:param name="comment"/> 1.715 + <xsl:variable name="thisEvent" select="$events[@num=$index]"/> 1.716 + <xsl:choose> 1.717 + <xsl:when test="count($thisEvent)=1"> 1.718 + <xsl:if test="$comment='Yes'"> 1.719 + <xsl:text> /* </xsl:text> 1.720 + <xsl:number value="$index" format=" 1"/> 1.721 + <xsl:text> : </xsl:text> 1.722 + <xsl:value-of select="$thisEvent/@label"/> 1.723 + <xsl:text> */ 1.724 +</xsl:text> 1.725 + </xsl:if> 1.726 + <xsl:text> jvmtiEvent</xsl:text> 1.727 + <xsl:value-of select="$thisEvent/@id"/> 1.728 + <xsl:text> </xsl:text> 1.729 + <xsl:value-of select="$thisEvent/@id"/> 1.730 + <xsl:text>; 1.731 +</xsl:text> 1.732 + </xsl:when> 1.733 + <xsl:otherwise> 1.734 + <xsl:if test="$started"> 1.735 + <xsl:if test="$comment='Yes'"> 1.736 + <xsl:text> /* </xsl:text> 1.737 + <xsl:number value="$index" format=" 1"/> 1.738 + <xsl:text> */ 1.739 +</xsl:text> 1.740 + </xsl:if> 1.741 + <xsl:text> jvmtiEventReserved reserved</xsl:text> 1.742 + <xsl:value-of select="$index"/> 1.743 + <xsl:text>; 1.744 +</xsl:text> 1.745 + </xsl:if> 1.746 + </xsl:otherwise> 1.747 +</xsl:choose> 1.748 + <xsl:if test="count($events[@num > $index]) > 0"> 1.749 + <xsl:call-template name="eventStruct"> 1.750 + <xsl:with-param name="events" select="$events"/> 1.751 + <xsl:with-param name="index" select="1+$index"/> 1.752 + <xsl:with-param name="started" select="$started or count($thisEvent)=1"/> 1.753 + <xsl:with-param name="comment" select="$comment"/> 1.754 + </xsl:call-template> 1.755 + </xsl:if> 1.756 + </xsl:template> 1.757 + 1.758 + 1.759 +<!-- ======== HotSpotType ======== --> 1.760 + 1.761 +<xsl:template match="parameters" mode="HotSpotSig"> 1.762 + <xsl:variable name="length" select="count(param)"/> 1.763 + <xsl:for-each select="param"> 1.764 + <xsl:variable name="separator"> 1.765 + <xsl:choose> 1.766 + <xsl:when test="position()=$length"> 1.767 + <xsl:text></xsl:text> 1.768 + </xsl:when> 1.769 + <xsl:otherwise> 1.770 + <xsl:text>, </xsl:text> 1.771 + </xsl:otherwise> 1.772 + </xsl:choose> 1.773 + </xsl:variable> 1.774 + <xsl:apply-templates select="." mode="HotSpotSig"> 1.775 + <xsl:with-param name="comma" select="$separator"/> 1.776 + </xsl:apply-templates> 1.777 + </xsl:for-each> 1.778 +</xsl:template> 1.779 + 1.780 +<xsl:template match="param" mode="HotSpotSig"> 1.781 + <xsl:param name="comma"/> 1.782 + <xsl:variable name="result"> 1.783 + <xsl:apply-templates select="child::*[position()=1]" mode="HotSpotType"/> 1.784 + </xsl:variable> 1.785 + <xsl:if test="string-length($result)!=0"> 1.786 + <xsl:value-of select="$result"/> 1.787 + <xsl:text> </xsl:text> 1.788 + <xsl:apply-templates select="child::*[position()=1]" mode="HotSpotName"> 1.789 + <xsl:with-param name="name" select="@id"/> 1.790 + </xsl:apply-templates> 1.791 + <xsl:value-of select="$comma"/> 1.792 + </xsl:if> 1.793 +</xsl:template> 1.794 + 1.795 +<xsl:template match="jthread" mode="HotSpotType"> 1.796 + <xsl:choose> 1.797 + <xsl:when test="count(@impl)=0 or not(contains(@impl,'noconvert'))"> 1.798 + <xsl:text>JavaThread*</xsl:text> 1.799 + </xsl:when> 1.800 + <xsl:otherwise> 1.801 + <xsl:value-of select="name()"/> 1.802 + </xsl:otherwise> 1.803 + </xsl:choose> 1.804 +</xsl:template> 1.805 + 1.806 +<xsl:template match="jrawMonitorID" mode="HotSpotType"> 1.807 + <xsl:text>JvmtiRawMonitor *</xsl:text> 1.808 +</xsl:template> 1.809 + 1.810 +<xsl:template match="jframeID" mode="HotSpotType"> 1.811 + <xsl:text>jint</xsl:text> 1.812 +</xsl:template> 1.813 + 1.814 +<xsl:template match="jmethodID" mode="HotSpotType"> 1.815 + <xsl:text>Method*</xsl:text> 1.816 +</xsl:template> 1.817 + 1.818 +<xsl:template match="jfieldID" mode="HotSpotType"> 1.819 + <xsl:text>fieldDescriptor*</xsl:text> 1.820 +</xsl:template> 1.821 + 1.822 +<xsl:template match="jclass" mode="HotSpotType"> 1.823 + <!-- 1.824 + classes passed as part of a class/method or class/field pair are used 1.825 + by the wrapper to get the internal type but are not needed by nor 1.826 + passed to the implementation layer. 1.827 + --> 1.828 + <xsl:if test="count(@method|@field)=0"> 1.829 + <xsl:text>oop</xsl:text> 1.830 + </xsl:if> 1.831 +</xsl:template> 1.832 + 1.833 +<xsl:template match="nullok" mode="HotSpotType"> 1.834 +</xsl:template> 1.835 + 1.836 +<xsl:template match="jobject|jvalue|jthreadGroup|enum|jint|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|struct" mode="HotSpotType"> 1.837 + <xsl:apply-templates select="." mode="btsig"/> 1.838 +</xsl:template> 1.839 + 1.840 +<xsl:template match="varargs" mode="HotSpotType"> 1.841 + <xsl:text> </xsl:text> 1.842 +</xsl:template> 1.843 + 1.844 +<xsl:template match="outptr|outbuf|allocfieldbuf" mode="HotSpotType"> 1.845 + <xsl:apply-templates select="child::*[position()=1]" mode="btsig"/> 1.846 + <xsl:text>*</xsl:text> 1.847 +</xsl:template> 1.848 + 1.849 +<xsl:template match="ptrtype" mode="HotSpotType"> 1.850 + <xsl:apply-templates select="child::*[position()=1]" mode="btsig"/> 1.851 +</xsl:template> 1.852 + 1.853 +<xsl:template match="inptr|inbuf|vmbuf" mode="HotSpotType"> 1.854 + <xsl:text>const </xsl:text> 1.855 + <xsl:apply-templates select="child::*[position()=1]" mode="btsig"/> 1.856 + <xsl:text>*</xsl:text> 1.857 +</xsl:template> 1.858 + 1.859 +<xsl:template match="allocbuf|agentbuf" mode="HotSpotType"> 1.860 + <xsl:apply-templates select="child::*[position()=1]" mode="btsig"/> 1.861 + <xsl:text>**</xsl:text> 1.862 +</xsl:template> 1.863 + 1.864 +<xsl:template match="allocallocbuf" mode="HotSpotType"> 1.865 + <xsl:apply-templates select="child::*[position()=1]" mode="btsig"/> 1.866 + <xsl:text>***</xsl:text> 1.867 +</xsl:template> 1.868 + 1.869 +<!-- ======== HotSpotName ======== --> 1.870 + 1.871 +<xsl:template match="jthread" mode="HotSpotName"> 1.872 + <xsl:param name="name"/> 1.873 + <xsl:choose> 1.874 + <xsl:when test="count(@impl)=0 or not(contains(@impl,'noconvert'))"> 1.875 + <xsl:text>java_thread</xsl:text> 1.876 + </xsl:when> 1.877 + <xsl:otherwise> 1.878 + <xsl:value-of select="$name"/> 1.879 + </xsl:otherwise> 1.880 + </xsl:choose> 1.881 +</xsl:template> 1.882 + 1.883 +<xsl:template match="jrawMonitorID" mode="HotSpotName"> 1.884 + <xsl:text>rmonitor</xsl:text> 1.885 +</xsl:template> 1.886 + 1.887 +<xsl:template match="jframeID" mode="HotSpotName"> 1.888 + <xsl:text>depth</xsl:text> 1.889 +</xsl:template> 1.890 + 1.891 +<xsl:template match="jmethodID" mode="HotSpotName"> 1.892 + <xsl:text>method_oop</xsl:text> 1.893 +</xsl:template> 1.894 + 1.895 +<xsl:template match="jfieldID" mode="HotSpotName"> 1.896 + <xsl:text>fdesc_ptr</xsl:text> 1.897 +</xsl:template> 1.898 + 1.899 +<xsl:template match="jclass" mode="HotSpotName"> 1.900 + <!-- 1.901 + classes passed as part of a class/method or class/field pair are used 1.902 + by the wrapper to get the internal type but are not needed by nor 1.903 + passed to the implementation layer. This value is checked for empty. 1.904 + --> 1.905 + <xsl:if test="count(@method|@field)=0"> 1.906 + <xsl:text>k_mirror</xsl:text> 1.907 + </xsl:if> 1.908 +</xsl:template> 1.909 + 1.910 +<xsl:template match="nullok" mode="HotSpotName"> 1.911 +</xsl:template> 1.912 + 1.913 +<xsl:template match="jobject|jvalue|jthreadGroup|enum|jint|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|varargs|struct|outptr|outbuf|allocfieldbuf|ptrtype|inptr|inbuf|vmbuf|allocbuf|agentbuf|allocallocbuf" mode="HotSpotName"> 1.914 + <xsl:param name="name"/> 1.915 + <xsl:value-of select="$name"/> 1.916 +</xsl:template> 1.917 + 1.918 +<!-- ======== HotSpotValue ======== --> 1.919 + 1.920 + 1.921 +<xsl:template match="parameters" mode="HotSpotValue"> 1.922 + <xsl:variable name="length" select="count(param)"/> 1.923 + <xsl:for-each select="param"> 1.924 + <xsl:variable name="separator"> 1.925 + <xsl:choose> 1.926 + <xsl:when test="position()=$length"> 1.927 + <xsl:text></xsl:text> 1.928 + </xsl:when> 1.929 + <xsl:otherwise> 1.930 + <xsl:text>, </xsl:text> 1.931 + </xsl:otherwise> 1.932 + </xsl:choose> 1.933 + </xsl:variable> 1.934 + <xsl:apply-templates select="." mode="HotSpotValue"> 1.935 + <xsl:with-param name="comma" select="$separator"/> 1.936 + </xsl:apply-templates> 1.937 + </xsl:for-each> 1.938 +</xsl:template> 1.939 + 1.940 +<xsl:template match="param" mode="HotSpotValue"> 1.941 + <xsl:param name="comma"/> 1.942 + <xsl:variable name="result"> 1.943 + <xsl:apply-templates select="child::*[position()=1]" mode="HotSpotValue"> 1.944 + <xsl:with-param name="name" select="@id"/> 1.945 + </xsl:apply-templates> 1.946 + </xsl:variable> 1.947 + <xsl:if test="string-length($result)!=0"> 1.948 + <xsl:value-of select="$result"/> 1.949 + <xsl:value-of select="$comma"/> 1.950 + </xsl:if> 1.951 +</xsl:template> 1.952 + 1.953 +<xsl:template match="jframeID|jmethodID|jrawMonitorID|jthread|jclass|nullok" mode="HotSpotValue"> 1.954 + <xsl:param name="name"/> 1.955 + <xsl:apply-templates select="." mode="HotSpotName"> 1.956 + <xsl:with-param name="name" select="$name"/> 1.957 + </xsl:apply-templates> 1.958 +</xsl:template> 1.959 + 1.960 +<xsl:template match="jfieldID" mode="HotSpotValue"> 1.961 + <xsl:text>&fdesc</xsl:text> 1.962 +</xsl:template> 1.963 + 1.964 +<xsl:template match="jobject|jvalue|jthreadGroup|enum|jint|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|struct|outptr|outbuf|allocfieldbuf|ptrtype|inptr|inbuf|vmbuf|allocbuf|agentbuf|allocallocbuf" mode="HotSpotValue"> 1.965 + <xsl:param name="name"/> 1.966 + <xsl:value-of select="$name"/> 1.967 +</xsl:template> 1.968 + 1.969 +<xsl:template match="varargs" mode="HotSpotValue"> 1.970 + <xsl:text>NULL</xsl:text> 1.971 +</xsl:template> 1.972 + 1.973 +</xsl:stylesheet> 1.974 +