hotspot/src/share/vm/prims/jvmtiEnter.xsl
author ysr
Thu, 03 Dec 2009 15:01:57 -0800
changeset 4461 c17c526d36ef
parent 1 489c9b5090e2
child 4571 80b553bddc26
permissions -rw-r--r--
6906727: UseCompressedOops: some card-marking fixes related to object arrays Summary: Introduced a new write_ref_array(HeapWords* start, size_t count) method that does the requisite MemRegion range calculation so (some of the) clients of the erstwhile write_ref_array(MemRegion mr) do not need to worry. This removed all external uses of array_size(), which was also simplified and made private. Asserts were added to catch other possible issues. Further, less essential, fixes stemming from this investigation are deferred to CR 6904516 (to follow shortly in hs17). Reviewed-by: kvn, coleenp, jmasa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
<?xml version="1.0"?> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
     2
<!--
489c9b5090e2 Initial load
duke
parents:
diff changeset
     3
 Copyright 2002-2006 Sun Microsystems, Inc.  All Rights Reserved.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     4
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     5
489c9b5090e2 Initial load
duke
parents:
diff changeset
     6
 This code is free software; you can redistribute it and/or modify it
489c9b5090e2 Initial load
duke
parents:
diff changeset
     7
 under the terms of the GNU General Public License version 2 only, as
489c9b5090e2 Initial load
duke
parents:
diff changeset
     8
 published by the Free Software Foundation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     9
489c9b5090e2 Initial load
duke
parents:
diff changeset
    10
 This code is distributed in the hope that it will be useful, but WITHOUT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    11
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    12
 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
489c9b5090e2 Initial load
duke
parents:
diff changeset
    13
 version 2 for more details (a copy is included in the LICENSE file that
489c9b5090e2 Initial load
duke
parents:
diff changeset
    14
 accompanied this code).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    15
489c9b5090e2 Initial load
duke
parents:
diff changeset
    16
 You should have received a copy of the GNU General Public License version
489c9b5090e2 Initial load
duke
parents:
diff changeset
    17
 2 along with this work; if not, write to the Free Software Foundation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    18
 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    19
489c9b5090e2 Initial load
duke
parents:
diff changeset
    20
 Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    21
 CA 95054 USA or visit www.sun.com if you need additional information or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    22
 have any questions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    23
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
-->
489c9b5090e2 Initial load
duke
parents:
diff changeset
    25
489c9b5090e2 Initial load
duke
parents:
diff changeset
    26
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    27
489c9b5090e2 Initial load
duke
parents:
diff changeset
    28
<xsl:import href="jvmtiLib.xsl"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    29
489c9b5090e2 Initial load
duke
parents:
diff changeset
    30
<xsl:output method="text" indent="no" omit-xml-declaration="yes"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    31
489c9b5090e2 Initial load
duke
parents:
diff changeset
    32
<xsl:param name="trace"></xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    33
<xsl:param name="interface"></xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    34
489c9b5090e2 Initial load
duke
parents:
diff changeset
    35
489c9b5090e2 Initial load
duke
parents:
diff changeset
    36
<xsl:template match="specification">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    37
  <xsl:call-template name="sourceHeader"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    38
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    39
# include "incls/_precompiled.incl"
489c9b5090e2 Initial load
duke
parents:
diff changeset
    40
# include "incls/_jvmtiEnter.cpp.incl"
489c9b5090e2 Initial load
duke
parents:
diff changeset
    41
489c9b5090e2 Initial load
duke
parents:
diff changeset
    42
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    43
489c9b5090e2 Initial load
duke
parents:
diff changeset
    44
  <xsl:if test="$trace = 'Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    45
   <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    46
#ifdef JVMTI_TRACE
489c9b5090e2 Initial load
duke
parents:
diff changeset
    47
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    48
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    49
489c9b5090e2 Initial load
duke
parents:
diff changeset
    50
 <xsl:if test="$trace != 'Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    51
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    52
489c9b5090e2 Initial load
duke
parents:
diff changeset
    53
// Error names
489c9b5090e2 Initial load
duke
parents:
diff changeset
    54
