Fri, 07 Jan 2011 10:42:32 -0500
7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
Summary: Track allocated bytes in Thread's, update on TLAB retirement and direct allocation in Eden and tenured, add JNI methods for ThreadMXBean.
Reviewed-by: coleenp, kvn, dholmes, ysr
1 <?xml version="1.0"?>
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" version="1.0">
28 <xsl:import href="jvmtiLib.xsl"/>
30 <xsl:output method="html" indent="yes"
31 doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
32 doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
34 <xsl:param name="development"></xsl:param>
36 <xsl:template match="specification">
37 <html>
38 <head>
39 <title>
40 <xsl:value-of select="@label"/>
41 <xsl:text> </xsl:text>
42 <xsl:call-template name="showversion"/>
43 </title>
44 <style type="text/css">
45 td.tableHeader {font-size: larger}
46 </style>
47 </head>
48 <body>
49 <table border="0" width="100%">
50 <tr>
51 <td align="center">
52 <xsl:apply-templates select="title"/>
53 </td>
54 </tr>
55 </table>
56 <ul>
57 <li>
58 <a href="#SpecificationIntro"><b>Introduction</b></a>
59 <ul>
60 <xsl:for-each select="intro">
61 <li>
62 <a>
63 <xsl:attribute name="href">#<xsl:value-of select="@id"/>
64 </xsl:attribute>
65 <b><xsl:value-of select="@label"/></b>
66 </a>
67 </li>
68 </xsl:for-each>
69 </ul>
70 </li>
71 <li>
72 <a href="#FunctionSection"><b>Functions</b></a>
73 <ul>
74 <xsl:for-each select="functionsection/intro">
75 <li>
76 <a>
77 <xsl:attribute name="href">#<xsl:value-of select="@id"/>
78 </xsl:attribute>
79 <b><xsl:value-of select="@label"/></b>
80 </a>
81 </li>
82 </xsl:for-each>
83 <li>
84 <a href="#FunctionIndex"><b>Function Index</b></a>
85 <ul>
86 <xsl:for-each select="functionsection/category">
87 <li>
88 <a>
89 <xsl:attribute name="href">#<xsl:value-of select="@id"/>
90 </xsl:attribute>
91 <b><xsl:value-of select="@label"/></b>
92 </a>
93 </li>
94 </xsl:for-each>
95 </ul>
96 </li>
97 <li>
98 <a href="#ErrorSection"><b>Error Codes</b></a>
99 </li>
100 </ul>
101 </li>
102 <li>
103 <a href="#EventSection"><b>Events</b></a>
104 <ul>
105 <li>
106 <a href="#EventIndex"><b>Event Index</b></a>
107 </li>
108 </ul>
109 </li>
110 <li>
111 <a href="#DataSection"><b>Data Types</b></a>
112 <ul>
113 <xsl:for-each select="//basetypes">
114 <li>
115 <a>
116 <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
117 <b>
118 <xsl:value-of select="@label"/>
119 </b>
120 </a>
121 </li>
122 </xsl:for-each>
123 <li>
124 <a href="#StructureTypeDefinitions"><b>Structure Type Definitions</b></a>
125 </li>
126 <li>
127 <a href="#FunctionTypeDefinitions"><b>Function Type Definitions</b></a>
128 </li>
129 <li>
130 <a href="#EnumerationDefinitions"><b>Enumeration Definitions</b></a>
131 </li>
132 <li>
133 <a href="#FunctionTable"><b>Function Table</b></a>
134 </li>
135 </ul>
136 </li>
137 <li>
138 <a href="#ConstantIndex"><b>Constant Index</b></a>
139 </li>
140 <xsl:if test="$development = 'Show'">
141 <li>
142 <a href="#SpecificationIssues"><b>Issues</b></a>
143 <ul>
144 <xsl:for-each select="issuessection/intro">
145 <li>
146 <a>
147 <xsl:attribute name="href">#<xsl:value-of select="@id"/>
148 </xsl:attribute>
149 <b><xsl:value-of select="@label"/></b>
150 </a>
151 </li>
152 </xsl:for-each>
153 </ul>
154 </li>
155 </xsl:if>
156 <li>
157 <a href="#ChangeHistory"><b>Change History</b></a>
158 </li>
159 </ul>
160 <!-- end table of contents, begin body -->
161 <p/>
162 <hr noshade="noshade" size="3"/>
163 <p/>
164 <p id="SpecificationIntro"/>
165 <xsl:apply-templates select="intro"/>
166 <p id="FunctionSection"/>
167 <xsl:apply-templates select="functionsection"/>
168 <p id="ErrorSection"/>
169 <xsl:apply-templates select="errorsection"/>
170 <p id="DataSection"/>
171 <xsl:apply-templates select="datasection"/>
172 <p id="EventSection"/>
173 <xsl:apply-templates select="eventsection"/>
174 <p id="ConstantIndex"/>
175 <p/>
176 <hr noshade="noshade" size="3"/>
177 <h2>
178 Constant Index
179 </h2>
180 <blockquote>
181 <xsl:apply-templates select="//constant" mode="index">
182 <xsl:sort select="@id"/>
183 </xsl:apply-templates>
184 </blockquote>
185 <xsl:if test="$development = 'Show'">
186 <p id="SpecificationIssues"/>
187 <p/>
188 <hr noshade="noshade" size="3"/>
189 <h2>
190 <xsl:value-of select="issuessection/@label"/>
191 </h2>
192 <xsl:apply-templates select="issuessection/intro"/>
193 </xsl:if>
194 <p id="ChangeHistory"/>
195 <xsl:apply-templates select="changehistory"/>
196 </body>
197 </html>
198 </xsl:template>
200 <xsl:template match="title">
201 <h1>
202 <xsl:apply-templates/>
203 </h1>
204 <h3>
205 <xsl:value-of select="@subtitle"/>
206 <xsl:text> </xsl:text>
207 <xsl:call-template name="showbasicversion"/>
208 </h3>
209 </xsl:template>
211 <xsl:template match="functionsection">
212 <p/>
213 <hr noshade="noshade" size="3"/>
214 <h2>
215 <xsl:value-of select="@label"/>
216 </h2>
217 <xsl:apply-templates select="intro"/>
218 <h3 id="FunctionIndex">Function Index</h3>
219 <ul>
220 <xsl:apply-templates select="category" mode="index"/>
221 </ul>
222 <xsl:apply-templates select="category" mode="body"/>
223 </xsl:template>
225 <xsl:template match="category" mode="index">
226 <li>
227 <a>
228 <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
229 <b>
230 <xsl:value-of select="@label"/>
231 </b>
232 </a>
233 <ul>
234 <xsl:apply-templates select="function[count(@hide)=0]" mode="index"/>
235 </ul>
236 </li>
237 </xsl:template>
239 <xsl:template match="function|callback" mode="index">
240 <li>
241 <a>
242 <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
243 <xsl:apply-templates select="synopsis" mode="index"/>
244 </a>
245 </li>
246 </xsl:template>
248 <xsl:template match="synopsis" mode="index">
249 <xsl:value-of select="."/>
250 </xsl:template>
252 <xsl:template match="category" mode="body">
253 <p>
254 <xsl:attribute name="id">
255 <xsl:value-of select="@id"/>
256 </xsl:attribute>
257 </p>
258 <hr noshade="noshade" size="3"/>
259 <h2 align="center"><xsl:value-of select="@label"/></h2>
260 <xsl:value-of select="@label"/> functions:
261 <ul>
262 <xsl:apply-templates select="function[count(@hide)=0]" mode="index"/>
263 </ul>
264 <xsl:variable name="calltypes" select="callback"/>
265 <xsl:if test="count($calltypes)!=0">
266 <xsl:value-of select="@label"/> function types:
267 <ul>
268 <xsl:apply-templates select="$calltypes" mode="index"/>
269 </ul>
270 </xsl:if>
271 <xsl:variable name="cattypes"
272 select="(descendant::typedef|descendant::uniontypedef|descendant::capabilitiestypedef|descendant::constants[@kind='enum'])"/>
273 <xsl:if test="count($cattypes)!=0">
274 <xsl:value-of select="@label"/> types:
275 <ul>
276 <xsl:for-each select="$cattypes">
277 <li>
278 <a>
279 <xsl:attribute name="href">
280 <xsl:text>#</xsl:text>
281 <xsl:value-of select="@id"/>
282 </xsl:attribute>
283 <code><xsl:value-of select="@id"/></code>
284 </a>
285 <xsl:text> - </xsl:text>
286 <xsl:value-of select="@label"/>
287 </li>
288 </xsl:for-each>
289 </ul>
290 </xsl:if>
291 <xsl:variable name="catconst"
292 select="(descendant::constants[@kind!='enum'])"/>
293 <xsl:if test="count($catconst)!=0">
294 <xsl:value-of select="@label"/> flags and constants:
295 <ul>
296 <xsl:for-each select="$catconst">
297 <li>
298 <a>
299 <xsl:attribute name="href">
300 <xsl:text>#</xsl:text>
301 <xsl:value-of select="@id"/>
302 </xsl:attribute>
303 <xsl:value-of select="@label"/>
304 </a>
305 </li>
306 </xsl:for-each>
307 </ul>
308 </xsl:if>
309 <xsl:apply-templates select="intro|typedef|uniontypedef|capabilitiestypedef"/>
310 <p/>
311 <xsl:apply-templates select="function[count(@hide)=0]|callback" mode="body"/>
312 </xsl:template>
314 <xsl:template match="function" mode="body">
315 <hr noshade="noshade" width="100%" size="1">
316 <xsl:attribute name="id">
317 <xsl:value-of select="@id"/>
318 </xsl:attribute>
320 </hr>
321 <xsl:apply-templates select="synopsis" mode="body"/>
322 <blockquote>
323 <xsl:apply-templates select="typedef" mode="code"/>
324 <xsl:apply-templates select="descendant::constants[@kind='enum']" mode="signature"/>
325 <pre>
326 <xsl:text>jvmtiError
327 </xsl:text>
328 <xsl:value-of select="@id"/>(jvmtiEnv* env<xsl:apply-templates select="parameters" mode="signature"/>)</pre>
329 </blockquote>
330 <xsl:apply-templates select="description"/>
331 <xsl:apply-templates select="." mode="generalinfo"/>
332 <xsl:apply-templates select="capabilities|eventcapabilities"/>
333 <xsl:apply-templates select="typedef" mode="body"/>
334 <xsl:apply-templates select="parameters" mode="body"/>
335 <xsl:apply-templates select="." mode="errors"/>
336 </xsl:template>
338 <xsl:template match="function" mode="generalinfo">
339 <table border="1" cellpadding="3" cellspacing="0" width="100%">
340 <tr bgcolor="#EEEEFF">
341 <td >
342 <a href="#jvmtiPhase">Phase</a>
343 </td>
344 <td>
345 <a href="#heapCallbacks">Callback Safe</a>
346 </td>
347 <td>
348 <a href="#FunctionTable">Position</a>
349 </td>
350 <td>
351 <a href="#ChangeHistory">Since</a>
352 </td>
353 </tr>
354 <tr>
355 <td >
356 <xsl:apply-templates select="." mode="phaseinfo"/>
357 </td>
358 <td>
359 <xsl:apply-templates select="." mode="callbacksafeinfo"/>
360 </td>
361 <td>
362 <xsl:value-of select="@num"/>
363 </td>
364 <td>
365 <xsl:value-of select="@since"/>
366 </td>
367 </tr>
368 </table>
369 </xsl:template>
371 <xsl:template match="event" mode="generalinfo">
372 <table border="1" cellpadding="3" cellspacing="0" width="100%">
373 <tr bgcolor="#EEEEFF">
374 <td >
375 <a href="#jvmtiPhase">Phase</a>
376 </td>
377 <td>
378 <a href="#jvmtiEvent">Event Type</a>
379 </td>
380 <td>
381 <a href="#jvmtiEvent">Number</a>
382 </td>
383 <td>
384 <a href="#enablingevents">Enabling</a>
385 </td>
386 <td>
387 <a href="#ChangeHistory">Since</a>
388 </td>
389 </tr>
390 <tr>
391 <td >
392 <xsl:apply-templates select="." mode="phaseinfo"/>
393 </td>
394 <td>
395 <code><xsl:value-of select="@const"/></code>
396 </td>
397 <td>
398 <xsl:value-of select="@num"/>
399 </td>
400 <td>
401 <code><a href="#SetEventNotificationMode">SetEventNotificationMode</a>(JVMTI_ENABLE,
402 <xsl:value-of select="@const"/>, NULL)</code>
403 </td>
404 <td>
405 <xsl:value-of select="@since"/>
406 </td>
407 </tr>
408 </table>
409 </xsl:template>
411 <xsl:template match="function" mode="phaseinfo">
412 may
413 <xsl:choose>
414 <xsl:when test="count(@phase) = 0 or @phase = 'live'">
415 only be called during the live
416 </xsl:when>
417 <xsl:otherwise>
418 <xsl:choose>
419 <xsl:when test="@phase = 'onload'">
420 only be called during the OnLoad or the live
421 </xsl:when>
422 <xsl:otherwise>
423 <xsl:choose>
424 <xsl:when test="@phase = 'any'">
425 be called during any
426 </xsl:when>
427 <xsl:otherwise>
428 <xsl:choose>
429 <xsl:when test="@phase = 'start'">
430 only be called during the start or the live
431 </xsl:when>
432 <xsl:otherwise>
433 <xsl:choose>
434 <xsl:when test="@phase = 'onloadOnly'">
435 only be called during the OnLoad
436 </xsl:when>
437 <xsl:otherwise>
438 <xsl:message terminate="yes">
439 bad phase - <xsl:value-of select="@phase"/>
440 </xsl:message>
441 </xsl:otherwise>
442 </xsl:choose>
443 </xsl:otherwise>
444 </xsl:choose>
445 </xsl:otherwise>
446 </xsl:choose>
447 </xsl:otherwise>
448 </xsl:choose>
449 </xsl:otherwise>
450 </xsl:choose>
451 phase
452 </xsl:template>
455 <xsl:template match="event" mode="phaseinfo">
456 sent
457 <xsl:choose>
458 <xsl:when test="count(@phase) = 0 or @phase = 'live'">
459 only during the live
460 </xsl:when>
461 <xsl:otherwise>
462 <xsl:choose>
463 <xsl:when test="@phase = 'any'">
464 during the primordial, start or live
465 </xsl:when>
466 <xsl:otherwise>
467 <xsl:choose>
468 <xsl:when test="@phase = 'start'">
469 during the start or live
470 </xsl:when>
471 <xsl:otherwise>
472 <xsl:message terminate="yes">
473 bad phase - <xsl:value-of select="@phase"/>
474 </xsl:message>
475 </xsl:otherwise>
476 </xsl:choose>
477 </xsl:otherwise>
478 </xsl:choose>
479 </xsl:otherwise>
480 </xsl:choose>
481 phase
482 </xsl:template>
485 <xsl:template match="function" mode="callbacksafeinfo">
486 <xsl:choose>
487 <xsl:when test="contains(@callbacksafe,'safe')">
488 This function may be called from the callbacks to the
489 <a href="#Heap">Heap</a> iteration functions, or from the
490 event handlers for the
491 <a href="#GarbageCollectionStart"><code>GarbageCollectionStart</code></a>,
492 <a href="#GarbageCollectionFinish"><code>GarbageCollectionFinish</code></a>,
493 and <a href="#ObjectFree"><code>ObjectFree</code></a> events.
494 </xsl:when>
495 <xsl:otherwise>
496 No
497 </xsl:otherwise>
498 </xsl:choose>
499 </xsl:template>
502 <xsl:template match="callback" mode="body">
503 <hr noshade="noshade" width="100%" size="1">
504 <xsl:attribute name="id">
505 <xsl:value-of select="@id"/>
506 </xsl:attribute>
507 </hr>
508 <xsl:apply-templates select="synopsis" mode="body"/>
509 <table cellpadding="0" cellspacing="0" border="0" width="90%" align="center"><tr><td>
510 <blockquote>
511 <pre>
512 <xsl:text>typedef </xsl:text>
513 <xsl:apply-templates select="child::*[position()=1]" mode="signature"/>
514 <xsl:text> (JNICALL *</xsl:text>
515 <xsl:value-of select="@id"/>
516 <xsl:text>)
517 (</xsl:text>
518 <xsl:for-each select="parameters">
519 <xsl:apply-templates select="param[position()=1]" mode="signature"/>
520 <xsl:for-each select="param[position()>1]">
521 <xsl:text>,
522 </xsl:text>
523 <xsl:apply-templates select="." mode="signature"/>
524 </xsl:for-each>
525 </xsl:for-each>
526 <xsl:text>);</xsl:text>
527 </pre>
528 </blockquote>
529 <xsl:apply-templates select="description"/>
530 <xsl:apply-templates select="parameters" mode="body"/>
531 </td></tr></table>
532 </xsl:template>
534 <xsl:template match="synopsis" mode="body">
535 <h3><xsl:value-of select="."/></h3>
536 </xsl:template>
538 <xsl:template match="eventsection">
539 <p/>
540 <hr noshade="noshade" size="3"/>
541 <h2>
542 <xsl:value-of select="@label"/>
543 </h2>
544 <xsl:apply-templates select="intro"/>
545 <blockquote>
546 <pre>
547 <xsl:text>
548 typedef struct {
549 </xsl:text>
550 <xsl:call-template name="eventStruct">
551 <xsl:with-param name="events" select="event"/>
552 <xsl:with-param name="index" select="0"/>
553 <xsl:with-param name="started" select="false"/>
554 <xsl:with-param name="comment" select="'No'"/>
555 </xsl:call-template>
556 <xsl:text>} jvmtiEventCallbacks;
557 </xsl:text>
558 </pre>
559 </blockquote>
560 <p/>
561 <hr noshade="noshade" width="100%" size="1"/>
562 <h3 id="EventIndex">Event Index</h3>
563 <ul>
564 <xsl:apply-templates select="event" mode="index">
565 <xsl:sort select="@label"/>
566 </xsl:apply-templates>
567 </ul>
568 <xsl:apply-templates select="event" mode="body"/>
569 </xsl:template>
571 <xsl:template match="event" mode="index">
572 <li>
573 <a>
574 <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
575 <b>
576 <xsl:value-of select="@label"/>
577 </b>
578 </a>
579 </li>
580 </xsl:template>
582 <xsl:template match="event" mode="body">
583 <p>
584 <xsl:attribute name="id">
585 <xsl:value-of select="@id"/>
586 </xsl:attribute>
587 </p>
588 <hr noshade="noshade" size="3"/>
589 <h2><xsl:value-of select="@label"/></h2>
590 <p/>
591 <blockquote>
592 <xsl:apply-templates select="typedef" mode="code"/>
593 <pre>
594 <xsl:text>void JNICALL
595 </xsl:text>
596 <xsl:value-of select="@id"/>(jvmtiEnv *jvmti_env<xsl:apply-templates select="parameters" mode="signature"/>)</pre>
597 </blockquote>
598 <xsl:apply-templates select="description"/>
599 <xsl:apply-templates select="." mode="generalinfo"/>
600 <xsl:apply-templates select="typedef" mode="body"/>
601 <xsl:apply-templates select="capabilities"/>
602 <xsl:apply-templates select="parameters" mode="body"/>
603 </xsl:template>
605 <xsl:template match="capabilitiestypedef" mode="code">
606 <blockquote>
607 <pre>
608 <xsl:apply-templates select="." mode="genstruct"/>
609 </pre>
610 </blockquote>
611 </xsl:template>
613 <xsl:template match="typedef" mode="code">
614 <pre>
615 <xsl:call-template name="gentypedef">
616 <xsl:with-param name="tdef" select="."/>
617 </xsl:call-template>
618 </pre>
619 </xsl:template>
621 <xsl:template match="uniontypedef" mode="code">
622 <pre>
623 <xsl:call-template name="genuniontypedef">
624 <xsl:with-param name="tdef" select="."/>
625 </xsl:call-template>
626 </pre>
627 </xsl:template>
629 <xsl:template match="capabilitiestypedef|typedef|uniontypedef" mode="description">
630 <xsl:apply-templates select="description"/>
631 </xsl:template>
633 <xsl:template match="capabilitiestypedef|typedef|uniontypedef">
634 <h4>
635 <xsl:attribute name="id">
636 <xsl:value-of select="@id"/>
637 </xsl:attribute>
638 <xsl:value-of select="@label"/>
639 </h4>
640 <xsl:apply-templates select="." mode="description"/>
641 <blockquote>
642 <xsl:apply-templates select="." mode="code"/>
643 <xsl:apply-templates select="." mode="justbody"/>
644 </blockquote>
645 </xsl:template>
647 <xsl:template match="constants" mode="signature">
648 <pre>
649 <xsl:apply-templates select="." mode="enum"/>
650 </pre>
651 </xsl:template>
653 <xsl:template match="typedef|uniontypedef" mode="body">
654 <p>
655 <xsl:attribute name="id">
656 <xsl:value-of select="@id"/>
657 </xsl:attribute>
658 </p>
659 <xsl:apply-templates select="." mode="justbody"/>
660 </xsl:template>
662 <xsl:template match="typedef|uniontypedef" mode="justbody">
663 <table border="1" cellpadding="3" cellspacing="0" width="100%">
664 <tr bgcolor="#CCCCFF">
665 <td colspan="3" align="center" class="tableHeader">
666 <code><xsl:value-of select="@id"/></code> - <xsl:value-of select="@label"/>
667 </td>
668 </tr>
669 <tr bgcolor="#EEEEFF">
670 <td>
671 Field
672 </td>
673 <td>
674 Type
675 </td>
676 <td>
677 Description
678 </td>
679 </tr>
680 <xsl:apply-templates select="field" mode="body"/>
681 </table>
682 </xsl:template>
684 <xsl:template match="capabilitiestypedef" mode="body">
685 <p>
686 <xsl:attribute name="id">
687 <xsl:value-of select="@id"/>
688 </xsl:attribute>
689 </p>
690 <xsl:apply-templates select="." mode="justbody"/>
691 </xsl:template>
693 <xsl:template match="capabilitiestypedef" mode="justbody">
694 <table border="1" cellpadding="3" cellspacing="0" width="100%">
695 <tr bgcolor="#CCCCFF">
696 <td colspan="3" align="center" class="tableHeader">
697 <code><xsl:value-of select="@id"/></code> - <xsl:value-of select="@label"/>
698 </td>
699 </tr>
700 <tr bgcolor="#EEEEFF">
701 <td colspan="3">
702 All types are <code>unsigned int : 1</code>
703 </td>
704 </tr>
705 <tr bgcolor="#EEEEFF">
706 <td>
707 Field
708 </td>
709 <td>
710 Description
711 </td>
712 <td>
713 <a href="#ChangeHistory">Since</a>
714 </td>
715 </tr>
716 <xsl:apply-templates select="capabilityfield" mode="body"/>
717 </table>
718 </xsl:template>
720 <xsl:template match="typedef|uniontypedef|capabilitiestypedef|constants" mode="tableentry">
721 <tr>
722 <td>
723 <a>
724 <xsl:attribute name="href">
725 <xsl:text>#</xsl:text>
726 <xsl:value-of select="@id"/>
727 </xsl:attribute>
728 <code><xsl:value-of select="@id"/></code>
729 </a>
730 </td>
731 <td>
732 <xsl:value-of select="@label"/>
733 </td>
734 </tr>
735 </xsl:template>
737 <xsl:template match="field" mode="body">
738 <tr>
739 <td>
740 <code>
741 <xsl:attribute name="id">
742 <xsl:value-of select="../@id"/>.<xsl:value-of select="@id"/>
743 </xsl:attribute>
744 <xsl:value-of select="@id"/>
745 </code>
746 </td>
747 <td>
748 <code>
749 <xsl:apply-templates select="child::*[position()=1]" mode="link"/>
750 </code>
751 </td>
752 <td>
753 <xsl:apply-templates select="description" mode="brief"/>
754 </td>
755 </tr>
756 </xsl:template>
758 <xsl:template match="capabilityfield" mode="body">
759 <tr>
760 <td>
761 <code>
762 <xsl:choose>
763 <xsl:when test="@disp1!=''">
764 <xsl:value-of select="@disp1"/>
765 <br></br>
766 <xsl:value-of select="@disp2"/>
767 </xsl:when>
768 <xsl:otherwise>
769 <xsl:value-of select="@id"/>
770 </xsl:otherwise>
771 </xsl:choose>
772 </code>
773 </td>
774 <td>
775 <a>
776 <xsl:attribute name="name">
777 <xsl:value-of select="../@id"/>.<xsl:value-of select="@id"/>
778 </xsl:attribute>
779 </a>
780 <xsl:apply-templates select="description" mode="brief"/>
781 </td>
782 <td>
783 <xsl:value-of select="@since"/>
784 </td>
785 </tr>
786 </xsl:template>
788 <xsl:template match="callback" mode="tableentry">
789 <tr>
790 <td>
791 <a>
792 <xsl:attribute name="href">
793 <xsl:text>#</xsl:text>
794 <xsl:value-of select="@id"/>
795 </xsl:attribute>
796 <code>
797 <xsl:value-of select="@id"/>
798 </code>
799 </a>
800 </td>
801 <td>
802 <xsl:apply-templates select="synopsis" mode="index"/>
803 </td>
804 </tr>
805 </xsl:template>
807 <xsl:template match="constants">
808 <blockquote>
809 <a>
810 <xsl:attribute name="name">
811 <xsl:value-of select="@id"/>
812 </xsl:attribute>
813 </a>
814 <table border="1" cellpadding="3" cellspacing="0">
815 <tr bgcolor="#CCCCFF">
816 <td colspan="3" align="center" class="tableHeader">
817 <xsl:value-of select="@label"/>
818 <xsl:if test="@kind='enum'">
819 <xsl:text> (</xsl:text>
820 <code>
821 <xsl:value-of select="@id"/>
822 </code>
823 <xsl:text>)</xsl:text>
824 </xsl:if>
825 </td>
826 </tr>
827 <tr bgcolor="#EEEEFF">
828 <td>
829 Constant
830 </td>
831 <td>
832 Value
833 </td>
834 <td>
835 Description
836 </td>
837 </tr>
838 <xsl:apply-templates select="constant" mode="body"/>
839 </table>
840 </blockquote>
841 </xsl:template>
843 <xsl:template match="constant" mode="index">
844 <a>
845 <xsl:attribute name="href">#<xsl:value-of select="@id"/>
846 </xsl:attribute>
847 <code>
848 <xsl:value-of select="@id"/>
849 </code>
850 </a>
851 <br/>
852 </xsl:template>
854 <xsl:template match="constant" mode="body">
855 <tr>
856 <td>
857 <code>
858 <xsl:attribute name="id">
859 <xsl:value-of select="@id"/>
860 </xsl:attribute>
861 <xsl:value-of select="@id"/>
862 </code>
863 </td>
864 <td align="right">
865 <xsl:value-of select="@num"/>
866 </td>
867 <td>
868 <xsl:apply-templates/>
869 </td>
870 </tr>
871 </xsl:template>
873 <xsl:template match="basetypes">
874 <p>
875 <xsl:attribute name="id">
876 <xsl:value-of select="@id"/>
877 </xsl:attribute>
878 </p>
879 <table border="1" cellpadding="3" cellspacing="0" width="100%">
880 <tr bgcolor="#CCCCFF">
881 <td colspan="2" align="center" class="tableHeader">
882 <xsl:value-of select="@label"/>
883 </td>
884 </tr>
885 <tr bgcolor="#EEEEFF">
886 <td>
887 Type
888 </td>
889 <td>
890 Description
891 </td>
892 </tr>
893 <xsl:apply-templates select="basetype" mode="body"/>
894 </table>
895 </xsl:template>
897 <xsl:template match="basetype" mode="body">
898 <xsl:choose>
899 <xsl:when test="count(definition)=0">
900 <tr>
901 <td>
902 <code>
903 <xsl:value-of select="@id"/>
904 </code>
905 </td>
906 <td>
907 <a>
908 <xsl:attribute name="name">
909 <xsl:value-of select="@id"/>
910 </xsl:attribute>
911 </a>
912 <xsl:apply-templates select="description" mode="brief"/>
913 </td>
914 </tr>
915 </xsl:when>
916 <xsl:otherwise>
917 <tr>
918 <td rowspan="2">
919 <code>
920 <xsl:value-of select="@id"/>
921 </code>
922 </td>
923 <td>
924 <a>
925 <xsl:attribute name="name">
926 <xsl:value-of select="@id"/>
927 </xsl:attribute>
928 </a>
929 <xsl:apply-templates select="description" mode="brief"/>
930 </td>
931 </tr>
932 <tr>
933 <td>
934 <pre>
935 <xsl:apply-templates select="definition"/>
936 </pre>
937 </td>
938 </tr>
939 </xsl:otherwise>
940 </xsl:choose>
941 </xsl:template>
943 <xsl:template match="description">
944 <xsl:apply-templates/>
945 <p/>
946 </xsl:template>
948 <xsl:template match="description" mode="brief">
949 <xsl:apply-templates/>
950 </xsl:template>
952 <xsl:template match="fieldlink">
953 <a>
954 <xsl:attribute name="href">#<xsl:value-of select="@struct"/>.<xsl:value-of select="@id"/></xsl:attribute>
955 <xsl:choose>
956 <xsl:when test=".=''">
957 <code>
958 <xsl:value-of select="@id"/>
959 </code>
960 </xsl:when>
961 <xsl:otherwise>
962 <xsl:apply-templates/>
963 </xsl:otherwise>
964 </xsl:choose>
965 </a>
966 </xsl:template>
968 <xsl:template match="paramlink">
969 <a>
970 <xsl:attribute name="href">#<xsl:value-of select="ancestor::function/@id|ancestor::event/@id"/>.<xsl:value-of select="@id"/>
971 </xsl:attribute>
972 <xsl:choose>
973 <xsl:when test=".=''">
974 <code>
975 <xsl:value-of select="@id"/>
976 </code>
977 </xsl:when>
978 <xsl:otherwise>
979 <xsl:apply-templates/>
980 </xsl:otherwise>
981 </xsl:choose>
982 </a>
983 </xsl:template>
985 <xsl:template match="eventlink|errorlink|typelink|datalink|functionlink">
986 <a>
987 <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
988 <xsl:choose>
989 <xsl:when test=".=''">
990 <code>
991 <xsl:value-of select="@id"/>
992 </code>
993 </xsl:when>
994 <xsl:otherwise>
995 <xsl:apply-templates/>
996 </xsl:otherwise>
997 </xsl:choose>
998 </a>
999 </xsl:template>
1001 <xsl:template match="functionphaselist">
1002 <xsl:variable name="phase" select="@phase"/>
1003 <ul>
1004 <xsl:for-each select="/specification/functionsection/category/function[@phase=$phase and count(@hide)=0]">
1005 <li>
1006 <a>
1007 <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1008 <b>
1009 <xsl:value-of select="@id"/>
1010 </b>
1011 </a>
1012 </li>
1013 </xsl:for-each>
1014 </ul>
1015 </xsl:template>
1017 <xsl:template match="eventphaselist">
1018 <xsl:variable name="phase" select="@phase"/>
1019 <ul>
1020 <xsl:for-each select="//eventsection/event[@phase=$phase]">
1021 <li>
1022 <a>
1023 <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1024 <b>
1025 <xsl:value-of select="@id"/>
1026 </b>
1027 </a>
1028 </li>
1029 </xsl:for-each>
1030 </ul>
1031 </xsl:template>
1033 <xsl:template match="externallink">
1034 <a>
1035 <xsl:attribute name="href">
1036 <xsl:value-of select="@id"/>
1037 </xsl:attribute>
1038 <xsl:value-of select="."/>
1039 </a>
1040 </xsl:template>
1042 <xsl:template match="vmspeclink">
1043 <xsl:if test="count(@id)=1">
1044 <a>
1045 <xsl:attribute name="href">
1046 <xsl:text>http://java.sun.com/docs/books/vmspec/2nd-edition/html/</xsl:text>
1047 <xsl:value-of select="@id"/>
1048 </xsl:attribute>
1049 <xsl:value-of select="@name"/>
1050 </a>
1051 <xsl:text> </xsl:text>
1052 <xsl:choose>
1053 <xsl:when test="count(@preposition)=1">
1054 <xsl:value-of select="@preposition"/>
1055 </xsl:when>
1056 <xsl:otherwise>
1057 <xsl:text>of</xsl:text>
1058 </xsl:otherwise>
1059 </xsl:choose>
1060 <xsl:text> the </xsl:text>
1061 </xsl:if>
1062 <a>
1063 <xsl:attribute name="href">
1064 <xsl:text>http://java.sun.com/docs/books/vmspec/</xsl:text>
1065 </xsl:attribute>
1066 <i>
1067 <xsl:text>Java Virtual Machine Specification</xsl:text>
1068 </i>
1069 </a>
1070 </xsl:template>
1072 <xsl:template match="internallink">
1073 <a>
1074 <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1075 <xsl:apply-templates/>
1076 </a>
1077 </xsl:template>
1079 <xsl:template match="parameters" mode="body">
1080 <p/>
1081 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1082 <tr bgcolor="#CCCCFF">
1083 <td colspan="3" align="center" class="tableHeader">
1084 Parameters
1085 </td>
1086 </tr>
1087 <tr bgcolor="#EEEEFF">
1088 <td>
1089 Name
1090 </td>
1091 <td>
1092 Type
1093 </td>
1094 <td>
1095 Description
1096 </td>
1097 </tr>
1098 <xsl:apply-templates select="param[count(jclass/@method)=0]" mode="body"/>
1099 </table>
1100 </xsl:template>
1102 <xsl:template match="param" mode="body">
1103 <tr>
1104 <td>
1105 <code>
1106 <xsl:attribute name="id">
1107 <xsl:value-of select="../../@id"/>.<xsl:value-of select="@id"/>
1108 </xsl:attribute>
1109 <xsl:value-of select="@id"/>
1110 </code>
1111 </td>
1112 <td>
1113 <code>
1114 <xsl:apply-templates select="child::*[position()=1]" mode="link"/>
1115 </code>
1116 </td>
1117 <td>
1118 <xsl:apply-templates select="description" mode="brief"/>
1119 <xsl:if test="count(ancestor::function)=1">
1120 <xsl:apply-templates select="child::*[position()=1]" mode="funcdescription"/>
1121 </xsl:if>
1122 </td>
1123 </tr>
1124 </xsl:template>
1126 <xsl:template match="capabilities">
1127 <p/>
1128 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1129 <tr bgcolor="#CCCCFF">
1130 <td colspan="2" align="center" class="tableHeader">
1131 Capabilities
1132 </td>
1133 </tr>
1134 <xsl:choose>
1135 <xsl:when test="count(required)=0">
1136 <tr>
1137 <td colspan="2">
1138 <b>Required Functionality</b>
1139 </td>
1140 </tr>
1141 </xsl:when>
1142 <xsl:otherwise>
1143 <tr>
1144 <td colspan="2">
1145 <b>Optional Functionality:</b> might not be implemented for all
1146 virtual machines.
1147 <xsl:choose>
1148 <xsl:when test="count(required)=1">
1149 The following capability
1150 </xsl:when>
1151 <xsl:otherwise>
1152 One of the following capabilities
1153 </xsl:otherwise>
1154 </xsl:choose>
1155 (as returned by
1156 <a href="#GetCapabilities"><code>GetCapabilities</code></a>)
1157 must be true to use this
1158 <xsl:choose>
1159 <xsl:when test="ancestor::function">
1160 function.
1161 </xsl:when>
1162 <xsl:otherwise>
1163 event.
1164 </xsl:otherwise>
1165 </xsl:choose>
1166 </td>
1167 </tr>
1168 <tr bgcolor="#EEEEFF">
1169 <td >
1170 Capability
1171 </td>
1172 <td>
1173 Effect
1174 </td>
1175 </tr>
1176 <xsl:apply-templates select="required"/>
1177 </xsl:otherwise>
1178 </xsl:choose>
1179 <xsl:if test="count(capability)!=0">
1180 <tr bgcolor="#CCCCFF">
1181 <td colspan="2" align="center">
1182 Optional Features
1183 </td>
1184 </tr>
1185 <xsl:if test="count(required)=0">
1186 <tr bgcolor="#EEEEFF">
1187 <td >
1188 Capability
1189 </td>
1190 <td>
1191 Effect
1192 </td>
1193 </tr>
1194 </xsl:if>
1195 <xsl:apply-templates select="capability"/>
1196 </xsl:if>
1197 </table>
1198 </xsl:template>
1200 <xsl:template match="eventcapabilities">
1201 <p/>
1202 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1203 <tr bgcolor="#CCCCFF">
1204 <td colspan="2" align="center" class="tableHeader">
1205 Capabilities
1206 </td>
1207 </tr>
1208 <tr>
1209 <td colspan="2">
1210 <b>Required Functionality</b>
1211 </td>
1212 </tr>
1213 <tr bgcolor="#CCCCFF">
1214 <td colspan="2" align="center">
1215 Event Enabling Capabilities
1216 </td>
1217 </tr>
1218 <tr bgcolor="#EEEEFF">
1219 <td >
1220 Capability
1221 </td>
1222 <td>
1223 Events
1224 </td>
1225 </tr>
1226 <xsl:for-each select="//capabilityfield">
1227 <xsl:variable name="capa" select="@id"/>
1228 <xsl:variable name="events" select="//event[capabilities/required/@id=$capa]"/>
1229 <xsl:if test="count($events)">
1230 <tr>
1231 <td>
1232 <a>
1233 <xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/>
1234 </xsl:attribute>
1235 <code>
1236 <xsl:value-of select="@id"/>
1237 </code>
1238 </a>
1239 </td>
1240 <td>
1241 <xsl:for-each select="$events">
1242 <a>
1243 <xsl:attribute name="href">#<xsl:value-of select="@id"/>
1244 </xsl:attribute>
1245 <code>
1246 <xsl:value-of select="@id"/>
1247 </code>
1248 </a>
1249 <br/>
1250 </xsl:for-each>
1251 </td>
1252 </tr>
1253 </xsl:if>
1254 </xsl:for-each>
1255 </table>
1256 </xsl:template>
1258 <xsl:template match="capability|required">
1259 <tr>
1260 <td>
1261 <a>
1262 <xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/>
1263 </xsl:attribute>
1264 <code>
1265 <xsl:value-of select="@id"/>
1266 </code>
1267 </a>
1268 </td>
1269 <td>
1270 <xsl:choose>
1271 <xsl:when test=".=''">
1272 <xsl:variable name="desiredID" select="@id"/>
1273 <xsl:for-each select="//capabilityfield[@id=$desiredID]">
1274 <xsl:apply-templates select="description" mode="brief"/>
1275 </xsl:for-each>
1276 </xsl:when>
1277 <xsl:otherwise>
1278 <xsl:apply-templates/>
1279 </xsl:otherwise>
1280 </xsl:choose>
1281 </td>
1282 </tr>
1283 </xsl:template>
1285 <xsl:template match="function" mode="errors">
1286 <xsl:variable name="haserrors">
1287 <xsl:apply-templates select="capabilities/required" mode="haserrors"/>
1288 <xsl:apply-templates select="errors/error" mode="haserrors"/>
1289 <xsl:apply-templates select="parameters/param" mode="haserrors"/>
1290 </xsl:variable>
1291 <p/>
1292 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1293 <tr bgcolor="#CCCCFF">
1294 <td colspan="2" align="center" class="tableHeader">
1295 Errors
1296 </td>
1297 </tr>
1298 <xsl:choose>
1299 <xsl:when test="contains($haserrors,'yes')">
1300 <tr>
1301 <td colspan="2">
1302 This function returns either a
1303 <a href="#universal-error">universal error</a>
1304 or one of the following errors
1305 </td>
1306 </tr>
1307 <tr bgcolor="#EEEEFF">
1308 <td>
1309 Error
1310 </td>
1311 <td>
1312 Description
1313 </td>
1314 </tr>
1315 <xsl:apply-templates select="capabilities/required" mode="errors"/>
1316 <xsl:apply-templates select="errors/error"/>
1317 <xsl:apply-templates select="parameters/param" mode="errors"/>
1318 </xsl:when>
1319 <xsl:otherwise>
1320 <tr>
1321 <td colspan="2">
1322 This function returns a
1323 <a href="#universal-error">universal error</a>
1324 </td>
1325 </tr>
1326 </xsl:otherwise>
1327 </xsl:choose>
1328 </table>
1329 </xsl:template>
1331 <xsl:template match="required" mode="haserrors">
1332 yes
1333 </xsl:template>
1335 <xsl:template match="required" mode="errors">
1336 <tr>
1337 <td>
1338 <a href="#JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
1339 <code>
1340 JVMTI_ERROR_MUST_POSSESS_CAPABILITY
1341 </code>
1342 </a>
1343 </td>
1344 <td>
1345 The environment does not possess the capability
1346 <a>
1347 <xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/></xsl:attribute>
1348 <code>
1349 <xsl:value-of select="@id"/>
1350 </code>
1351 </a>.
1352 Use <a href="#AddCapabilities"><code>AddCapabilities</code></a>.
1353 </td>
1354 </tr>
1355 </xsl:template>
1357 <xsl:template match="param" mode="haserrors">
1358 <xsl:apply-templates mode="haserrors"/>
1359 </xsl:template>
1361 <xsl:template match="param" mode="errors">
1362 <xsl:apply-templates select="." mode="errors1"/>
1363 <xsl:apply-templates select="." mode="errors2"/>
1364 </xsl:template>
1366 <xsl:template match="param" mode="errors1">
1367 <xsl:variable name="haserrors">
1368 <xsl:apply-templates mode="haserrors"/>
1369 </xsl:variable>
1370 <xsl:if test="contains($haserrors,'yes')!=0">
1371 <xsl:variable name="erroridraw">
1372 <xsl:apply-templates mode="errorid"/>
1373 </xsl:variable>
1374 <xsl:variable name="errorid" select="normalize-space($erroridraw)"/>
1375 <tr>
1376 <td>
1377 <a>
1378 <xsl:attribute name="href">#<xsl:value-of select="$errorid"/></xsl:attribute>
1379 <code>
1380 <xsl:value-of select="$errorid"/>
1381 </code>
1382 </a>
1383 </td>
1384 <td>
1385 <xsl:apply-templates mode="errordesc">
1386 <xsl:with-param name="id" select="@id"/>
1387 </xsl:apply-templates>
1388 </td>
1389 </tr>
1390 </xsl:if>
1391 </xsl:template>
1393 <xsl:template match="param" mode="errors2">
1394 <xsl:variable name="haserrors2">
1395 <xsl:apply-templates mode="haserrors2"/>
1396 </xsl:variable>
1397 <xsl:if test="contains($haserrors2,'yes')!=0">
1398 <xsl:variable name="erroridraw2">
1399 <xsl:apply-templates mode="errorid2"/>
1400 </xsl:variable>
1401 <xsl:variable name="errorid2" select="normalize-space($erroridraw2)"/>
1402 <tr>
1403 <td>
1404 <a>
1405 <xsl:attribute name="href">#<xsl:value-of select="$errorid2"/></xsl:attribute>
1406 <code>
1407 <xsl:value-of select="$errorid2"/>
1408 </code>
1409 </a>
1410 </td>
1411 <td>
1412 <xsl:apply-templates mode="errordesc2">
1413 <xsl:with-param name="id" select="@id"/>
1414 </xsl:apply-templates>
1415 </td>
1416 </tr>
1417 </xsl:if>
1418 </xsl:template>
1420 <xsl:template match="description" mode="haserrors">
1421 </xsl:template>
1423 <xsl:template match="description" mode="errorid">
1424 </xsl:template>
1426 <xsl:template match="description" mode="errordesc">
1427 </xsl:template>
1429 <xsl:template match="jmethodID|jfieldID|jframeID|jrawMonitorID|jthread|jthreadGroup|jobject|enum|jlocation" mode="haserrors">
1430 yes
1431 </xsl:template>
1433 <xsl:template match="jclass" mode="haserrors">
1434 <xsl:if test="count(@method)=0">
1435 yes
1436 </xsl:if>
1437 </xsl:template>
1439 <xsl:template match="description|jclass|jfieldID|jrawMonitorID|
1440 jthreadGroup|jobject|enum|jlocation|jvalue|jchar|jint|jlong|jfloat|jdouble|jboolean|
1441 char|uchar|size_t|void|varargs|struct|
1442 ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="haserrors2">
1443 </xsl:template>
1445 <xsl:template match="jmethodID" mode="haserrors2">
1446 <xsl:if test="count(@native)=1 and contains(@native,'error')">
1447 yes
1448 </xsl:if>
1449 </xsl:template>
1451 <xsl:template match="jthread" mode="haserrors2">
1452 <xsl:if test="count(@started)=0 or contains(@started,'yes') or @started=''">
1453 yes
1454 </xsl:if>
1455 </xsl:template>
1457 <xsl:template match="jframeID" mode="haserrors2">
1458 yes
1459 </xsl:template>
1461 <xsl:template match="description" mode="errorid2">
1462 </xsl:template>
1464 <xsl:template match="description" mode="errordesc2">
1465 </xsl:template>
1467 <xsl:template match="jmethodID" mode="errorid">
1468 <xsl:text>JVMTI_ERROR_INVALID_METHODID</xsl:text>
1469 </xsl:template>
1471 <xsl:template match="jmethodID" mode="errorid2">
1472 <xsl:text>JVMTI_ERROR_NATIVE_METHOD</xsl:text>
1473 </xsl:template>
1475 <xsl:template match="jmethodID" mode="errordesc">
1476 <xsl:param name="id"/>
1477 <xsl:apply-templates select="." mode="paramlink"/>
1478 <xsl:text> is not a jmethodID.</xsl:text>
1479 </xsl:template>
1481 <xsl:template match="jmethodID" mode="errordesc2">
1482 <xsl:param name="id"/>
1483 <xsl:apply-templates select="." mode="paramlink"/>
1484 <xsl:text> is a native method.</xsl:text>
1485 </xsl:template>
1487 <xsl:template match="jfieldID" mode="errorid">
1488 <xsl:text>JVMTI_ERROR_INVALID_FIELDID</xsl:text>
1489 </xsl:template>
1491 <xsl:template match="jfieldID" mode="errordesc">
1492 <xsl:param name="id"/>
1493 <xsl:apply-templates select="." mode="paramlink"/>
1494 <xsl:text> is not a jfieldID.</xsl:text>
1495 </xsl:template>
1497 <xsl:template match="jframeID" mode="errorid">
1498 <xsl:text>JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:text>
1499 </xsl:template>
1501 <xsl:template match="jframeID" mode="errorid2">
1502 <xsl:text>JVMTI_ERROR_NO_MORE_FRAMES</xsl:text>
1503 </xsl:template>
1505 <xsl:template match="jframeID" mode="errordesc">
1506 <xsl:param name="id"/>
1507 <xsl:apply-templates select="." mode="paramlink"/>
1508 <xsl:text> is less than zero.</xsl:text>
1509 </xsl:template>
1511 <xsl:template match="jframeID" mode="errordesc2">
1512 <xsl:param name="id"/>
1513 <xsl:text>There are no stack frames at the specified </xsl:text>
1514 <xsl:apply-templates select="." mode="paramlink"/>
1515 <xsl:text>.</xsl:text>
1516 </xsl:template>
1518 <xsl:template match="jrawMonitorID" mode="errorid">
1519 <xsl:text>JVMTI_ERROR_INVALID_MONITOR</xsl:text>
1520 </xsl:template>
1522 <xsl:template match="jrawMonitorID" mode="errordesc">
1523 <xsl:param name="id"/>
1524 <xsl:apply-templates select="." mode="paramlink"/>
1525 <xsl:text> is not a jrawMonitorID.</xsl:text>
1526 </xsl:template>
1528 <xsl:template match="jclass" mode="errorid">
1529 <xsl:text>JVMTI_ERROR_INVALID_CLASS</xsl:text>
1530 </xsl:template>
1532 <xsl:template match="jclass" mode="errordesc">
1533 <xsl:param name="id"/>
1534 <xsl:apply-templates select="." mode="paramlink"/>
1535 <xsl:text> is not a class object or the class has been unloaded.</xsl:text>
1536 </xsl:template>
1538 <xsl:template match="jthread" mode="errorid">
1539 <xsl:text>JVMTI_ERROR_INVALID_THREAD</xsl:text>
1540 </xsl:template>
1542 <xsl:template match="jthread" mode="errorid2">
1543 <xsl:text>JVMTI_ERROR_THREAD_NOT_ALIVE</xsl:text>
1544 </xsl:template>
1546 <xsl:template match="jthread" mode="errordesc">
1547 <xsl:param name="id"/>
1548 <xsl:apply-templates select="." mode="paramlink"/>
1549 <xsl:text> is not a thread object.</xsl:text>
1550 </xsl:template>
1552 <xsl:template match="jthread" mode="errordesc2">
1553 <xsl:param name="id"/>
1554 <xsl:apply-templates select="." mode="paramlink"/>
1555 <xsl:text> is not live (has not been started or is now dead).</xsl:text>
1556 </xsl:template>
1558 <xsl:template match="jthreadGroup" mode="errorid">
1559 <xsl:text>JVMTI_ERROR_INVALID_THREAD_GROUP</xsl:text>
1560 </xsl:template>
1562 <xsl:template match="jthreadGroup" mode="errordesc">
1563 <xsl:param name="id"/>
1564 <xsl:apply-templates select="." mode="paramlink"/>
1565 <xsl:text> is not a thread group object.</xsl:text>
1566 </xsl:template>
1568 <xsl:template match="jobject" mode="errorid">
1569 <xsl:text>JVMTI_ERROR_INVALID_OBJECT</xsl:text>
1570 </xsl:template>
1572 <xsl:template match="jobject" mode="errordesc">
1573 <xsl:param name="id"/>
1574 <xsl:apply-templates select="." mode="paramlink"/>
1575 <xsl:text> is not an object.</xsl:text>
1576 </xsl:template>
1578 <xsl:template match="enum" mode="errorid">
1579 <xsl:choose>
1580 <xsl:when test=".='jvmtiEvent'">
1581 <xsl:text>JVMTI_ERROR_INVALID_EVENT_TYPE</xsl:text>
1582 </xsl:when>
1583 <xsl:otherwise>
1584 <xsl:text>JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:text>
1585 </xsl:otherwise>
1586 </xsl:choose>
1587 </xsl:template>
1589 <xsl:template match="enum" mode="errordesc">
1590 <xsl:param name="id"/>
1591 <xsl:apply-templates select="." mode="paramlink"/>
1592 <xsl:text> is not a </xsl:text>
1593 <xsl:value-of select="."/>
1594 <xsl:text>.</xsl:text>
1595 </xsl:template>
1597 <xsl:template match="jlocation" mode="errorid">
1598 <xsl:text>JVMTI_ERROR_INVALID_LOCATION</xsl:text>
1599 </xsl:template>
1601 <xsl:template match="jlocation" mode="errordesc">
1602 <xsl:param name="id"/>
1603 <xsl:apply-templates select="." mode="paramlink"/>
1604 <xsl:text> is not a valid location.</xsl:text>
1605 </xsl:template>
1607 <xsl:template match="jint" mode="haserrors">
1608 <xsl:if test="count(@min)=1">
1609 yes
1610 </xsl:if>
1611 </xsl:template>
1613 <xsl:template match="jint" mode="errorid">
1614 <xsl:text>JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:text>
1615 </xsl:template>
1617 <xsl:template match="jint" mode="errordesc">
1618 <xsl:param name="id"/>
1619 <xsl:apply-templates select="." mode="paramlink"/>
1620 <xsl:text> is less than </xsl:text>
1621 <code><xsl:value-of select="@min"/></code>
1622 <xsl:text>.</xsl:text>
1623 </xsl:template>
1625 <xsl:template match="jvalue|jchar|jlong|jfloat|jdouble|jboolean|char|uchar|size_t|void|varargs|struct" mode="haserrors">
1626 </xsl:template>
1628 <xsl:template match="jvalue|jchar|jlong|jfloat|jdouble|jboolean|char|uchar|size_t|void|varargs|struct" mode="errordesc">
1629 <xsl:param name="id"/>
1630 <xsl:message terminate="yes">
1631 attempt to get error description for <xsl:apply-templates select="." mode="paramlink"/>
1632 </xsl:message>
1633 </xsl:template>
1635 <xsl:template match="ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="haserrors">
1636 <xsl:if test="count(nullok)=0">
1637 yes
1638 </xsl:if>
1639 </xsl:template>
1641 <xsl:template match="ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="errorid">
1642 <xsl:text>JVMTI_ERROR_NULL_POINTER</xsl:text>
1643 </xsl:template>
1645 <xsl:template match="ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="errordesc">
1646 <xsl:param name="id"/>
1647 <xsl:if test="count(nullok)=1">
1648 <xsl:message terminate="yes">
1649 attempt to get error description in null ok case for <xsl:apply-templates select="." mode="paramlink"/>
1650 </xsl:message>
1651 </xsl:if>
1652 <xsl:apply-templates select="." mode="paramlink"/>
1653 <xsl:text> is </xsl:text>
1654 <code>NULL</code>
1655 <xsl:text>.</xsl:text>
1656 </xsl:template>
1658 <xsl:template match="jmethodID|jfieldID|jframeID|jrawMonitorID|jint|jclass|jthread|jthreadGroup|jobject|enum|jlocation|ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="paramlink">
1659 <a>
1660 <xsl:attribute name="href">#<xsl:value-of select="ancestor::function/@id|ancestor::event/@id"/>.<xsl:value-of select="ancestor::param/@id"/>
1661 </xsl:attribute>
1662 <code>
1663 <xsl:value-of select="ancestor::param/@id"/>
1664 </code>
1665 </a>
1666 </xsl:template>
1668 <xsl:template match="error" mode="haserrors">
1669 yes
1670 </xsl:template>
1672 <xsl:template match="error">
1673 <tr>
1674 <td>
1675 <a>
1676 <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1677 <code>
1678 <xsl:value-of select="@id"/>
1679 </code>
1680 </a>
1681 </td>
1682 <td>
1683 <xsl:apply-templates/>
1684 </td>
1685 </tr>
1686 </xsl:template>
1688 <xsl:template match="errorsection">
1689 <p/>
1690 <hr noshade="noshade" size="3"/>
1691 <h2>
1692 Errors
1693 </h2>
1694 <p/>
1695 <xsl:apply-templates select="intro"/>
1696 <p/>
1697 <xsl:apply-templates select="errorcategory"/>
1698 <p/>
1699 </xsl:template>
1701 <xsl:template match="datasection">
1702 <p/>
1703 <hr noshade="noshade" size="3"/>
1704 <h2>
1705 Data Types
1706 </h2>
1707 <p/>
1708 <xsl:apply-templates select="intro"/>
1709 <xsl:apply-templates select="basetypes"/>
1710 <p/>
1711 <a name="StructureTypeDefinitions"></a>
1712 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1713 <tr bgcolor="#CCCCFF">
1714 <td colspan="2" align="center" class="tableHeader">
1715 Structure Type Definitions
1716 </td>
1717 </tr>
1718 <tr bgcolor="#EEEEFF">
1719 <td>
1720 Type
1721 </td>
1722 <td>
1723 Description
1724 </td>
1725 </tr>
1726 <xsl:apply-templates select="//typedef|//uniontypedef|//capabilitiestypedef" mode="tableentry">
1727 <xsl:sort select="@id"/>
1728 </xsl:apply-templates>
1729 </table>
1730 <p/>
1731 <a name="FunctionTypeDefinitions"></a>
1732 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1733 <tr bgcolor="#CCCCFF">
1734 <td colspan="2" align="center" class="tableHeader">
1735 Function Type Definitions
1736 </td>
1737 </tr>
1738 <tr bgcolor="#EEEEFF">
1739 <td>
1740 Type
1741 </td>
1742 <td>
1743 Description
1744 </td>
1745 </tr>
1746 <xsl:apply-templates select="//callback" mode="tableentry">
1747 <xsl:sort select="@id"/>
1748 </xsl:apply-templates>
1749 </table>
1750 <p/>
1751 <a name="EnumerationDefinitions"></a>
1752 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1753 <tr bgcolor="#CCCCFF">
1754 <td colspan="2" align="center" class="tableHeader">
1755 Enumeration Definitions
1756 </td>
1757 </tr>
1758 <tr bgcolor="#EEEEFF">
1759 <td>
1760 Type
1761 </td>
1762 <td>
1763 Description
1764 </td>
1765 </tr>
1766 <xsl:apply-templates select="//constants[@kind='enum']" mode="tableentry">
1767 <xsl:sort select="@id"/>
1768 </xsl:apply-templates>
1769 </table>
1770 <p/>
1771 <a name="FunctionTable"></a>
1772 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1773 <tr bgcolor="#CCCCFF">
1774 <td colspan="3" align="center" class="tableHeader">
1775 Function Table Layout
1776 </td>
1777 </tr>
1778 <tr bgcolor="#EEEEFF">
1779 <td>
1780 Position
1781 </td>
1782 <td>
1783 Function
1784 </td>
1785 <td>
1786 Declaration
1787 </td>
1788 </tr>
1789 <xsl:call-template name="funcStruct">
1790 <xsl:with-param name="funcs" select="//functionsection/category/function[count(@hide)=0]"/>
1791 <xsl:with-param name="index" select="1"/>
1792 </xsl:call-template>
1793 </table>
1794 <p/>
1795 </xsl:template>
1798 <xsl:template name="funcStruct">
1799 <xsl:param name="funcs"/>
1800 <xsl:param name="index"/>
1801 <xsl:variable name="thisFunction" select="$funcs[@num=$index]"/>
1802 <tr>
1803 <td align="right">
1804 <xsl:number value="$index" format=" 1"/>
1805 </td>
1806 <xsl:choose>
1807 <xsl:when test="count($thisFunction)=1">
1808 <td>
1809 <a>
1810 <xsl:attribute name="href">
1811 <xsl:text>#</xsl:text>
1812 <xsl:value-of select="$thisFunction/@id"/>
1813 </xsl:attribute>
1814 <xsl:value-of select="$thisFunction/synopsis"/>
1815 </a>
1816 </td>
1817 <td>
1818 <pre>
1819 <xsl:text>jvmtiError (JNICALL *</xsl:text>
1820 <xsl:value-of select="$thisFunction/@id"/>
1821 <xsl:text>) (jvmtiEnv* env</xsl:text>
1822 <xsl:apply-templates select="$thisFunction/parameters" mode="signature">
1823 <xsl:with-param name="comma">
1824 <xsl:text>, 
 </xsl:text>
1825 </xsl:with-param>
1826 </xsl:apply-templates>
1827 <xsl:text>);</xsl:text>
1828 </pre>
1829 </td>
1830 </xsl:when>
1831 <xsl:otherwise>
1832 <xsl:if test="count($thisFunction) != 0">
1833 <xsl:message terminate="yes">
1834 More than one function has index number <xsl:number value="$index" format=" 1"/>.
1835 </xsl:message>
1836 </xsl:if>
1837 <td>
1838 <i>reserved</i>
1839 </td>
1840 <td>
1841 <pre>
1842 <xsl:text>void *reserved</xsl:text>
1843 <xsl:value-of select="$index"/>
1844 <xsl:text>;</xsl:text>
1845 </pre>
1846 </td>
1847 </xsl:otherwise>
1848 </xsl:choose>
1849 </tr>
1850 <xsl:if test="count($funcs[@num > $index]) > 0">
1851 <xsl:call-template name="funcStruct">
1852 <xsl:with-param name="funcs" select="$funcs"/>
1853 <xsl:with-param name="index" select="1+$index"/>
1854 </xsl:call-template>
1855 </xsl:if>
1856 </xsl:template>
1860 <xsl:template match="errorcategory">
1861 <h3>
1862 <xsl:attribute name="id">
1863 <xsl:value-of select="@id"/>
1864 </xsl:attribute>
1865 <xsl:value-of select="@label"/>
1866 </h3>
1867 <xsl:apply-templates select="intro"/>
1868 <p/>
1869 <dl>
1870 <xsl:apply-templates select="errorid"/>
1871 </dl>
1872 <p/>
1873 </xsl:template>
1875 <xsl:template match="errorid">
1876 <dt>
1877 <code>
1878 <xsl:attribute name="id">
1879 <xsl:value-of select="@id"/>
1880 </xsl:attribute>
1881 <xsl:value-of select="@id"/> (<xsl:value-of select="@num"/>)
1882 </code>
1883 </dt>
1884 <dd>
1885 <xsl:apply-templates/>
1886 <p/>
1887 </dd>
1888 </xsl:template>
1890 <xsl:template match="changehistory">
1891 <p/><hr noshade="noshade" size="3"/>
1892 <h2>Change History</h2>
1893 Last update: <xsl:value-of select="@update"/><br/>
1894 Version: <xsl:call-template name="showversion"/>
1895 <p/>
1896 <xsl:apply-templates select="intro"/>
1897 <p/>
1898 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1899 <tr bgcolor="#EEEEFF">
1900 <td>
1901 <b>Version</b><br/>
1902 <b>Date</b>
1903 </td>
1904 <td>
1905 <b>Changes</b>
1906 </td>
1907 </tr>
1908 <xsl:apply-templates select="change"/>
1909 </table>
1910 </xsl:template>
1912 <xsl:template match="change">
1913 <tr>
1914 <td>
1915 <xsl:if test="count(@version)">
1916 <b>
1917 <xsl:value-of select="@version"/>
1918 </b>
1919 <br/>
1920 </xsl:if>
1921 <xsl:value-of select="@date"/>
1922 </td>
1923 <td>
1924 <xsl:apply-templates/>
1925 </td>
1926 </tr>
1927 </xsl:template>
1929 <xsl:template match="intro">
1930 <xsl:if test="@id!=''">
1931 <xsl:choose>
1932 <xsl:when test="@label!=''">
1933 <h4>
1934 <xsl:attribute name="id">
1935 <xsl:value-of select="@id"/>
1936 </xsl:attribute>
1937 <xsl:value-of select="@label"/>
1938 </h4>
1939 </xsl:when>
1940 <xsl:otherwise>
1941 <a>
1942 <xsl:attribute name="name">
1943 <xsl:value-of select="@id"/>
1944 </xsl:attribute>
1945 </a>
1946 </xsl:otherwise>
1947 </xsl:choose>
1948 </xsl:if>
1949 <xsl:apply-templates/>
1950 </xsl:template>
1952 <xsl:template match="issue">
1953 <xsl:if test="$development = 'Show'">
1954 <p style="color: red">
1955 To be resolved:
1956 <xsl:apply-templates/>
1957 </p>
1958 </xsl:if>
1959 </xsl:template>
1961 <xsl:template match="rationale">
1962 <p style="color: purple">
1963 Rationale:
1964 <xsl:apply-templates/>
1965 </p>
1966 </xsl:template>
1968 <xsl:template match="todo">
1969 <xsl:if test="$development = 'Show'">
1970 <p style="color: green">
1971 To do:
1972 <xsl:apply-templates/>
1973 </p>
1974 </xsl:if>
1975 </xsl:template>
1977 <xsl:template match="elide">
1978 </xsl:template>
1980 <xsl:template match="b">
1981 <b>
1982 <xsl:apply-templates/>
1983 </b>
1984 </xsl:template>
1986 <xsl:template match="example">
1987 <blockquote>
1988 <pre>
1989 <xsl:apply-templates/>
1990 </pre>
1991 </blockquote>
1992 </xsl:template>
1995 <xsl:template match="table">
1996 <table border="1" cellpadding="3" cellspacing="0" width="100%">
1997 <xsl:apply-templates/>
1998 </table>
1999 </xsl:template>
2001 <xsl:template match="tr">
2002 <tr>
2003 <xsl:apply-templates/>
2004 </tr>
2005 </xsl:template>
2007 <xsl:template match="td">
2008 <td>
2009 <xsl:attribute name="align">
2010 <xsl:value-of select="@align"/>
2011 </xsl:attribute>
2012 <xsl:apply-templates/>
2013 </td>
2014 </xsl:template>
2016 <xsl:template match="th">
2017 <th bgcolor="#EEEEFF">
2018 <xsl:attribute name="align">
2019 <xsl:value-of select="@align"/>
2020 </xsl:attribute>
2021 <xsl:apply-templates/>
2022 </th>
2023 </xsl:template>
2025 <xsl:template match="dl">
2026 <dl>
2027 <xsl:apply-templates/>
2028 </dl>
2029 </xsl:template>
2031 <xsl:template match="dt">
2032 <dt>
2033 <xsl:apply-templates/>
2034 </dt>
2035 </xsl:template>
2037 <xsl:template match="dd">
2038 <dd>
2039 <xsl:apply-templates/>
2040 </dd>
2041 </xsl:template>
2043 <xsl:template match="p">
2044 <p>
2045 <xsl:apply-templates/>
2046 </p>
2047 </xsl:template>
2049 <xsl:template match="br">
2050 <br>
2051 <xsl:apply-templates/>
2052 </br>
2053 </xsl:template>
2055 <xsl:template match="ul">
2056 <ul>
2057 <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
2058 <xsl:apply-templates/>
2059 </ul>
2060 </xsl:template>
2062 <xsl:template match="li">
2063 <li>
2064 <xsl:apply-templates/>
2065 </li>
2066 </xsl:template>
2068 <xsl:template match="code">
2069 <code>
2070 <xsl:apply-templates/>
2071 </code>
2072 </xsl:template>
2074 <xsl:template match="tm">
2075 <xsl:apply-templates/>
2076 <sup style="font-size: xx-small">
2077 <xsl:text>TM</xsl:text>
2078 </sup>
2079 <xsl:text> </xsl:text>
2080 </xsl:template>
2082 <xsl:template match="b">
2083 <b>
2084 <xsl:apply-templates/>
2085 </b>
2086 </xsl:template>
2088 <xsl:template match="i">
2089 <i>
2090 <xsl:apply-templates/>
2091 </i>
2092 </xsl:template>
2094 <xsl:template match="space">
2095 <xsl:text> </xsl:text>
2096 </xsl:template>
2098 <xsl:template match="jvmti">
2099 <xsl:text>JVM</xsl:text><small style="font-size: xx-small"> </small><xsl:text>TI</xsl:text>
2100 </xsl:template>
2103 </xsl:stylesheet>