const char* JvmtiUtil::_error_names[] = {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    55
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    56
    <xsl:call-template name="fillEntityName"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
    57
      <xsl:with-param name="entities" select="errorsection/errorcategory/errorid"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    58
    </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    59
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
    61
489c9b5090e2 Initial load
duke
parents:
diff changeset
    62
489c9b5090e2 Initial load
duke
parents:
diff changeset
    63
// Event threaded
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
const bool JvmtiUtil::_event_threaded[] = {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    65
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
    <xsl:call-template name="fillEventThreaded"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
    67
      <xsl:with-param name="entities" select="eventsection/event"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
    </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    69
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
489c9b5090e2 Initial load
duke
parents:
diff changeset
    72
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
    <xsl:call-template name="eventCapabilitiesTest"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    74
 </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    75
489c9b5090e2 Initial load
duke
parents:
diff changeset
    76
 <xsl:if test="$trace = 'Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    77
489c9b5090e2 Initial load
duke
parents:
diff changeset
    78
<!--  all this just to return the highest event number -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
    79
  <xsl:variable name="maxEvent">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    80
    <xsl:for-each select="eventsection/event">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    81
      <xsl:variable name="mynum" select="@num"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
      <xsl:if test="count(../../eventsection/event[@num &gt; $mynum]) = 0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
        <xsl:value-of select="@num"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
      </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
    </xsl:for-each>    
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
  </xsl:variable>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
  <xsl:text>jbyte JvmtiTrace::_event_trace_flags[</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
  <xsl:value-of select="1+$maxEvent"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
  <xsl:text>];
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
jint JvmtiTrace::_max_event_index = </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
  <xsl:value-of select="$maxEvent"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
  <xsl:text>;
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
// Event names
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
const char* JvmtiTrace::_event_names[] = {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    98
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    99
    <xsl:call-template name="fillEntityName"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   100
      <xsl:with-param name="entities" select="eventsection/event"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   101
    </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   102
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   103
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   104
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   105
    <xsl:apply-templates select="//constants[@kind='enum']"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   106
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
  <xsl:apply-templates select="functionsection"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   108
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
  <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   110
   <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   111
#endif /*JVMTI_TRACE */
489c9b5090e2 Initial load
duke
parents:
diff changeset
   112
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   113
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   114
489c9b5090e2 Initial load
duke
parents:
diff changeset
   115
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   116
489c9b5090e2 Initial load
duke
parents:
diff changeset
   117
<xsl:template match="constants">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   118
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   119
489c9b5090e2 Initial load
duke
parents:
diff changeset
   120
// </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   121
  <xsl:value-of select="@label"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   122
  <xsl:text> names
489c9b5090e2 Initial load
duke
parents:
diff changeset
   123
const char* </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   124
  <xsl:value-of select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   125
  <xsl:text>ConstantNames[] = {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   126
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   127
  <xsl:apply-templates select="constant" mode="constname"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   128
  <xsl:text>  NULL
489c9b5090e2 Initial load
duke
parents:
diff changeset
   129
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   130
489c9b5090e2 Initial load
duke
parents:
diff changeset
   131
// </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   132
  <xsl:value-of select="@label"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   133
  <xsl:text> value
489c9b5090e2 Initial load
duke
parents:
diff changeset
   134
jint </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   135
  <xsl:value-of select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   136
  <xsl:text>ConstantValues[] = {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   137
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   138
  <xsl:apply-templates select="constant" mode="constvalue"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   139
  <xsl:text>  0
489c9b5090e2 Initial load
duke
parents:
diff changeset
   140
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
489c9b5090e2 Initial load
duke
parents:
diff changeset
   142
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   143
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   144
489c9b5090e2 Initial load
duke
parents:
diff changeset
   145
<xsl:template match="constant" mode="constname">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   146
  <xsl:text>  "</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   147
  <xsl:value-of select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   148
  <xsl:text>",
489c9b5090e2 Initial load
duke
parents:
diff changeset
   149
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   150
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   151
489c9b5090e2 Initial load
duke
parents:
diff changeset
   152
<xsl:template match="constant" mode="constvalue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   153
  <xsl:text>  </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   154
  <xsl:value-of select="@num"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   155
  <xsl:text>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   156
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   157
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   158
489c9b5090e2 Initial load
duke
parents:
diff changeset
   159
<xsl:template name="eventCapabilitiesTest">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   160
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   161
489c9b5090e2 Initial load
duke
parents:
diff changeset
   162
// Check Event Capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
   163
const bool JvmtiUtil::has_event_capability(jvmtiEvent event_type, const jvmtiCapabilities* capabilities_ptr) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   164
  switch (event_type) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   165
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   166
  <xsl:for-each select="//eventsection/event">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   167
    <xsl:variable name="capa" select="capabilities/required"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   168
    <xsl:if test="count($capa)">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   169
        <xsl:text>    case </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   170
        <xsl:value-of select="@const"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   171
        <xsl:text>:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   172
      return capabilities_ptr-&gt;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   173
        <xsl:value-of select="$capa/@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   174
        <xsl:text> != 0;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   175
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   176
    </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   177
  </xsl:for-each>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   178
  <xsl:text>  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   179
  // if it does not have a capability it is required
489c9b5090e2 Initial load
duke
parents:
diff changeset
   180
  return JNI_TRUE;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   181
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
   182
489c9b5090e2 Initial load
duke
parents:
diff changeset
   183
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   184
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   185
489c9b5090e2 Initial load
duke
parents:
diff changeset
   186
<xsl:template match="functionsection">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   187
  <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   188
489c9b5090e2 Initial load
duke
parents:
diff changeset
   189
<!--  all this just to return the highest function number -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
  <xsl:variable name="maxFunction">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   191
    <xsl:for-each select="category/function">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
      <xsl:variable name="mynum" select="@num"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   193
      <xsl:if test="count(../../category/function[@num &gt; $mynum]) = 0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   194
        <xsl:value-of select="@num"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   195
      </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   196
    </xsl:for-each>    
489c9b5090e2 Initial load
duke
parents:
diff changeset
   197
  </xsl:variable>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   198
489c9b5090e2 Initial load
duke
parents:
diff changeset
   199
  <xsl:text>jbyte JvmtiTrace::_trace_flags[</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   200
  <xsl:value-of select="1+$maxFunction"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   201
  <xsl:text>];
489c9b5090e2 Initial load
duke
parents:
diff changeset
   202
489c9b5090e2 Initial load
duke
parents:
diff changeset
   203
jint JvmtiTrace::_max_function_index = </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   204
  <xsl:value-of select="$maxFunction"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   205
  <xsl:text>;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   206
489c9b5090e2 Initial load
duke
parents:
diff changeset
   207
// Function names
489c9b5090e2 Initial load
duke
parents:
diff changeset
   208
const char* JvmtiTrace::_function_names[] = {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   209
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   210
  <xsl:call-template name="fillEntityName">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   211
    <xsl:with-param name="entities" select="category/function"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   212
  </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   213
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   214
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   215
489c9b5090e2 Initial load
duke
parents:
diff changeset
   216
// Exclude list
489c9b5090e2 Initial load
duke
parents:
diff changeset
   217
short JvmtiTrace::_exclude_functions[] = {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   218
  </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   219
  <xsl:apply-templates select="category/function" mode="notrace">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   220
    <xsl:sort select="@num"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   221
  </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   222
  <xsl:text>0
489c9b5090e2 Initial load
duke
parents:
diff changeset
   223
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   224
489c9b5090e2 Initial load
duke
parents:
diff changeset
   225
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   226
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   227
489c9b5090e2 Initial load
duke
parents:
diff changeset
   228
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   229
extern "C" {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   230
489c9b5090e2 Initial load
duke
parents:
diff changeset
   231
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   232
  <xsl:apply-templates select="category" mode="wrapper"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   233
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   234
} /* end extern "C" */
489c9b5090e2 Initial load
duke
parents:
diff changeset
   235
489c9b5090e2 Initial load
duke
parents:
diff changeset
   236
// JVMTI API functions
489c9b5090e2 Initial load
duke
parents:
diff changeset
   237
struct jvmtiInterface_1_ jvmti</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   238
  <xsl:value-of select="$trace"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   239
  <xsl:text>_Interface = {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   240
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   241
 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   242
  <xsl:call-template name="fillFuncStruct">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   243
    <xsl:with-param name="funcs" select="category/function[count(@hide)=0]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   244
  </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   245
489c9b5090e2 Initial load
duke
parents:
diff changeset
   246
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   247
};
489c9b5090e2 Initial load
duke
parents:
diff changeset
   248
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   249
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   250
489c9b5090e2 Initial load
duke
parents:
diff changeset
   251
<xsl:template match="function" mode="functionid">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   252
  <xsl:text>jvmti</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   253
  <xsl:value-of select="$trace"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   254
  <xsl:text>_</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   255
  <xsl:value-of select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   256
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   257
489c9b5090e2 Initial load
duke
parents:
diff changeset
   258
<xsl:template name="fillFuncStructDoit">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   259
  <xsl:param name="func"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   260
  <xsl:param name="index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   261
  <xsl:text>                              /* </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   262
  <xsl:number value="$index" format="  1"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   263
  <xsl:text> : </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   264
  <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   265
    <xsl:when test="count($func)=1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   266
      <xsl:value-of select="$func/synopsis"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   267
      <xsl:text> */
489c9b5090e2 Initial load
duke
parents:
diff changeset
   268
      </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   269
      <xsl:apply-templates select="$func" mode="functionid"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   270
    </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   271
    <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   272
      <xsl:text> RESERVED */
489c9b5090e2 Initial load
duke
parents:
diff changeset
   273
      NULL</xsl:text>        
489c9b5090e2 Initial load
duke
parents:
diff changeset
   274
    </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   275
  </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   276
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   277
489c9b5090e2 Initial load
duke
parents:
diff changeset
   278
<!-- generic function iterator applied to the function structure -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
   279
<xsl:template name="fillFuncStruct">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   280
  <xsl:param name="funcs"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   281
  <xsl:param name="index" select="1"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   282
  <xsl:call-template name="fillFuncStructDoit">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   283
    <xsl:with-param name="func" select="$funcs[@num=$index]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   284
    <xsl:with-param name="index" select="$index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   285
  </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   286
  <xsl:if test="count($funcs[@num &gt; $index]) &gt; 0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   287
    <xsl:text>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   288
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   289
    <xsl:call-template name="fillFuncStruct">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   290
      <xsl:with-param name="funcs" select="$funcs"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   291
      <xsl:with-param name="index" select="1+$index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   292
    </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   293
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   294
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   295
489c9b5090e2 Initial load
duke
parents:
diff changeset
   296
<xsl:template name="fillEntityNameDoit">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   297
  <xsl:param name="entity"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   298
  <xsl:param name="index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   299
  <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   300
    <xsl:when test="count($entity) &gt; 0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   301
      <xsl:text>  "</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   302
      <xsl:value-of select="$entity[position()=1]/@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   303
      <xsl:text>"</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   304
    </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   305
    <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   306
      <xsl:text>  NULL</xsl:text>        
489c9b5090e2 Initial load
duke
parents:
diff changeset
   307
    </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   308
  </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   309
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   310
489c9b5090e2 Initial load
duke
parents:
diff changeset
   311
<!-- generic entity (with id and num) iterator applied to entity names -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
   312
<xsl:template name="fillEntityName">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   313
  <xsl:param name="entities"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   314
  <xsl:param name="index" select="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   315
  <xsl:call-template name="fillEntityNameDoit">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   316
    <xsl:with-param name="entity" select="$entities[@num=$index]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   317
    <xsl:with-param name="index" select="$index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   318
  </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   319
  <xsl:if test="count($entities[@num &gt; $index]) &gt; 0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   320
    <xsl:text>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   321
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   322
    <xsl:call-template name="fillEntityName">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   323
      <xsl:with-param name="entities" select="$entities"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   324
      <xsl:with-param name="index" select="1+$index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   325
    </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   326
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   327
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   328
489c9b5090e2 Initial load
duke
parents:
diff changeset
   329
<xsl:template name="fillEventThreadedDoit">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   330
  <xsl:param name="entity"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   331
  <xsl:param name="index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   332
  <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   333
    <xsl:when test="count($entity) &gt; 0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   334
      <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   335
        <xsl:when test="count($entity[position()=1]/@filtered)=0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   336
          <xsl:text>  false</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   337
        </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   338
        <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   339
          <xsl:text>  true</xsl:text>        
489c9b5090e2 Initial load
duke
parents:
diff changeset
   340
        </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   341
      </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   342
    </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   343
    <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   344
      <xsl:text>  false</xsl:text>        
489c9b5090e2 Initial load
duke
parents:
diff changeset
   345
    </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   346
  </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   347
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   348
489c9b5090e2 Initial load
duke
parents:
diff changeset
   349
489c9b5090e2 Initial load
duke
parents:
diff changeset
   350
<xsl:template name="fillEventThreaded">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   351
  <xsl:param name="entities"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   352
  <xsl:param name="index" select="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   353
  <xsl:call-template name="fillEventThreadedDoit">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   354
    <xsl:with-param name="entity" select="$entities[@num=$index]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   355
    <xsl:with-param name="index" select="$index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   356
  </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   357
  <xsl:if test="count($entities[@num &gt; $index]) &gt; 0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   358
    <xsl:text>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   359
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   360
    <xsl:call-template name="fillEventThreaded">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   361
      <xsl:with-param name="entities" select="$entities"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   362
      <xsl:with-param name="index" select="1+$index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   363
    </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   364
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   365
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   366
489c9b5090e2 Initial load
duke
parents:
diff changeset
   367
<xsl:template match="function" mode="notrace">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   368
  <xsl:if test="count(@impl)=1 and contains(@impl,'notrace')">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   369
    <xsl:value-of select="@num"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   370
    <xsl:text>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   371
  </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   372
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   373
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   374
489c9b5090e2 Initial load
duke
parents:
diff changeset
   375
<xsl:template match="category" mode="wrapper">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   376
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   377
  //
489c9b5090e2 Initial load
duke
parents:
diff changeset
   378
  // </xsl:text><xsl:value-of select="@label"/><xsl:text> functions
489c9b5090e2 Initial load
duke
parents:
diff changeset
   379
  // 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   380
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   381
  <xsl:apply-templates select="function[count(@hide)=0]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   382
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   383
489c9b5090e2 Initial load
duke
parents:
diff changeset
   384
<xsl:template match="function" mode="transition">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   385
  <xsl:param name="space">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   386
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   387
  </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   388
  </xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   389
  <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   390
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   391
  <xsl:choose> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   392
    <xsl:when test="count(@callbacksafe)=0 or not(contains(@callbacksafe,'safe'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   393
      <xsl:text>if (this_thread == NULL || !this_thread->is_Java_thread()) {</xsl:text> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   394
    </xsl:when> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   395
    <xsl:otherwise> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   396
      <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   397
        <xsl:when test="count(@phase)=0 or contains(@phase,'live') or contains(@phase,'start')">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   398
	  <xsl:text>if (this_thread == NULL || (!this_thread->is_Java_thread() &amp;&amp; !this_thread->is_VM_thread())) {</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   399
        </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   400
        <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   401
          <xsl:text>if (!this_thread->is_Java_thread()) {</xsl:text> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   402
        </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   403
      </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   404
     </xsl:otherwise> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   405
  </xsl:choose> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   406
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   407
  <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   408
    <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   409
    <xsl:text>  if (trace_flags) {</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   410
    <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   411
    <xsl:text>    tty->print_cr("JVMTI [non-attached thread] %s %s",  func_name,</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   412
    <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   413
    <xsl:text>    JvmtiUtil::error_name(JVMTI_ERROR_UNATTACHED_THREAD));</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   414
    <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   415
    <xsl:text>  }</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   416
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   417
  <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   418
  <xsl:text>  return JVMTI_ERROR_UNATTACHED_THREAD;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   419
  <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   420
  <xsl:text>}</xsl:text>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   421
  <xsl:value-of select="$space"/>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   422
  <xsl:if test="count(@impl)=0 or not(contains(@impl,'innative'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   423
    <xsl:text>JavaThread* current_thread = (JavaThread*)this_thread;</xsl:text>   
489c9b5090e2 Initial load
duke
parents:
diff changeset
   424
    <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   425
    <xsl:text>ThreadInVMfromNative __tiv(current_thread);</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   426
    <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   427
    <xsl:text>__ENTRY(jvmtiError, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   428
    <xsl:apply-templates select="." mode="functionid"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   429
    <xsl:text> , current_thread)</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   430
    <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   431
    <xsl:text>debug_only(VMNativeEntryWrapper __vew;)</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   432
    <xsl:if test="count(@callbacksafe)=0 or not(contains(@callbacksafe,'safe'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   433
      <xsl:value-of select="$space"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   434
      <xsl:text>CautiouslyPreserveExceptionMark __em(this_thread);</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   435
    </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   436
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   437
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   438
489c9b5090e2 Initial load
duke
parents:
diff changeset
   439
489c9b5090e2 Initial load
duke
parents:
diff changeset
   440
<xsl:template match="required">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   441
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   442
  if (jvmti_env-&gt;get_capabilities()-&gt;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   443
    <xsl:value-of select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   444
    <xsl:text> == 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   445
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   446
    <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   447
      <xsl:text>    if (trace_flags) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   448
          tty->print_cr("JVMTI [%s] %s %s",  curr_thread_name, func_name, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   449
                    JvmtiUtil::error_name(JVMTI_ERROR_MUST_POSSESS_CAPABILITY));
489c9b5090e2 Initial load
duke
parents:
diff changeset
   450
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   451
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   452
    </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   453
    <xsl:text>    return JVMTI_ERROR_MUST_POSSESS_CAPABILITY;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   454
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   455
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   456
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   457
489c9b5090e2 Initial load
duke
parents:
diff changeset
   458
489c9b5090e2 Initial load
duke
parents:
diff changeset
   459
<xsl:template match="function">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   460
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   461
static jvmtiError JNICALL
489c9b5090e2 Initial load
duke
parents:
diff changeset
   462
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   463
  <xsl:apply-templates select="." mode="functionid"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   464
  <xsl:text>(jvmtiEnv* env</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   465
  <xsl:apply-templates select="parameters" mode="signature"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   466
  <xsl:text>) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   467
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   468
489c9b5090e2 Initial load
duke
parents:
diff changeset
   469
  <xsl:if test="not(contains(@jkernel,'yes'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   470
  <xsl:text>&#xA;#ifdef JVMTI_KERNEL &#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   471
  <xsl:text>  return JVMTI_ERROR_NOT_AVAILABLE; &#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   472
  <xsl:text>#else &#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   473
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   474
489c9b5090e2 Initial load
duke
parents:
diff changeset
   475
  <xsl:apply-templates select="." mode="traceSetUp"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   476
  <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   477
    <xsl:when test="count(@phase)=0 or contains(@phase,'live')">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   478
      <xsl:text>  if(!JvmtiEnv::is_vm_live()) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   479
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   480
    <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   481
      <xsl:text>    if (trace_flags) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   482
          tty->print_cr("JVMTI [-] %s %s",  func_name, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   483
                    JvmtiUtil::error_name(JVMTI_ERROR_WRONG_PHASE));
489c9b5090e2 Initial load
duke
parents:
diff changeset
   484
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   485
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   486
    </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   487
    <xsl:text>    return JVMTI_ERROR_WRONG_PHASE;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   488
  }</xsl:text>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   489
489c9b5090e2 Initial load
duke
parents:
diff changeset
   490
      <xsl:text>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   491
  Thread* this_thread = (Thread*)ThreadLocalStorage::thread(); </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   492
489c9b5090e2 Initial load
duke
parents:
diff changeset
   493
      <xsl:apply-templates select="." mode="transition"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   494
    </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   495
    <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   496
      <xsl:if test="contains(@phase,'onload')">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   497
        <xsl:text>  if(JvmtiEnv::get_phase()!=JVMTI_PHASE_ONLOAD</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   498
        <xsl:if test="not(contains(@phase,'onloadOnly'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   499
          <xsl:text> &amp;&amp; JvmtiEnv::get_phase()!=JVMTI_PHASE_LIVE</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   500
        </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   501
        <xsl:text>) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   502
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   503
    <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   504
      <xsl:text>    if (trace_flags) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   505
          tty->print_cr("JVMTI [-] %s %s",  func_name, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   506
                    JvmtiUtil::error_name(JVMTI_ERROR_WRONG_PHASE));
489c9b5090e2 Initial load
duke
parents:
diff changeset
   507
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   508
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   509
    </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   510
    <xsl:text>    return JVMTI_ERROR_WRONG_PHASE;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   511
  }</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   512
      </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   513
      <xsl:if test="contains(@phase,'start')">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   514
        <xsl:text>  if(JvmtiEnv::get_phase()!=JVMTI_PHASE_START &amp;&amp; JvmtiEnv::get_phase()!=JVMTI_PHASE_LIVE) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   515
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   516
    <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   517
      <xsl:text>    if (trace_flags) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   518
          tty->print_cr("JVMTI [-] %s %s",  func_name, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   519
                    JvmtiUtil::error_name(JVMTI_ERROR_WRONG_PHASE));
489c9b5090e2 Initial load
duke
parents:
diff changeset
   520
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   521
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   522
    </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   523
    <xsl:text>    return JVMTI_ERROR_WRONG_PHASE;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   524
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   525
  Thread* this_thread = (Thread*)ThreadLocalStorage::thread(); </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   526
      <xsl:apply-templates select="." mode="transition"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   527
      </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   528
    </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   529
  </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   530
489c9b5090e2 Initial load
duke
parents:
diff changeset
   531
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   532
  JvmtiEnv* jvmti_env = JvmtiEnv::JvmtiEnv_from_jvmti_env(env);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   533
  if (!jvmti_env->is_valid()) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   534
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   535
    <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   536
      <xsl:text>    if (trace_flags) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   537
          tty->print_cr("JVMTI [%s] %s %s  env=%d",  curr_thread_name, func_name, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   538
                    JvmtiUtil::error_name(JVMTI_ERROR_INVALID_ENVIRONMENT), env);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   539
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   540
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   541
    </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   542
    <xsl:text>    return JVMTI_ERROR_INVALID_ENVIRONMENT;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   543
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   544
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   545
489c9b5090e2 Initial load
duke
parents:
diff changeset
   546
  <xsl:apply-templates select="capabilities/required"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   547
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   548
  <xsl:text>  jvmtiError err;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   549
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   550
  <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   551
    <xsl:when test="count(@phase)=1 and not(contains(@phase,'live')) and not(contains(@phase,'start'))">    
489c9b5090e2 Initial load
duke
parents:
diff changeset
   552
      <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   553
        <xsl:when test="count(@callbacksafe)=0 or not(contains(@callbacksafe,'safe'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   554
          <xsl:text>  if (Threads::number_of_threads() != 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   555
    Thread* this_thread = (Thread*)ThreadLocalStorage::thread();</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   556
        </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   557
        <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   558
489c9b5090e2 Initial load
duke
parents:
diff changeset
   559
	  <xsl:text>  Thread* this_thread = NULL;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   560
  bool transition;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   561
  if (Threads::number_of_threads() == 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   562
    transition = false;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   563
  } else {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   564
    this_thread = (Thread*)ThreadLocalStorage::thread();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   565
    transition = ((this_thread != NULL) &amp;&amp; !this_thread->is_VM_thread() &amp;&amp; !this_thread->is_ConcurrentGC_thread());
489c9b5090e2 Initial load
duke
parents:
diff changeset
   566
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   567
  if (transition) {</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   568
	</xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   569
489c9b5090e2 Initial load
duke
parents:
diff changeset
   570
      </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   571
      <!-- we allow use in early phases but there are threads now, -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
   572
      <!-- so do thread transition -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
   573
      <xsl:apply-templates select="." mode="transition">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   574
          <xsl:with-param name="space">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   575
            <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   576
    </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   577
          </xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   578
      </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   579
      <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   580
  </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   581
      <xsl:apply-templates select="." mode="doCall"/>     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   582
      <xsl:text>  } else {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   583
  </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   584
      <!-- we are pre-thread - no thread transition code -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
   585
      <xsl:apply-templates select="." mode="doCall"/>     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   586
      <xsl:text>  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   587
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   588
    </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   589
    <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   590
      <xsl:apply-templates select="." mode="doCall"/>      
489c9b5090e2 Initial load
duke
parents:
diff changeset
   591
    </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   592
  </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   593
  <xsl:text>  return err;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   594
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   595
489c9b5090e2 Initial load
duke
parents:
diff changeset
   596
  <xsl:if test="not(contains(@jkernel,'yes'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   597
  <xsl:text>#endif // JVMTI_KERNEL&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   598
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   599
489c9b5090e2 Initial load
duke
parents:
diff changeset
   600
  <xsl:text>}&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   601
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   602
489c9b5090e2 Initial load
duke
parents:
diff changeset
   603
<xsl:template match="function" mode="doCall">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   604
  <xsl:apply-templates select="parameters" mode="dochecks"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   605
  <xsl:apply-templates select="." mode="traceBefore"/>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   606
  <xsl:apply-templates select="." mode="genCall"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   607
  <xsl:apply-templates select="." mode="traceAfter"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   608
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   609
489c9b5090e2 Initial load
duke
parents:
diff changeset
   610
<xsl:template match="function" mode="genCall">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   611
  <xsl:text>  err = jvmti_env-&gt;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   612
  <xsl:value-of select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   613
  <xsl:text>(</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   614
  <xsl:apply-templates select="parameters" mode="HotSpotValue"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   615
  <xsl:text>);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   616
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   617
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   618
489c9b5090e2 Initial load
duke
parents:
diff changeset
   619
489c9b5090e2 Initial load
duke
parents:
diff changeset
   620
<xsl:template match="function" mode="traceSetUp">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   621
  <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   622
    <xsl:text>  SafeResourceMark rm;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   623
  jint trace_flags = JvmtiTrace::trace_flags(</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   624
      <xsl:value-of select="@num"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   625
      <xsl:text>);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   626
  const char *func_name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   627
  const char *curr_thread_name;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   628
  if (trace_flags) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   629
    func_name = JvmtiTrace::function_name(</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   630
      <xsl:value-of select="@num"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   631
      <xsl:text>);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   632
    curr_thread_name = JvmtiTrace::safe_get_current_thread_name();
489c9b5090e2 Initial load
duke
parents:
diff changeset
   633
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   634
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   635
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   636
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   637
489c9b5090e2 Initial load
duke
parents:
diff changeset
   638
489c9b5090e2 Initial load
duke
parents:
diff changeset
   639
<xsl:template match="function" mode="traceBefore">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   640
  <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   641
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   642
  if ((trace_flags &amp; JvmtiTrace::SHOW_IN) != 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   643
    </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   644
    <xsl:apply-templates select="." mode="traceIn"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   645
    <xsl:text>  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   646
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   647
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   648
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   649
489c9b5090e2 Initial load
duke
parents:
diff changeset
   650
489c9b5090e2 Initial load
duke
parents:
diff changeset
   651
<xsl:template match="param" mode="traceError">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   652
  <xsl:param name="err"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   653
  <xsl:param name="comment"></xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   654
  <xsl:param name="extraValue"></xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   655
  <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   656
  <xsl:text>      if ((trace_flags &amp; JvmtiTrace::SHOW_ERROR) != 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   657
        if ((trace_flags &amp; JvmtiTrace::SHOW_IN) == 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   658
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   659
  <xsl:apply-templates select="../.." mode="traceIn">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   660
    <xsl:with-param name="endParam" select="."/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   661
  </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   662
  <xsl:text>      }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   663
        tty->print_cr("JVMTI [%s] %s } %s - erroneous arg is </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   664
    <xsl:value-of select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   665
    <xsl:value-of select="$comment"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   666
    <xsl:text>",  curr_thread_name, func_name, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   667
                  JvmtiUtil::error_name(</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   668
    <xsl:value-of select="$err"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   669
    <xsl:text>)</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   670
    <xsl:value-of select="$extraValue"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   671
    <xsl:text>);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   672
      }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   673
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   674
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   675
    <xsl:text>      return </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   676
    <xsl:value-of select="$err"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   677
    <xsl:text>;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   678
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   679
489c9b5090e2 Initial load
duke
parents:
diff changeset
   680
489c9b5090e2 Initial load
duke
parents:
diff changeset
   681
<xsl:template match="function" mode="traceAfter">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   682
  <xsl:if test="$trace='Trace'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   683
    <xsl:text>  if ( err != JVMTI_ERROR_NONE &amp;&amp; (trace_flags &amp; JvmtiTrace::SHOW_ERROR) != 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   684
      if ((trace_flags &amp; JvmtiTrace::SHOW_IN) == 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   685
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   686
    <xsl:apply-templates select="." mode="traceIn"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   687
    <xsl:text>    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   688
    tty->print_cr("JVMTI [%s] %s } %s",  curr_thread_name, func_name, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   689
                  JvmtiUtil::error_name(err));
489c9b5090e2 Initial load
duke
parents:
diff changeset
   690
  } else if ((trace_flags &amp; JvmtiTrace::SHOW_OUT) != 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   691
    tty->print_cr("JVMTI [%s] %s }",  curr_thread_name, func_name);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   692
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   693
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   694
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   695
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   696
489c9b5090e2 Initial load
duke
parents:
diff changeset
   697
<xsl:template match="function" mode="traceIn">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   698
  <xsl:param name="endParam"></xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   699
  <xsl:text>          tty->print_cr("JVMTI [%s] %s { </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   700
  <xsl:apply-templates select="parameters" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   701
    <xsl:with-param name="endParam" select="$endParam"/>    
489c9b5090e2 Initial load
duke
parents:
diff changeset
   702
  </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   703
  <xsl:text>", curr_thread_name, func_name</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   704
  <xsl:apply-templates select="parameters" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   705
    <xsl:with-param name="endParam" select="$endParam"/>    
489c9b5090e2 Initial load
duke
parents:
diff changeset
   706
  </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   707
  <xsl:text>);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   708
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   709
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   710
489c9b5090e2 Initial load
duke
parents:
diff changeset
   711
<xsl:template match="parameters" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   712
  <xsl:apply-templates select="param" mode="dochecks"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   713
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   714
489c9b5090e2 Initial load
duke
parents:
diff changeset
   715
<xsl:template match="param" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   716
  <xsl:apply-templates select="child::*[position()=1]" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   717
    <xsl:with-param name="name" select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   718
  </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   719
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   720
489c9b5090e2 Initial load
duke
parents:
diff changeset
   721
<xsl:template match="outptr|outbuf|allocfieldbuf|ptrtype|inptr|inbuf|vmbuf|allocbuf|agentbuf|allocallocbuf" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   722
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   723
  <xsl:if test="count(nullok)=0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   724
    <xsl:text>  if (</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   725
    <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   726
    <xsl:text> == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   727
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   728
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   729
      <xsl:with-param name="err">JVMTI_ERROR_NULL_POINTER</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   730
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   731
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   732
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   733
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   734
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   735
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   736
489c9b5090e2 Initial load
duke
parents:
diff changeset
   737
<xsl:template match="jrawMonitorID" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   738
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   739
  <xsl:text>  JvmtiRawMonitor *rmonitor = (JvmtiRawMonitor *)</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   740
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   741
  <xsl:text>;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   742
  if (rmonitor == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   743
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   744
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   745
      <xsl:with-param name="err">JVMTI_ERROR_INVALID_MONITOR</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   746
      <xsl:with-param name="comment"> - raw monitor is NULL</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   747
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   748
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   749
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   750
  if (!rmonitor->is_valid()) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   751
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   752
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   753
      <xsl:with-param name="err">JVMTI_ERROR_INVALID_MONITOR</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   754
      <xsl:with-param name="comment"> - not a raw monitor 0x%x</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   755
      <xsl:with-param name="extraValue">, rmonitor</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   756
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   757
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   758
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   759
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   760
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   761
489c9b5090e2 Initial load
duke
parents:
diff changeset
   762
<xsl:template match="jthread" mode="dochecksbody">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   763
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   764
    <xsl:text>    oop thread_oop = JNIHandles::resolve_external_guard(</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   765
    <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   766
    <xsl:text>);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   767
    if (thread_oop == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   768
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   769
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   770
      <xsl:with-param name="err">JVMTI_ERROR_INVALID_THREAD</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   771
      <xsl:with-param name="comment"> - jthread resolved to NULL - jthread = %0x%x</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   772
      <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   773
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   774
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   775
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   776
    if (!thread_oop-&gt;is_a(SystemDictionary::thread_klass())) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   777
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   778
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   779
      <xsl:with-param name="err">JVMTI_ERROR_INVALID_THREAD</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   780
      <xsl:with-param name="comment"> - oop is not a thread - jthread = %0x%x</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   781
      <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   782
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   783
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   784
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   785
    java_thread = java_lang_Thread::thread(thread_oop); 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   786
    if (java_thread == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   787
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   788
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   789
      <xsl:with-param name="err">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   790
        <xsl:text>JVMTI_ERROR_THREAD_NOT_ALIVE</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   791
      </xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   792
      <xsl:with-param name="comment"> - not a Java thread - jthread = %0x%x</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   793
      <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   794
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   795
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   796
    }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   797
</xsl:text>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   798
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   799
489c9b5090e2 Initial load
duke
parents:
diff changeset
   800
<xsl:template match="jthread" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   801
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   802
  <!-- If we convert and test threads -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
   803
  <xsl:if test="count(@impl)=0 or not(contains(@impl,'noconvert'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   804
    <xsl:text>  JavaThread* java_thread;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   805
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   806
    <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   807
      <xsl:when test="count(@null)=0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   808
        <xsl:apply-templates select="." mode="dochecksbody">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   809
          <xsl:with-param name="name" select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   810
        </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   811
      </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   812
      <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   813
        <xsl:text>  if (</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   814
        <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   815
        <xsl:text> == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   816
    java_thread = current_thread;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   817
  } else {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   818
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   819
        <xsl:apply-templates select="." mode="dochecksbody">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   820
          <xsl:with-param name="name" select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   821
        </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   822
        <xsl:text>  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   823
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   824
      </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   825
    </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   826
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   827
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   828
489c9b5090e2 Initial load
duke
parents:
diff changeset
   829
<xsl:template match="jframeID" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   830
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   831
  <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   832
  if (depth &lt; 0) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   833
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   834
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   835
      <xsl:with-param name="err">JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   836
      <xsl:with-param name="comment"> - negative depth - jthread = %0x%x</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   837
      <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   838
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   839
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   840
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   841
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   842
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   843
489c9b5090e2 Initial load
duke
parents:
diff changeset
   844
<xsl:template match="jclass" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   845
 <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   846
 <!-- for JVMTI a jclass/jmethodID becomes just jmethodID -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
   847
 <xsl:if test="count(@method)=0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   848
  <xsl:text>  oop k_mirror = JNIHandles::resolve_external_guard(</xsl:text>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   849
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   850
  <xsl:text>);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   851
  if (k_mirror == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   852
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   853
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   854
      <xsl:with-param name="err">JVMTI_ERROR_INVALID_CLASS</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   855
      <xsl:with-param name="comment"> - resolved to NULL - jclass = 0x%x</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   856
      <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   857
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   858
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   859
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   860
  if (!k_mirror->is_a(SystemDictionary::class_klass())) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   861
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   862
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   863
      <xsl:with-param name="err">JVMTI_ERROR_INVALID_CLASS</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   864
      <xsl:with-param name="comment"> - not a class - jclass = 0x%x</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   865
      <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   866
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   867
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   868
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   869
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   870
  <xsl:if test="count(@method|@field)=1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   871
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   872
  if (java_lang_Class::is_primitive(k_mirror)) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   873
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   874
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   875
      <xsl:with-param name="err">JVMTI_ERROR_INVALID_CLASS</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   876
      <xsl:with-param name="comment"> - is a primitive class - jclass = 0x%x</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   877
      <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   878
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   879
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   880
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   881
  klassOop k_oop = java_lang_Class::as_klassOop(k_mirror);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   882
  if (k_oop == NULL) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   883
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   884
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   885
      <xsl:with-param name="err">JVMTI_ERROR_INVALID_CLASS</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   886
      <xsl:with-param name="comment"> - no klassOop - jclass = 0x%x</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   887
      <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   888
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   889
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   890
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   891
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   892
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   893
 </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   894
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   895
489c9b5090e2 Initial load
duke
parents:
diff changeset
   896
489c9b5090e2 Initial load
duke
parents:
diff changeset
   897
<xsl:template match="jmethodID" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   898
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   899
  <xsl:text>  methodOop method_oop = JNIHandles::checked_resolve_jmethod_id(</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   900
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   901
  <xsl:text>);&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   902
  <xsl:text>  if (method_oop == NULL) {&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   903
  <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   904
    <xsl:with-param name="err">JVMTI_ERROR_INVALID_METHODID</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   905
    <xsl:with-param name="comment"></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   906
    <xsl:with-param name="extraValue"></xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   907
  </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   908
  <xsl:text>&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   909
  <xsl:text>  }&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   910
  <xsl:if test="count(@native)=1 and contains(@native,'error')">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   911
    <xsl:text>  if (method_oop->is_native()) {&#xA;</xsl:text>   
489c9b5090e2 Initial load
duke
parents:
diff changeset
   912
    <xsl:text>    return JVMTI_ERROR_NATIVE_METHOD;&#xA;</xsl:text>   
489c9b5090e2 Initial load
duke
parents:
diff changeset
   913
    <xsl:text>  }&#xA;</xsl:text>   
489c9b5090e2 Initial load
duke
parents:
diff changeset
   914
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   915
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   916
489c9b5090e2 Initial load
duke
parents:
diff changeset
   917
489c9b5090e2 Initial load
duke
parents:
diff changeset
   918
<xsl:template match="jfieldID" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   919
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   920
  <xsl:text>  ResourceMark rm_fdesc(current_thread);&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   921
  <xsl:text>  fieldDescriptor fdesc;&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   922
  <xsl:text>  if (!JvmtiEnv::get_field_descriptor(k_oop, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   923
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   924
  <xsl:text>, &amp;fdesc)) {&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   925
  <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   926
    <xsl:with-param name="err">JVMTI_ERROR_INVALID_FIELDID</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   927
  </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   928
  <xsl:text>&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   929
  <xsl:text>  }&#xA;</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   930
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   931
489c9b5090e2 Initial load
duke
parents:
diff changeset
   932
489c9b5090e2 Initial load
duke
parents:
diff changeset
   933
<xsl:template match="jint" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   934
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   935
  <xsl:if test="count(@min)=1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   936
    <xsl:text>  if (</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   937
    <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   938
    <xsl:text> &lt; </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   939
    <xsl:value-of select="@min"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   940
    <xsl:text>) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   941
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   942
    <xsl:apply-templates select=".." mode="traceError">     
489c9b5090e2 Initial load
duke
parents:
diff changeset
   943
      <xsl:with-param name="err">JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:with-param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   944
    </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   945
    <xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   946
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   947
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   948
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   949
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   950
489c9b5090e2 Initial load
duke
parents:
diff changeset
   951
<xsl:template match="jobject|jvalue|jthreadGroup|enum|jchar|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|struct" mode="dochecks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   952
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   953
489c9b5090e2 Initial load
duke
parents:
diff changeset
   954
<!-- iterate over parameters, stopping if specified is encountered -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
   955
<xsl:template name="traceInValueParamsUpTo">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   956
  <xsl:param name="params"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   957
  <xsl:param name="endParam"></xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   958
  <xsl:param name="index" select="1"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   959
  <xsl:variable name="cParam" select="$params[position()=$index]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   960
  <xsl:if test="$cParam!=$endParam">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   961
    <xsl:apply-templates select="$cParam" mode="traceInValue"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   962
    <xsl:if test="count($params) &gt; $index">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   963
      <xsl:call-template name="traceInValueParamsUpTo">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   964
        <xsl:with-param name="params" select="$params"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   965
        <xsl:with-param name="endParam" select="$endParam"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   966
        <xsl:with-param name="index" select="1+$index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   967
      </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   968
    </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   969
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   970
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   971
489c9b5090e2 Initial load
duke
parents:
diff changeset
   972
<xsl:template name="traceInFormatParamsUpTo">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   973
  <xsl:param name="params"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   974
  <xsl:param name="endParam"></xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   975
  <xsl:param name="index" select="1"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   976
  <xsl:variable name="cParam" select="$params[position()=$index]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   977
  <xsl:if test="$cParam!=$endParam">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   978
    <xsl:apply-templates select="$cParam" mode="traceInFormat"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   979
    <xsl:if test="count($params) &gt; $index">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   980
      <xsl:call-template name="traceInFormatParamsUpTo">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   981
        <xsl:with-param name="params" select="$params"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   982
        <xsl:with-param name="endParam" select="$endParam"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   983
        <xsl:with-param name="index" select="1+$index"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   984
      </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   985
    </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   986
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   987
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   988
489c9b5090e2 Initial load
duke
parents:
diff changeset
   989
<xsl:template match="parameters" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   990
  <xsl:param name="endParam"></xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   991
  <xsl:call-template name="traceInFormatParamsUpTo">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   992
    <xsl:with-param name="params" select="param"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   993
    <xsl:with-param name="endParam" select="$endParam"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   994
  </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   995
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   996
489c9b5090e2 Initial load
duke
parents:
diff changeset
   997
<xsl:template match="parameters" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   998
  <xsl:param name="endParam"></xsl:param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   999
  <xsl:call-template name="traceInValueParamsUpTo">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1000
    <xsl:with-param name="params" select="param"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1001
    <xsl:with-param name="endParam" select="$endParam"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1002
  </xsl:call-template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1003
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1004
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1005
<xsl:template match="param" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1006
  <xsl:apply-templates select="child::*[position()=1]" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1007
    <xsl:with-param name="name" select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1008
  </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1009
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1010
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1011
<xsl:template match="param" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1012
  <xsl:apply-templates select="child::*[position()=1]" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1013
    <xsl:with-param name="name" select="@id"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1014
  </xsl:apply-templates>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1015
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1016
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1017
<xsl:template match="outptr|outbuf|allocfieldbuf|vmbuf|allocbuf|agentbuf|allocallocbuf" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1018
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1019
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1020
<xsl:template match="outptr|outbuf|allocfieldbuf|vmbuf|allocbuf|agentbuf|allocallocbuf" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1021
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1022
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1023
<xsl:template match="inbuf" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1024
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1025
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1026
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1027
  <xsl:variable name="child" select="child::*[position()=1]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1028
  <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1029
    <xsl:when test="name($child)='char'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1030
      <xsl:text>='%s'</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1031
    </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1032
    <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1033
      <xsl:text>=0x%x</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1034
    </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1035
  </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1036
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1037
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1038
<xsl:template match="inbuf" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1039
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1040
  <xsl:text>, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1041
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1042
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1043
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1044
<xsl:template match="ptrtype" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1045
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1046
  <xsl:variable name="child" select="child::*[position()=1]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1047
  <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1048
    <xsl:when test="name($child)='jclass'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1049
      <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1050
      <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1051
      <xsl:text>=0x%x</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1052
    </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1053
    <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1054
      <xsl:apply-templates select="$child" mode="traceInFormat"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1055
    </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1056
  </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1057
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1058
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1059
<xsl:template match="ptrtype" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1060
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1061
  <xsl:variable name="child" select="child::*[position()=1]"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1062
  <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1063
    <xsl:when test="name($child)='jclass'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1064
      <xsl:text>, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1065
      <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1066
    </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1067
    <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1068
      <xsl:apply-templates select="$child" mode="traceInValue"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1069
    </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1070
  </xsl:choose> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1071
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1072
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1073
<xsl:template match="inptr" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1074
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1075
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1076
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1077
  <xsl:text>=0x%x</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1078
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1079
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1080
<xsl:template match="inptr" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1081
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1082
  <xsl:text>, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1083
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1084
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1085
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1086
<xsl:template match="jrawMonitorID|jfieldID" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1087
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1088
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1089
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1090
  <xsl:text>=%s</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1091
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1092
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1093
<xsl:template match="jclass" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1094
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1095
  <!-- for JVMTI a jclass/jmethodID becomes just jmethodID -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1096
  <xsl:if test="count(@method)=0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1097
    <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1098
    <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1099
    <xsl:text>=%s</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1100
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1101
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1102
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1103
<xsl:template match="jrawMonitorID" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1104
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1105
  <xsl:text>, rmonitor->get_name()</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1106
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1107
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1108
<xsl:template match="jthread" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1109
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1110
  <!-- If we convert and test threads -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1111
  <xsl:if test="count(@impl)=0 or not(contains(@impl,'noconvert'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1112
    <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1113
    <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1114
    <xsl:text>=%s</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1115
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1116
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1117
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1118
<xsl:template match="jthread" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1119
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1120
  <!-- If we convert and test threads -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1121
  <xsl:if test="count(@impl)=0 or not(contains(@impl,'noconvert'))">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1122
    <xsl:text>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1123
                    JvmtiTrace::safe_get_thread_name(java_thread)</xsl:text>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1124
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1125
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1126
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1127
<xsl:template match="jframeID" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1128
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1129
  <xsl:text>depth=%d</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1130
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1131
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1132
<xsl:template match="jframeID" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1133
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1134
  <xsl:text>, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1135
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1136
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1137
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1138
<xsl:template match="jclass" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1139
  <!-- for JVMTI a jclass/jmethodID becomes just jmethodID -->
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1140
  <xsl:if test="count(@method)=0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1141
    <xsl:text>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1142
                    JvmtiTrace::get_class_name(k_mirror)</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1143
  </xsl:if>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1144
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1145
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1146
<xsl:template match="jmethodID" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1147
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1148
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1149
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1150
  <xsl:text>=%s.%s</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1151
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1152
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1153
<xsl:template match="jmethodID" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1154
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1155
  <xsl:text>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1156
                    method_oop == NULL? "NULL" : method_oop->klass_name()->as_C_string(),
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1157
                    method_oop == NULL? "NULL" : method_oop->name()->as_C_string()
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1158
             </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1159
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1160
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1161
<xsl:template match="jfieldID" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1162
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1163
  <xsl:text>, fdesc.name()->as_C_string()</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1164
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1165
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1166
<xsl:template match="enum" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1167
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1168
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1169
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1170
  <xsl:text>=%d:%s</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1171
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1172
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1173
<xsl:template match="enum" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1174
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1175
  <xsl:text>, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1176
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1177
  <xsl:text>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1178
                    </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1179
  <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1180
    <xsl:when test=".='jvmtiError'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1181
      <xsl:text>JvmtiUtil::error_name(</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1182
      <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1183
      <xsl:text>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1184
</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1185
    </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1186
    <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1187
      <xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1188
        <xsl:when test=".='jvmtiEvent'">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1189
          <xsl:text>JvmtiTrace::event_name(</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1190
          <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1191
          <xsl:text>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1192
        </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1193
      </xsl:when>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1194
      <xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1195
        <xsl:text>JvmtiTrace::enum_name(</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1196
        <xsl:value-of select="."/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1197
        <xsl:text>ConstantNames, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1198
        <xsl:value-of select="."/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1199
        <xsl:text>ConstantValues, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1200
        <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1201
        <xsl:text>)</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1202
      </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1203
    </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1204
    </xsl:otherwise>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1205
  </xsl:choose>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1206
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1207
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1208
<xsl:template match="jint|jlocation" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1209
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1210
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1211
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1212
  <xsl:text>=%d</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1213
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1214
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1215
<xsl:template match="jlong" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1216
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1217
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1218
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1219
  <xsl:text>=%ld</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1220
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1221
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1222
<xsl:template match="size_t" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1223
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1224
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1225
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1226
  <xsl:text>=0x%zx</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1227
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1228
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1229
<xsl:template match="jfloat|jdouble" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1230
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1231
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1232
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1233
  <xsl:text>=%f</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1234
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1235
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1236
<xsl:template match="char" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1237
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1238
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1239
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1240
  <xsl:text>=%c</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1241
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1242
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1243
<xsl:template match="uchar|jchar" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1244
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1245
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1246
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1247
  <xsl:text>=0x%x</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1248
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1249
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1250
<xsl:template match="jint|jlocation|jchar|jlong|jfloat|jdouble|char|uchar|size_t" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1251
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1252
  <xsl:text>, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1253
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1254
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1255
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1256
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1257
<xsl:template match="jboolean" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1258
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1259
  <xsl:text> </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1260
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1261
  <xsl:text>=%s</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1262
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1263
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1264
<xsl:template match="jboolean" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1265
  <xsl:param name="name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1266
  <xsl:text>, </xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1267
  <xsl:value-of select="$name"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1268
  <xsl:text>? "true" : "false"</xsl:text>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1269
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1270
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1271
<xsl:template match="jobject|jvalue|jthreadGroup|void|struct" mode="traceInFormat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1272
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1273
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1274
<xsl:template match="jobject|jvalue|jthreadGroup|void|struct" mode="traceInValue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1275
</xsl:template>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1276
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1277
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1278
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1279
</xsl:stylesheet>