hotspot/src/share/vm/prims/jvmti.xml
author mikael
Wed, 21 Nov 2012 09:02:13 -0800
changeset 14571 1e4d36113875
parent 14287 4554a0b881ae
child 18081 c0a9e6c4058c
permissions -rw-r--r--
8003690: Example code in JVMTI GetStackTrace documentation is broken Summary: Fixed to minor errors in example code Reviewed-by: sspitsyn, dholmes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
<?xml version="1.0" encoding="ISO-8859-1"?>
489c9b5090e2 Initial load
duke
parents:
diff changeset
     2
<?xml-stylesheet type="text/xsl" href="jvmti.xsl"?>
489c9b5090e2 Initial load
duke
parents:
diff changeset
     3
<!--
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
     4
 Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     5
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     6
489c9b5090e2 Initial load
duke
parents:
diff changeset
     7
 This code is free software; you can redistribute it and/or modify it
489c9b5090e2 Initial load
duke
parents:
diff changeset
     8
 under the terms of the GNU General Public License version 2 only, as
489c9b5090e2 Initial load
duke
parents:
diff changeset
     9
 published by the Free Software Foundation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    10
489c9b5090e2 Initial load
duke
parents:
diff changeset
    11
 This code is distributed in the hope that it will be useful, but WITHOUT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    12
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    13
 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
489c9b5090e2 Initial load
duke
parents:
diff changeset
    14
 version 2 for more details (a copy is included in the LICENSE file that
489c9b5090e2 Initial load
duke
parents:
diff changeset
    15
 accompanied this code).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    16
489c9b5090e2 Initial load
duke
parents:
diff changeset
    17
 You should have received a copy of the GNU General Public License version
489c9b5090e2 Initial load
duke
parents:
diff changeset
    18
 2 along with this work; if not, write to the Free Software Foundation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    19
 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    20
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1
diff changeset
    21
 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1
diff changeset
    22
 or visit www.oracle.com if you need additional information or have any
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1
diff changeset
    23
 questions.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
    25
-->
489c9b5090e2 Initial load
duke
parents:
diff changeset
    26
489c9b5090e2 Initial load
duke
parents:
diff changeset
    27
<!DOCTYPE specification [
489c9b5090e2 Initial load
duke
parents:
diff changeset
    28
   <!ELEMENT specification (title, intro*, functionsection, errorsection, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
    29
                            eventsection, datasection, issuessection, changehistory)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    30
   <!ATTLIST specification label CDATA #REQUIRED 
489c9b5090e2 Initial load
duke
parents:
diff changeset
    31
                           majorversion CDATA #REQUIRED 
489c9b5090e2 Initial load
duke
parents:
diff changeset
    32
                           minorversion CDATA #REQUIRED 
489c9b5090e2 Initial load
duke
parents:
diff changeset
    33
                           microversion CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    34
489c9b5090e2 Initial load
duke
parents:
diff changeset
    35
   <!ELEMENT title (#PCDATA|jvmti|tm)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    36
   <!ATTLIST title subtitle CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    37
489c9b5090e2 Initial load
duke
parents:
diff changeset
    38
   <!ELEMENT intro ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    39
   <!ATTLIST intro id CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    40
                   label CDATA "">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    41
489c9b5090e2 Initial load
duke
parents:
diff changeset
    42
   <!ELEMENT functionsection (intro*, category*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    43
   <!ATTLIST functionsection label CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    44
489c9b5090e2 Initial load
duke
parents:
diff changeset
    45
   <!ELEMENT category ((intro|typedef|uniontypedef|capabilitiestypedef)*, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
    46
                          (function|callback|elide)*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    47
   <!ATTLIST category id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    48
                      label CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    49
489c9b5090e2 Initial load
duke
parents:
diff changeset
    50
   <!ELEMENT function (synopsis, typedef*, description?, origin,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    51
                         (capabilities|eventcapabilities), 
489c9b5090e2 Initial load
duke
parents:
diff changeset
    52
                         parameters, errors)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    53
   <!ATTLIST function id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    54
                      num CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    55
                      phase (onload|onloadOnly|start|live|any) #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    56
		      callbacksafe (safe|unsafe) #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    57
                      impl CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    58
                      hide CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    59
                      jkernel (yes|no) #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
                      since CDATA "1.0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    61
489c9b5090e2 Initial load
duke
parents:
diff changeset
    62
   <!ELEMENT callback ((jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|jthreadGroup|jobject|
489c9b5090e2 Initial load
duke
parents:
diff changeset
    63
                        jvalue|enum|jint|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void),
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
                        synopsis, description?, parameters)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    65
   <!ATTLIST callback id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
                      since CDATA "1.0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    67
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
   <!ELEMENT synopsis (#PCDATA|jvmti)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    69
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
   <!ELEMENT typedef (description?, field*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
   <!ATTLIST typedef id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    72
                     label CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
                     since CDATA "1.0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    74
489c9b5090e2 Initial load
duke
parents:
diff changeset
    75
   <!ELEMENT uniontypedef (description?, field*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    76
   <!ATTLIST uniontypedef id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    77
                     label CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    78
                     since CDATA "1.0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    79
489c9b5090e2 Initial load
duke
parents:
diff changeset
    80
   <!ELEMENT field ((jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|jthreadGroup|jobject|
489c9b5090e2 Initial load
duke
parents:
diff changeset
    81
                     jvalue|enum|jint|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|allocfieldbuf|inptr|inbuf|outbuf|vmbuf|ptrtype|struct), 
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
                    description)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
   <!ATTLIST field id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
   <!ELEMENT capabilitiestypedef (description?, capabilityfield*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
   <!ATTLIST capabilitiestypedef id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
                     label CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
   <!ELEMENT capabilityfield (description)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
   <!ATTLIST capabilityfield id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
                   disp1 CDATA ""
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
                   disp2 CDATA ""
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
                   since CDATA "1.0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
   <!ELEMENT description ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
   <!ELEMENT capabilities (required*, capability*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    98
489c9b5090e2 Initial load
duke
parents:
diff changeset
    99
   <!ELEMENT eventcapabilities EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   100
489c9b5090e2 Initial load
duke
parents:
diff changeset
   101
   <!ELEMENT required ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   102
   <!ATTLIST required id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   103
489c9b5090e2 Initial load
duke
parents:
diff changeset
   104
   <!ELEMENT capability ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   105
   <!ATTLIST capability id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   106
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
   <!ELEMENT parameters (param*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   108
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
   <!ELEMENT param ((jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|jthreadGroup|jobject|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   110
                     jvalue|enum|jint|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|varargs|struct|ptrtype|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   111
                     outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf), 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   112
                    description)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   113
   <!ATTLIST param id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   114
489c9b5090e2 Initial load
duke
parents:
diff changeset
   115
   <!ELEMENT jmethodID EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   116
   <!ATTLIST jmethodID class  CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   117
                       native CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   118
489c9b5090e2 Initial load
duke
parents:
diff changeset
   119
   <!ELEMENT jfieldID EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   120
   <!ATTLIST jfieldID class CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   121
489c9b5090e2 Initial load
duke
parents:
diff changeset
   122
   <!ELEMENT jclass EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   123
   <!ATTLIST jclass method CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   124
                    field  CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   125
489c9b5090e2 Initial load
duke
parents:
diff changeset
   126
   <!ELEMENT jframeID EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   127
   <!ATTLIST jframeID thread CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   128
489c9b5090e2 Initial load
duke
parents:
diff changeset
   129
   <!ELEMENT jrawMonitorID EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   130
489c9b5090e2 Initial load
duke
parents:
diff changeset
   131
   <!ELEMENT jthread EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   132
   <!ATTLIST jthread started CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   133
                     null CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   134
                     frame CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   135
                     impl CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   136
489c9b5090e2 Initial load
duke
parents:
diff changeset
   137
   <!ELEMENT varargs EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   138
489c9b5090e2 Initial load
duke
parents:
diff changeset
   139
   <!ELEMENT jthreadGroup EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   140
   <!ELEMENT jobject EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   141
   <!ELEMENT jvalue EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   142
   <!ELEMENT jchar EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   143
   <!ELEMENT jint EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   144
   <!ATTLIST jint min CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   145
   <!ELEMENT jlong EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   146
   <!ELEMENT jfloat EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   147
   <!ELEMENT jdouble EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   148
   <!ELEMENT jlocation EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   149
   <!ELEMENT jboolean EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   150
   <!ELEMENT char EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   151
   <!ELEMENT uchar EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   152
   <!ELEMENT size_t EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   153
   <!ELEMENT void EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   154
   <!ELEMENT enum (#PCDATA)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   155
   <!ELEMENT struct (#PCDATA)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   156
489c9b5090e2 Initial load
duke
parents:
diff changeset
   157
   <!ELEMENT nullok ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   158
489c9b5090e2 Initial load
duke
parents:
diff changeset
   159
   <!ELEMENT ptrtype     ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   160
                                   jthreadGroup|jobject|jvalue), nullok?)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   161
489c9b5090e2 Initial load
duke
parents:
diff changeset
   162
   <!ELEMENT outptr     ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   163
                                   jthreadGroup|jobject|jvalue|enum|jchar|jint|jlong|jfloat|jdouble|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   164
                                   jlocation|jboolean|char|uchar|size_t|void), nullok?)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   165
489c9b5090e2 Initial load
duke
parents:
diff changeset
   166
   <!ELEMENT allocbuf   ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   167
                                   jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   168
                                   jlocation|jboolean|char|uchar|size_t|void), nullok?)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   169
   <!ATTLIST allocbuf incount CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   170
                      outcount CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   171
489c9b5090e2 Initial load
duke
parents:
diff changeset
   172
   <!ELEMENT allocallocbuf   ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   173
                                   jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   174
                                   jlocation|jboolean|char|uchar|size_t|void), nullok?)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   175
   <!ATTLIST allocallocbuf incount CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   176
                      outcount CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   177
489c9b5090e2 Initial load
duke
parents:
diff changeset
   178
   <!ELEMENT inptr      (struct, nullok?)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   179
489c9b5090e2 Initial load
duke
parents:
diff changeset
   180
   <!ELEMENT inbuf      ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   181
                                   jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   182
                                   jlocation|jboolean|char|uchar|size_t|void), nullok?)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   183
   <!ATTLIST inbuf    incount CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   184
489c9b5090e2 Initial load
duke
parents:
diff changeset
   185
   <!ELEMENT outbuf     ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   186
                                   jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   187
                                   jlocation|jboolean|char|uchar|size_t|void|outbuf), nullok?)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   188
   <!ATTLIST outbuf   incount CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   189
                      outcount CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   190
489c9b5090e2 Initial load
duke
parents:
diff changeset
   191
   <!ELEMENT vmbuf      ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   192
                                   jthreadGroup|jobject|jvalue|enum|jchar|jint|jlong|jfloat|jdouble|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   193
                                   jlocation|jboolean|char|uchar|size_t|void), nullok?)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   194
   <!ATTLIST vmbuf    incount CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   195
                      outcount CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   196
489c9b5090e2 Initial load
duke
parents:
diff changeset
   197
   <!ELEMENT agentbuf   ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   198
                                   jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   199
                                   jlocation|jboolean|char|uchar|size_t|void), nullok?)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   200
   <!ATTLIST agentbuf incount CDATA #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   201
                      outcount CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   202
489c9b5090e2 Initial load
duke
parents:
diff changeset
   203
   <!ELEMENT allocfieldbuf   ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   204
                                   jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
489c9b5090e2 Initial load
duke
parents:
diff changeset
   205
                                   jlocation|jboolean|char|uchar|size_t|void))>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   206
   <!ATTLIST allocfieldbuf outcount CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   207
489c9b5090e2 Initial load
duke
parents:
diff changeset
   208
   <!ELEMENT errors (error*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   209
489c9b5090e2 Initial load
duke
parents:
diff changeset
   210
   <!ELEMENT error ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   211
   <!ATTLIST error id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   212
489c9b5090e2 Initial load
duke
parents:
diff changeset
   213
   <!ELEMENT errorsection (intro*, errorcategory*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   214
   <!ATTLIST errorsection label CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   215
489c9b5090e2 Initial load
duke
parents:
diff changeset
   216
   <!ELEMENT errorcategory (intro*, errorid*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   217
   <!ATTLIST errorcategory id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   218
                           label CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   219
489c9b5090e2 Initial load
duke
parents:
diff changeset
   220
   <!ELEMENT errorid ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   221
   <!ATTLIST errorid id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   222
                     num CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   223
489c9b5090e2 Initial load
duke
parents:
diff changeset
   224
   <!ELEMENT datasection (intro*, basetypes*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   225
489c9b5090e2 Initial load
duke
parents:
diff changeset
   226
   <!ELEMENT basetypes (intro*, basetype*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   227
   <!ATTLIST basetypes id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   228
                       label CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   229
489c9b5090e2 Initial load
duke
parents:
diff changeset
   230
   <!ELEMENT basetype (definition?,description)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   231
   <!ATTLIST basetype id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   232
489c9b5090e2 Initial load
duke
parents:
diff changeset
   233
   <!ELEMENT definition (#PCDATA|jvmti)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   234
489c9b5090e2 Initial load
duke
parents:
diff changeset
   235
   <!ELEMENT eventsection (intro*, (event|elide)*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   236
   <!ATTLIST eventsection label CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   237
489c9b5090e2 Initial load
duke
parents:
diff changeset
   238
   <!ELEMENT event (description, origin, typedef*, capabilities, parameters)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   239
   <!ATTLIST event id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   240
                   label CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   241
                   const CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   242
                   num CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   243
                   phase (onload|start|live|any) #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   244
                   filtered (thread|global) #IMPLIED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   245
                   since CDATA "1.0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   246
489c9b5090e2 Initial load
duke
parents:
diff changeset
   247
   <!ELEMENT issuessection (intro*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   248
   <!ATTLIST issuessection label CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   249
489c9b5090e2 Initial load
duke
parents:
diff changeset
   250
   <!ELEMENT changehistory (intro*, change*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   251
   <!ATTLIST changehistory update CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   252
                           id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   253
489c9b5090e2 Initial load
duke
parents:
diff changeset
   254
   <!ELEMENT change ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   255
   <!ATTLIST change date CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   256
                    version CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   257
489c9b5090e2 Initial load
duke
parents:
diff changeset
   258
   <!ELEMENT functionlink (#PCDATA|jvmti|code|i|b)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   259
   <!ATTLIST functionlink id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   260
489c9b5090e2 Initial load
duke
parents:
diff changeset
   261
   <!ELEMENT datalink (#PCDATA|jvmti|code|i|b)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   262
   <!ATTLIST datalink id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   263
489c9b5090e2 Initial load
duke
parents:
diff changeset
   264
   <!ELEMENT typelink (#PCDATA|jvmti|code|i|b)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   265
   <!ATTLIST typelink id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   266
489c9b5090e2 Initial load
duke
parents:
diff changeset
   267
   <!ELEMENT fieldlink (#PCDATA|jvmti|code|i|b)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   268
   <!ATTLIST fieldlink id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   269
                       struct CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   270
489c9b5090e2 Initial load
duke
parents:
diff changeset
   271
   <!ELEMENT paramlink (#PCDATA|jvmti|code|i|b)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   272
   <!ATTLIST paramlink id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   273
489c9b5090e2 Initial load
duke
parents:
diff changeset
   274
   <!ELEMENT eventlink (#PCDATA|jvmti|code|i|b)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   275
   <!ATTLIST eventlink id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   276
489c9b5090e2 Initial load
duke
parents:
diff changeset
   277
   <!ELEMENT errorlink (#PCDATA|jvmti|code|i|b|tm)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   278
   <!ATTLIST errorlink id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   279
489c9b5090e2 Initial load
duke
parents:
diff changeset
   280
   <!ELEMENT externallink (#PCDATA|jvmti|code|i|b|tm)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   281
   <!ATTLIST externallink id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   282
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
   283
   <!ELEMENT vmspec EMPTY>
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
   284
   <!ATTLIST vmspec chapter CDATA #IMPLIED>
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   285
489c9b5090e2 Initial load
duke
parents:
diff changeset
   286
   <!ELEMENT internallink (#PCDATA|jvmti|code|i|b)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   287
   <!ATTLIST internallink id CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   288
489c9b5090e2 Initial load
duke
parents:
diff changeset
   289
   <!ELEMENT functionphaselist EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   290
   <!ATTLIST functionphaselist phase (onload|onloadOnly|start|live|any) #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   291
489c9b5090e2 Initial load
duke
parents:
diff changeset
   292
   <!ELEMENT eventphaselist EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   293
   <!ATTLIST eventphaselist phase (onload|start|live|any) #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   294
489c9b5090e2 Initial load
duke
parents:
diff changeset
   295
   <!ELEMENT issue ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   296
   
489c9b5090e2 Initial load
duke
parents:
diff changeset
   297
   <!ELEMENT rationale ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   298
   
489c9b5090e2 Initial load
duke
parents:
diff changeset
   299
   <!ELEMENT todo ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   300
   
489c9b5090e2 Initial load
duke
parents:
diff changeset
   301
   <!ELEMENT origin (#PCDATA)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   302
489c9b5090e2 Initial load
duke
parents:
diff changeset
   303
   <!ELEMENT elide (intro|function|callback|event)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   304
   <!ATTLIST elide why CDATA #IMPLIED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   305
   
489c9b5090e2 Initial load
duke
parents:
diff changeset
   306
   <!ELEMENT constants (constant*)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   307
   <!ATTLIST constants id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   308
                       label CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   309
                       kind (enum|bits|const) #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   310
                       since CDATA "1.0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   311
489c9b5090e2 Initial load
duke
parents:
diff changeset
   312
   <!ELEMENT constant ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   313
   <!ATTLIST constant id CDATA #REQUIRED
489c9b5090e2 Initial load
duke
parents:
diff changeset
   314
                      num CDATA #REQUIRED>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   315
489c9b5090e2 Initial load
duke
parents:
diff changeset
   316
   <!ELEMENT tm (#PCDATA)>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   317
489c9b5090e2 Initial load
duke
parents:
diff changeset
   318
   <!ELEMENT i (#PCDATA|jvmti|tm)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   319
489c9b5090e2 Initial load
duke
parents:
diff changeset
   320
   <!ELEMENT b (#PCDATA|jvmti|code)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   321
489c9b5090e2 Initial load
duke
parents:
diff changeset
   322
   <!ELEMENT code (#PCDATA|space)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   323
489c9b5090e2 Initial load
duke
parents:
diff changeset
   324
   <!ELEMENT pre ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   325
489c9b5090e2 Initial load
duke
parents:
diff changeset
   326
   <!ELEMENT space EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   327
489c9b5090e2 Initial load
duke
parents:
diff changeset
   328
   <!ELEMENT jvmti EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   329
489c9b5090e2 Initial load
duke
parents:
diff changeset
   330
   <!ELEMENT example (#PCDATA|i)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   331
489c9b5090e2 Initial load
duke
parents:
diff changeset
   332
   <!ELEMENT br EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   333
489c9b5090e2 Initial load
duke
parents:
diff changeset
   334
   <!ELEMENT p EMPTY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   335
489c9b5090e2 Initial load
duke
parents:
diff changeset
   336
   <!ELEMENT dl  (dt|dd)+>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   337
489c9b5090e2 Initial load
duke
parents:
diff changeset
   338
   <!ELEMENT dd  ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   339
489c9b5090e2 Initial load
duke
parents:
diff changeset
   340
   <!ELEMENT dt  (#PCDATA|jvmti|code|i|b)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   341
489c9b5090e2 Initial load
duke
parents:
diff changeset
   342
   <!ELEMENT table  (tr)+>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   343
489c9b5090e2 Initial load
duke
parents:
diff changeset
   344
   <!ELEMENT tr  (td|th)*>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   345
489c9b5090e2 Initial load
duke
parents:
diff changeset
   346
   <!ELEMENT td  ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   347
   <!ATTLIST td align (left|right|center) "center">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   348
489c9b5090e2 Initial load
duke
parents:
diff changeset
   349
   <!ELEMENT th  ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   350
   <!ATTLIST th align (left|right|center) "center">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   351
489c9b5090e2 Initial load
duke
parents:
diff changeset
   352
   <!ELEMENT ul  (li)+>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   353
   <!ATTLIST ul type (disc|circle|square) "disc">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   354
489c9b5090e2 Initial load
duke
parents:
diff changeset
   355
   <!ELEMENT li  ANY>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   356
 ]>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   357
489c9b5090e2 Initial load
duke
parents:
diff changeset
   358
<specification label="JVM(TM) Tool Interface"
489c9b5090e2 Initial load
duke
parents:
diff changeset
   359
        majorversion="1"
7413
59b978f8fbdf 7003782: Update JVMTI version to 1.2 for jdk7
kamg
parents: 5547
diff changeset
   360
        minorversion="2"
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
   361
        microversion="2">
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   362
  <title subtitle="Version">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   363
    <tm>JVM</tm> Tool Interface
489c9b5090e2 Initial load
duke
parents:
diff changeset
   364
  </title>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   365
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   366
  <intro id="whatIs" label="What is the JVM Tool Interface?">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   367
    The <tm>JVM</tm> Tool Interface (<jvmti/>) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   368
    is a programming interface used by development and monitoring tools. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   369
    It provides both a way to inspect the state and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   370
    to control the execution of applications running in the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   371
    <tm>Java</tm> virtual machine (VM).
489c9b5090e2 Initial load
duke
parents:
diff changeset
   372
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   373
    <jvmti/> is intended to provide a VM interface for the full breadth of tools
489c9b5090e2 Initial load
duke
parents:
diff changeset
   374
    that need access to VM state, including but not limited to: profiling,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   375
    debugging, monitoring, thread analysis, and coverage analysis tools.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   376
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   377
    <jvmti/> may not be available in all implementations of the <tm>Java</tm> virtual
489c9b5090e2 Initial load
duke
parents:
diff changeset
   378
    machine.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   379
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   380
    <jvmti/> is a two-way interface. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   381
    A client of <jvmti/>, hereafter called an <i>agent</i>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   382
    can be notified of
489c9b5090e2 Initial load
duke
parents:
diff changeset
   383
    interesting occurrences through <internallink id="EventSection">events</internallink>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   384
    <jvmti/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   385
    can query and control the application through many 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   386
    <internallink id="FunctionSection">functions</internallink>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   387
    either in response to events or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   388
    independent of them.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   389
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   390
    Agents run in the same process with and communicate directly with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   391
    the virtual machine executing
489c9b5090e2 Initial load
duke
parents:
diff changeset
   392
    the application being examined.  This communication is
489c9b5090e2 Initial load
duke
parents:
diff changeset
   393
    through a native interface (<jvmti/>). The native in-process interface allows
489c9b5090e2 Initial load
duke
parents:
diff changeset
   394
    maximal control with minimal intrusion on the part of a tool. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   395
    Typically, agents are relatively compact. They can be controlled
489c9b5090e2 Initial load
duke
parents:
diff changeset
   396
    by a separate process which implements the bulk of a tool's
489c9b5090e2 Initial load
duke
parents:
diff changeset
   397
    function without interfering with the target application's normal execution.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   398
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   399
489c9b5090e2 Initial load
duke
parents:
diff changeset
   400
  <intro id="architecture" label="Architecture">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   401
    Tools can be written directly to <jvmti/> or indirectly
489c9b5090e2 Initial load
duke
parents:
diff changeset
   402
    through higher level interfaces.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   403
    The Java Platform Debugger Architecture includes <jvmti/>, but also
489c9b5090e2 Initial load
duke
parents:
diff changeset
   404
    contains higher-level, out-of-process debugger interfaces. The higher-level 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   405
    interfaces are more appropriate than <jvmti/> for many tools. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   406
    For more information on the Java Platform Debugger Architecture, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   407
    see the 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
   408
    <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html">Java 
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   409
      Platform Debugger Architecture website</externallink>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   410
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   411
489c9b5090e2 Initial load
duke
parents:
diff changeset
   412
  <intro id="writingAgents" label="Writing Agents">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   413
    Agents can be written in any native language that supports C
489c9b5090e2 Initial load
duke
parents:
diff changeset
   414
    language calling conventions and C or C++
489c9b5090e2 Initial load
duke
parents:
diff changeset
   415
    definitions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   416
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   417
    The function, event, data type, and constant definitions needed for
489c9b5090e2 Initial load
duke
parents:
diff changeset
   418
    using <jvmti/> are defined in the include file <code>jvmti.h</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   419
    To use these definitions add the <tm>J2SE</tm> include directory
489c9b5090e2 Initial load
duke
parents:
diff changeset
   420
    to your include path and add
489c9b5090e2 Initial load
duke
parents:
diff changeset
   421
    <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   422
#include &lt;jvmti.h&gt;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   423
    </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   424
    to your source code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   425
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   426
489c9b5090e2 Initial load
duke
parents:
diff changeset
   427
  <intro id="deployingAgents" label="Deploying Agents">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   428
    An agent is deployed in a platform specific manner but is typically the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   429
    platform equivalent of a dynamic library. On the <tm>Windows</tm> operating 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   430
    system, for example, an agent library is a "Dynamic Linked Library" (DLL). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   431
    On the <tm>Solaris</tm> Operating Environment, an agent library is a shared
489c9b5090e2 Initial load
duke
parents:
diff changeset
   432
    object (<code>.so</code> file).
489c9b5090e2 Initial load
duke
parents:
diff changeset
   433
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   434
    An agent may be started at VM startup by specifying the agent library
489c9b5090e2 Initial load
duke
parents:
diff changeset
   435
    name using a <internallink id="starting">command line option</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   436
    Some implementations may support a mechanism to <internallink id="onattach"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   437
    start agents</internallink> in the live <functionlink id="GetPhase">phase</functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   438
    The details of how this is initiated are implementation specific.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   439
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   440
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   441
  <intro id="starting" label="Agent Command Line Options">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   442
    The term "command-line option" is used below to
489c9b5090e2 Initial load
duke
parents:
diff changeset
   443
    mean options supplied in the <code>JavaVMInitArgs</code> argument
489c9b5090e2 Initial load
duke
parents:
diff changeset
   444
    to the <code>JNI_CreateJavaVM</code> function of the JNI
489c9b5090e2 Initial load
duke
parents:
diff changeset
   445
    Invocation API.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   446
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   447
    One of the two following 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   448
    command-line options is used on VM startup to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   449
    properly load and run agents.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   450
    These arguments identify the library containing 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   451
    the agent as well as an options
489c9b5090e2 Initial load
duke
parents:
diff changeset
   452
    string to be passed in at startup. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   453
    <dl>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   454
      <dt><code>-agentlib:</code><i>&lt;agent-lib-name&gt;</i><code>=</code><i>&lt;options&gt;</i></dt>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   455
      <dd>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   456
	The name following <code>-agentlib:</code> is the name of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   457
	library to load.  Lookup of the library, both its full name and location,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   458
	proceeds in a platform-specific manner. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   459
	Typically, the <i>&lt;agent-lib-name&gt;</i> is expanded to an
489c9b5090e2 Initial load
duke
parents:
diff changeset
   460
	operating system specific file name.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   461
	The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   462
	For example, if the option 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   463
	<code>-agentlib:foo=opt1,opt2</code> is specified, the VM will attempt to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   464
	load the shared library <code>foo.dll</code> from the system <code>PATH</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   465
        under <tm>Windows</tm> or <code>libfoo.so</code> from the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   466
	<code>LD_LIBRARY_PATH</code> under the <tm>Solaris</tm> operating environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   467
      </dd>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   468
      <dt><code>-agentpath:</code><i>&lt;path-to-agent&gt;</i><code>=</code><i>&lt;options&gt;</i></dt>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   469
      <dd>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   470
	The path following <code>-agentpath:</code> is the absolute path from which
489c9b5090e2 Initial load
duke
parents:
diff changeset
   471
	to load the library.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   472
	No library name expansion will occur.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   473
	The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   474
	For example, if the option 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   475
	<code>-agentpath:c:\myLibs\foo.dll=opt1,opt2</code> is specified, the VM will attempt to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   476
	load the shared library <code>c:\myLibs\foo.dll</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   477
      </dd>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   478
    </dl>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   479
    The start-up routine <internallink id="onload"><code>Agent_OnLoad</code></internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   480
    in the library will be invoked.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   481
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   482
    Libraries loaded with <code>-agentlib:</code> or <code>-agentpath:</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   483
    will be searched for JNI native method implementations to facilitate the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   484
    use of Java programming language code in tools, as is needed for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   485
    <internallink id="bci">bytecode instrumentation</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   486
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   487
    The agent libraries will be searched after all other libraries have been
489c9b5090e2 Initial load
duke
parents:
diff changeset
   488
    searched (agents wishing to override or intercept the native method
489c9b5090e2 Initial load
duke
parents:
diff changeset
   489
    implementations of non-agent methods can use the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   490
    <eventlink id="NativeMethodBind">NativeMethodBind event</eventlink>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
   491
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   492
    These switches do the above and nothing more - they do not change the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   493
    state of the VM or <jvmti/>.  No command line options are needed 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   494
    to enable <jvmti/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   495
    or aspects of <jvmti/>, this is handled programmatically
489c9b5090e2 Initial load
duke
parents:
diff changeset
   496
    by the use of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   497
    <internallink id="capability">capabilities</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   498
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   499
489c9b5090e2 Initial load
duke
parents:
diff changeset
   500
  <intro id="startup" label="Agent Start-Up">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   501
    The VM starts each agent by invoking a start-up function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   502
    If the agent is started in the <code>OnLoad</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   503
    <functionlink id="GetPhase">phase</functionlink> the function
489c9b5090e2 Initial load
duke
parents:
diff changeset
   504
    <internallink id="onload"><code>Agent_OnLoad</code></internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   505
    will be invoked.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   506
    If the agent is started in the live
489c9b5090e2 Initial load
duke
parents:
diff changeset
   507
    <functionlink id="GetPhase">phase</functionlink> the function
489c9b5090e2 Initial load
duke
parents:
diff changeset
   508
    <internallink id="onattach"><code>Agent_OnAttach</code></internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   509
    will be invoked.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   510
    Exactly one call to a start-up function is made per agent.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   511
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   512
489c9b5090e2 Initial load
duke
parents:
diff changeset
   513
  <intro id="onload" label="Agent Start-Up (OnLoad phase)">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   514
    If an agent is started during the <code>OnLoad</code> phase then its
489c9b5090e2 Initial load
duke
parents:
diff changeset
   515
    agent library must export a start-up function with the following prototype:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   516
    <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   517
JNIEXPORT jint JNICALL 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   518
Agent_OnLoad(JavaVM *vm, char *options, void *reserved)</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   519
    The VM will start the agent by calling this function.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   520
    It will be called early enough in VM initialization that:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   521
    <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   522
      <li><functionlink id="SetSystemProperty">system properties</functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   523
	may be set before they have been used in the start-up of the VM</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   524
      <li>the full set of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   525
	<internallink id="capability">capabilities</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   526
	is still available (note that capabilities that configure the VM
489c9b5090e2 Initial load
duke
parents:
diff changeset
   527
	may only be available at this time--see the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   528
	<internallink id="capability">Capability function section</internallink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   529
      <li>no bytecodes have executed</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   530
      <li>no classes have been loaded</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   531
      <li>no objects have been created</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   532
    </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   533
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   534
    The VM will call the <code>Agent_OnLoad</code> function with
489c9b5090e2 Initial load
duke
parents:
diff changeset
   535
    <i>&lt;options&gt;</i> as the second argument - 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   536
    that is, using the command-line option examples,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   537
    <code>"opt1,opt2"</code> will be passed to the <code>char *options</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   538
    argument of <code>Agent_OnLoad</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   539
    The <code>options</code> argument is encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
   540
    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   541
    If <i>=&lt;options&gt;</i> is not specified, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   542
    a zero length string is passed to <code>options</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   543
    The lifespan of the <code>options</code> string is the <code>Agent_OnLoad</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   544
    call.  If needed beyond this time the string or parts of the string must
489c9b5090e2 Initial load
duke
parents:
diff changeset
   545
    be copied.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   546
    The period between when <code>Agent_OnLoad</code> is called and when it
489c9b5090e2 Initial load
duke
parents:
diff changeset
   547
    returns is called the <i>OnLoad phase</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   548
    Since the VM is not initialized during the OnLoad 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   549
    <functionlink id="GetPhase">phase</functionlink>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   550
    the set of allowed operations 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   551
    inside <code>Agent_OnLoad</code> is restricted (see the function descriptions for the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   552
    functionality available at this time). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   553
    The agent can safely process the options and set 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   554
    event callbacks with <functionlink id="SetEventCallbacks"></functionlink>. Once  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   555
    the VM initialization event is received 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   556
    (that is, the <eventlink id="VMInit">VMInit</eventlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   557
    callback is invoked), the agent
489c9b5090e2 Initial load
duke
parents:
diff changeset
   558
    can complete its initialization.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   559
    <rationale>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   560
      Early startup is required so that agents can set the desired capabilities,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   561
      many of which must be set before the VM is initialized.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   562
      In JVMDI, the -Xdebug command-line option provided 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   563
      very coarse-grain control of capabilities. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   564
      JVMPI implementations use various tricks to provide a single "JVMPI on" switch.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   565
      No reasonable command-line 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   566
      option could provide the fine-grain of control required to balance needed capabilities vs
489c9b5090e2 Initial load
duke
parents:
diff changeset
   567
      performance impact.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   568
      Early startup is also needed so that agents can control the execution
489c9b5090e2 Initial load
duke
parents:
diff changeset
   569
      environment - modifying the file system and system properties to install
489c9b5090e2 Initial load
duke
parents:
diff changeset
   570
      their functionality.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   571
    </rationale>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   572
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   573
    The return value from <code>Agent_OnLoad</code> is used to indicate an error.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   574
    Any value other than zero indicates an error and causes termination of the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   575
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   576
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   577
  <intro id="onattach" label="Agent Start-Up (Live phase)">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   578
    A VM may support a mechanism that allows agents to be started in the VM during the live 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   579
    <functionlink id="GetPhase">phase</functionlink>. The details of how this is supported,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   580
    are implementation specific. For example, a tool may use some platform specific mechanism, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   581
    or implementation specific API, to attach to the running VM, and request it start a given
489c9b5090e2 Initial load
duke
parents:
diff changeset
   582
    agent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   583
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   584
    If an agent is started during the live phase then its agent library
489c9b5090e2 Initial load
duke
parents:
diff changeset
   585
    must export a start-up function 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   586
    with the following prototype:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   587
    <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   588
JNIEXPORT jint JNICALL 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   589
Agent_OnAttach(JavaVM* vm, char *options, void *reserved)</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   590
    <p/>         
489c9b5090e2 Initial load
duke
parents:
diff changeset
   591
    The VM will start the agent by calling this function.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   592
    It will be called in the context of a thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
   593
    that is attached to the VM. The first argument <i>&lt;vm&gt;</i> is the Java VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   594
    The <i>&lt;options&gt;</i> argument is the startup options provided to the agent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   595
    <i>&lt;options&gt;</i> is encoded as a <internallink id="mUTF">modified UTF-8
489c9b5090e2 Initial load
duke
parents:
diff changeset
   596
    </internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   597
    If startup options were not provided, a zero length string is passed to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   598
    <code>options</code>. The lifespan of the <code>options</code> string is the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   599
    <code>Agent_OnAttach</code> call.  If needed beyond this time the string or parts of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   600
    the string must be copied.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   601
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   602
    Note that some <internallink id="capability">capabilities</internallink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   603
    may not be available in the live phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   604
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   605
    The <code>Agent_OnAttach</code> function initializes the agent and returns a value
489c9b5090e2 Initial load
duke
parents:
diff changeset
   606
    to the VM to indicate if an error occurred. Any value other than zero indicates an error. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   607
    An error does not cause the VM to terminate. Instead the VM ignores the error, or takes 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   608
    some implementation specific action -- for example it might print an error to standard error, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   609
    or record the error in a system log.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   610
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   611
489c9b5090e2 Initial load
duke
parents:
diff changeset
   612
  <intro id="onunload" label="Agent Shutdown">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   613
    The library may optionally export a 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   614
    shutdown function with the following prototype:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   615
    <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   616
JNIEXPORT void JNICALL 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   617
Agent_OnUnload(JavaVM *vm)</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   618
    This function will be called by the VM when the library is about to be unloaded.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   619
    The library will be unloaded and this function will be called if some platform specific 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   620
    mechanism causes the unload (an unload mechanism is not specified in this document)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   621
    or the library is (in effect) unloaded by the termination of the VM whether through 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   622
    normal termination or VM failure, including start-up failure.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   623
    Uncontrolled shutdown is, of couse, an exception to this rule.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   624
    Note the distinction between this function and the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   625
    <eventlink id="VMDeath">VM Death event</eventlink>: for the VM Death event
489c9b5090e2 Initial load
duke
parents:
diff changeset
   626
    to be sent, the VM must have run at least to the point of initialization and a valid 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   627
    <jvmti/> environment must exist which has set a callback for VMDeath
489c9b5090e2 Initial load
duke
parents:
diff changeset
   628
    and enabled the event
489c9b5090e2 Initial load
duke
parents:
diff changeset
   629
    None of these are required for <code>Agent_OnUnload</code> and this function
489c9b5090e2 Initial load
duke
parents:
diff changeset
   630
    is also called if the library is unloaded for other reasons.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   631
    In the case that a VM Death event is sent, it will be sent before this 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   632
    function is called (assuming this function is called due to VM termination).
489c9b5090e2 Initial load
duke
parents:
diff changeset
   633
    This function can be used to clean-up resources allocated by the agent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   634
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   635
489c9b5090e2 Initial load
duke
parents:
diff changeset
   636
  <intro id="tooloptions" label="JAVA_TOOL_OPTIONS">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   637
    Since the command-line cannot always be accessed or modified, for example in embedded VMs
489c9b5090e2 Initial load
duke
parents:
diff changeset
   638
    or simply VMs launched deep within scripts, a <code>JAVA_TOOL_OPTIONS</code> variable is
489c9b5090e2 Initial load
duke
parents:
diff changeset
   639
    provided so that agents may be launched in these cases.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   640
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   641
    Platforms which support environment variables or other named strings, may support the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   642
    <code>JAVA_TOOL_OPTIONS</code> variable.  This variable will be broken into options at white-space 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   643
    boundaries.  White-space characters include space, tab, carriage-return, new-line, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   644
    vertical-tab, and form-feed.  Sequences of white-space characters are considered 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   645
    equivalent to a single white-space character.  No white-space is included in the options 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   646
    unless quoted.  Quoting is as follows:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   647
    <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   648
        <li>All characters enclosed between a pair of single quote marks (''), except a single 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   649
        quote, are quoted.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   650
        <li>Double quote characters have no special meaning inside a pair of single quote marks.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   651
        <li>All characters enclosed between a pair of double quote marks (""), except a double 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   652
        quote, are quoted.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   653
        <li>Single quote characters have no special meaning inside a pair of double quote marks.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   654
        <li>A quoted part can start or end anywhere in the variable.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   655
        <li>White-space characters have no special meaning when quoted -- they are included in
489c9b5090e2 Initial load
duke
parents:
diff changeset
   656
        the option like any other character and do not mark white-space boundaries.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   657
        <li>The pair of quote marks is not included in the option.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   658
    </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   659
    <code>JNI_CreateJavaVM</code> (in the JNI Invocation API) will prepend these options to the options supplied 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   660
    in its <code>JavaVMInitArgs</code> argument. Platforms may disable this feature in cases where security is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   661
    a concern; for example, the Reference Implementation disables this feature on Unix systems when 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   662
    the effective user or group ID differs from the real ID.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   663
    This feature is intended to support the initialization of tools -- specifically including the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   664
    launching of native or Java programming language agents.  Multiple tools may wish to use this 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   665
    feature, so the variable should not be overwritten, instead,  options should be appended to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   666
    the variable.  Note that since the variable is processed at the time of the JNI Invocation 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   667
    API create VM call, options processed by a launcher (e.g., VM selection options) will not be handled.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   668
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   669
489c9b5090e2 Initial load
duke
parents:
diff changeset
   670
  <intro id="environments" label="Environments">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   671
    The <jvmti/> specification supports the use of multiple simultaneous
489c9b5090e2 Initial load
duke
parents:
diff changeset
   672
    <jvmti/> agents.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   673
    Each agent has its own <jvmti/> environment.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   674
    That is, the <jvmti/> state is
489c9b5090e2 Initial load
duke
parents:
diff changeset
   675
    separate for each agent - changes to one environment do not affect the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   676
    others.  The state of a <jvmti/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   677
    environment includes:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   678
    <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   679
      <li><functionlink id="SetEventCallbacks">the event callbacks</functionlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   680
      <li><functionlink id="SetEventNotificationMode">the set of events which are enabled</functionlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   681
      <li><internallink id="capability">the capabilities</internallink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   682
      <li><internallink id="memory">the memory allocation/deallocation hooks</internallink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   683
    </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   684
    Although their <jvmti/> state 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   685
    is separate, agents inspect and modify the shared state
489c9b5090e2 Initial load
duke
parents:
diff changeset
   686
    of the VM, they also share the native environment in which they execute.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   687
    As such, an agent can perturb the results of other agents or cause them
489c9b5090e2 Initial load
duke
parents:
diff changeset
   688
    to fail.  It is the responsibility of the agent writer to specify the level
489c9b5090e2 Initial load
duke
parents:
diff changeset
   689
    of compatibility with other agents.  <jvmti/> implementations are not capable
489c9b5090e2 Initial load
duke
parents:
diff changeset
   690
    of preventing destructive interactions between agents. Techniques to reduce
489c9b5090e2 Initial load
duke
parents:
diff changeset
   691
    the likelihood of these occurrences are beyond the scope of this document.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   692
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   693
    An agent creates a <jvmti/> environment 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   694
    by passing a <jvmti/> version 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   695
    as the interface ID to the JNI Invocation API function 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
   696
    <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#GetEnv"><code>GetEnv</code></externallink>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   697
    See <internallink id="jvmtiEnvAccess">Accessing <jvmti/> Functions</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   698
    for more details on the creation and use of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   699
    <jvmti/> environments.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   700
    Typically, <jvmti/> environments are created by calling <code>GetEnv</code> from 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   701
    <internallink id="onload"><code>Agent_OnLoad</code></internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   702
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   703
489c9b5090e2 Initial load
duke
parents:
diff changeset
   704
  <intro id="bci" label="Bytecode Instrumentation">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   705
    This interface does not include some events that one might expect in an interface with
489c9b5090e2 Initial load
duke
parents:
diff changeset
   706
    profiling support.  Some examples include object allocation events and full speed
489c9b5090e2 Initial load
duke
parents:
diff changeset
   707
    method enter and exit events.  The interface instead provides support for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   708
    <i>bytecode instrumentation</i>, the ability to alter the Java virtual machine
489c9b5090e2 Initial load
duke
parents:
diff changeset
   709
    bytecode instructions which comprise the target program.  Typically, these alterations
489c9b5090e2 Initial load
duke
parents:
diff changeset
   710
    are to add "events" to the code of a method - for example, to add, at the beginning of a method,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   711
    a call to <code>MyProfiler.methodEntered()</code>.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   712
    Since the changes are purely additive, they do not modify application
489c9b5090e2 Initial load
duke
parents:
diff changeset
   713
    state or behavior.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   714
    Because the inserted agent code is standard bytecodes, the VM can run at full speed,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   715
    optimizing not only the target program but also the instrumentation.  If the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   716
    instrumentation does not involve switching from bytecode execution, no expensive
489c9b5090e2 Initial load
duke
parents:
diff changeset
   717
    state transitions are needed.  The result is high performance events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   718
    This approach also provides complete control to the agent: instrumentation can be
489c9b5090e2 Initial load
duke
parents:
diff changeset
   719
    restricted to "interesting" portions of the code (e.g., the end user's code) and
489c9b5090e2 Initial load
duke
parents:
diff changeset
   720
    can be conditional.  Instrumentation can run entirely in Java programming language
489c9b5090e2 Initial load
duke
parents:
diff changeset
   721
    code or can call into the native agent.  Instrumentation can simply maintain
489c9b5090e2 Initial load
duke
parents:
diff changeset
   722
    counters or can statistically sample events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   723
    <p/>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   724
    Instrumentation can be inserted in one of three ways:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   725
    <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   726
      <li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   727
	Static Instrumentation: The class file is instrumented before it
489c9b5090e2 Initial load
duke
parents:
diff changeset
   728
	is loaded into the VM - for example, by creating a duplicate directory of
489c9b5090e2 Initial load
duke
parents:
diff changeset
   729
	<code>*.class</code> files which have been modified to add the instrumentation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   730
	This method is extremely awkward and, in general, an agent cannot know 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   731
	the origin of the class files which will be loaded.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   732
      </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   733
      <li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   734
	Load-Time Instrumentation: When a class file is loaded by the VM, the raw
489c9b5090e2 Initial load
duke
parents:
diff changeset
   735
	bytes of the class file are sent for instrumentation to the agent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   736
	The <eventlink id="ClassFileLoadHook"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   737
	event, triggered by the class load,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   738
	provides this functionality.  This mechanism provides efficient
489c9b5090e2 Initial load
duke
parents:
diff changeset
   739
	and complete access to one-time instrumentation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   740
      </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   741
      <li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   742
	Dynamic Instrumentation: A class which is already loaded (and possibly
489c9b5090e2 Initial load
duke
parents:
diff changeset
   743
	even running) is modified.  This optional feature is provided by the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   744
	<eventlink id="ClassFileLoadHook"/> event, triggered by calling the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   745
	<functionlink id="RetransformClasses"/> function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   746
	Classes can be modified multiple times and can be returned to their
489c9b5090e2 Initial load
duke
parents:
diff changeset
   747
	original state.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   748
	The mechanism allows instrumentation which changes during the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   749
	course of execution.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   750
      </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   751
    </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   752
    <p/>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   753
    The class modification functionality provided in this interface
489c9b5090e2 Initial load
duke
parents:
diff changeset
   754
    is intended to provide a mechanism for instrumentation
489c9b5090e2 Initial load
duke
parents:
diff changeset
   755
    (the <eventlink id="ClassFileLoadHook"/> event
489c9b5090e2 Initial load
duke
parents:
diff changeset
   756
    and the <functionlink id="RetransformClasses"/> function)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   757
    and, during development, for fix-and-continue debugging
489c9b5090e2 Initial load
duke
parents:
diff changeset
   758
    (the <functionlink id="RedefineClasses"/> function).
489c9b5090e2 Initial load
duke
parents:
diff changeset
   759
    <p/>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
   760
    Care must be taken to avoid perturbing dependencies, especially when 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   761
    instrumenting core classes.  For example, an approach to getting notification
489c9b5090e2 Initial load
duke
parents:
diff changeset
   762
    of every object allocation is to instrument the constructor on 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   763
    <code>Object</code>.  Assuming that the constructor is initially
489c9b5090e2 Initial load
duke
parents:
diff changeset
   764
    empty, the constructor could be changed to:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   765
    <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   766
      public Object() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   767
        MyProfiler.allocationTracker(this);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   768
      }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   769
    </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   770
    However, if this change was made using the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   771
    <eventlink id="ClassFileLoadHook"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   772
    event then this might impact a typical VM as follows: 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   773
    the first created object will call the constructor causing a class load of
489c9b5090e2 Initial load
duke
parents:
diff changeset
   774
    <code>MyProfiler</code>; which will then cause
489c9b5090e2 Initial load
duke
parents:
diff changeset
   775
    object creation, and since <code>MyProfiler</code> isn't loaded yet,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   776
    infinite recursion; resulting in a stack overflow.  A refinement of this
489c9b5090e2 Initial load
duke
parents:
diff changeset
   777
    would be to delay invoking the tracking method until a safe time.  For
489c9b5090e2 Initial load
duke
parents:
diff changeset
   778
    example, <code>trackAllocations</code> could be set in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   779
    handler for the <code>VMInit</code> event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   780
    <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   781
      static boolean trackAllocations = false;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   782
489c9b5090e2 Initial load
duke
parents:
diff changeset
   783
      public Object() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   784
        if (trackAllocations) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   785
          MyProfiler.allocationTracker(this);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   786
        }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   787
      }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   788
    </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   789
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   790
    The <functionlink id="SetNativeMethodPrefix"/> allows native methods
489c9b5090e2 Initial load
duke
parents:
diff changeset
   791
    to be instrumented by the use of wrapper methods.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   792
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   793
489c9b5090e2 Initial load
duke
parents:
diff changeset
   794
  <intro id="mUTF" label="Modified UTF-8 String Encoding">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   795
    <jvmti/> uses modified UTF-8 to encode character strings.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   796
    This is the same encoding used by JNI.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   797
    Modified UTF-8 differs 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   798
    from standard UTF-8 in the representation of supplementary characters 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   799
    and of the null character. See the
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
   800
    <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp16542">
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   801
      Modified UTF-8 Strings</externallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   802
    section of the JNI specification for details.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   803
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   804
489c9b5090e2 Initial load
duke
parents:
diff changeset
   805
  <intro id="context" label="Specification Context">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   806
    Since this interface provides access to the state of applications running in the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   807
    Java virtual machine; 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   808
    terminology refers to the Java platform and not the native
489c9b5090e2 Initial load
duke
parents:
diff changeset
   809
    platform (unless stated otherwise).  For example:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   810
    <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   811
      <li>"thread" means Java programming language thread.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   812
      <li>"stack frame" means Java virtual machine stack frame.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   813
      <li>"class" means Java programming language class.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   814
      <li>"heap" means Java virtual machine heap.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   815
      <li>"monitor" means Java programming language object monitor.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   816
    </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   817
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   818
    Sun, Sun Microsystems, the Sun logo, Java, and JVM
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1
diff changeset
   819
    are trademarks or registered trademarks of Oracle 
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1
diff changeset
   820
    and/or its affiliates, in the U.S. and other countries.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   821
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   822
489c9b5090e2 Initial load
duke
parents:
diff changeset
   823
489c9b5090e2 Initial load
duke
parents:
diff changeset
   824
<functionsection label="Functions">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   825
  <intro id="jvmtiEnvAccess" label="Accessing Functions">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   826
    Native code accesses <jvmti/> features 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   827
    by calling <jvmti/> functions. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   828
    Access to <jvmti/> functions is by use of an interface pointer
489c9b5090e2 Initial load
duke
parents:
diff changeset
   829
    in the same manner as 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
   830
    <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html">Java 
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   831
      Native Interface (JNI) functions</externallink> are accessed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   832
    The <jvmti/> interface pointer is called the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   833
    <i>environment pointer</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   834
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   835
    An environment pointer is a pointer to an environment and has
489c9b5090e2 Initial load
duke
parents:
diff changeset
   836
    the type <code>jvmtiEnv*</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   837
    An environment has information about its <jvmti/> connection.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   838
    The first value in the environment is a pointer to the function table.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   839
    The function table is an array of pointers to <jvmti/> functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   840
    Every function pointer is at a predefined offset inside the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   841
    array. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   842
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   843
    When used from the C language:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   844
    double indirection is used to access the functions;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   845
    the environment pointer provides context and is the first
489c9b5090e2 Initial load
duke
parents:
diff changeset
   846
    parameter of each function call; for example:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   847
    <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   848
jvmtiEnv *jvmti;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   849
...
489c9b5090e2 Initial load
duke
parents:
diff changeset
   850
jvmtiError err = (*jvmti)->GetLoadedClasses(jvmti, &amp;class_count, &amp;classes);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   851
    </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   852
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   853
    When used from the C++ language:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   854
    functions are accessed as member functions of <code>jvmtiEnv</code>;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   855
    the environment pointer is not passed to the function call; for example:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   856
    <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   857
jvmtiEnv *jvmti;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   858
...
489c9b5090e2 Initial load
duke
parents:
diff changeset
   859
jvmtiError err = jvmti->GetLoadedClasses(&amp;class_count, &amp;classes);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   860
    </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   861
    Unless otherwise stated, all examples and declarations in this 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   862
    specification use the C language.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   863
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   864
    A <jvmti/> environment can be obtained through the JNI Invocation API
489c9b5090e2 Initial load
duke
parents:
diff changeset
   865
    <code>GetEnv</code> function:
489c9b5090e2 Initial load
duke
parents:
diff changeset
   866
    <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   867
jvmtiEnv *jvmti;
489c9b5090e2 Initial load
duke
parents:
diff changeset
   868
...
489c9b5090e2 Initial load
duke
parents:
diff changeset
   869
(*jvm)->GetEnv(jvm, &amp;jvmti, JVMTI_VERSION_1_0);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   870
    </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   871
    Each call to <code>GetEnv</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   872
    creates a new <jvmti/> connection and thus
489c9b5090e2 Initial load
duke
parents:
diff changeset
   873
    a new <jvmti/> environment. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   874
    The <code>version</code> argument of <code>GetEnv</code> must be
489c9b5090e2 Initial load
duke
parents:
diff changeset
   875
    a <jvmti/> version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   876
    The returned environment may have a different version than the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   877
    requested version but the returned environment must be compatible.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   878
    <code>GetEnv</code> will return <code>JNI_EVERSION</code> if a 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   879
    compatible version is not available, if <jvmti/> is not supported or
489c9b5090e2 Initial load
duke
parents:
diff changeset
   880
    <jvmti/> is not supported in the current VM configuration.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   881
    Other interfaces may be added for creating <jvmti/> environments
489c9b5090e2 Initial load
duke
parents:
diff changeset
   882
    in specific contexts.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   883
    Each environment has its own state (for example,
489c9b5090e2 Initial load
duke
parents:
diff changeset
   884
    <functionlink id="SetEventNotificationMode">desired events</functionlink>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   885
    <functionlink id="SetEventCallbacks">event handling functions</functionlink>, and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   886
    <functionlink id="AddCapabilities">capabilities</functionlink>). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   887
    An environment is released with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   888
    <functionlink id="DisposeEnvironment"></functionlink>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   889
    Thus, unlike JNI which has one environment per thread, <jvmti/> environments work
489c9b5090e2 Initial load
duke
parents:
diff changeset
   890
    across threads and are created dynamically.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   891
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   892
489c9b5090e2 Initial load
duke
parents:
diff changeset
   893
  <intro id="functionReturn" label="Function Return Values">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   894
    <jvmti/> functions always return an
489c9b5090e2 Initial load
duke
parents:
diff changeset
   895
    <internallink id="ErrorSection">error code</internallink> via the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   896
    <datalink id="jvmtiError"/> function return value. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   897
    Some functions can return additional
489c9b5090e2 Initial load
duke
parents:
diff changeset
   898
    values through pointers provided by the calling function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   899
    In some cases, <jvmti/> functions allocate memory that your program must
489c9b5090e2 Initial load
duke
parents:
diff changeset
   900
    explicitly deallocate. This is indicated in the individual <jvmti/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   901
    function descriptions.  Empty lists, arrays, sequences, etc are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   902
    returned as <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   903
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   904
    In the event that the <jvmti/> function encounters
489c9b5090e2 Initial load
duke
parents:
diff changeset
   905
    an error (any return value other than <code>JVMTI_ERROR_NONE</code>) the values
489c9b5090e2 Initial load
duke
parents:
diff changeset
   906
    of memory referenced by argument pointers is undefined, but no memory
489c9b5090e2 Initial load
duke
parents:
diff changeset
   907
    will have been allocated and no global references will have been allocated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   908
    If the error occurs because of invalid input, no action will have occurred.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   909
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   910
489c9b5090e2 Initial load
duke
parents:
diff changeset
   911
<intro id="refs" label="Managing JNI Object References">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   912
    <jvmti/> functions identify objects with JNI references 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   913
    (<datalink id="jobject"/> and <datalink id="jclass"/>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
   914
    and their derivatives
489c9b5090e2 Initial load
duke
parents:
diff changeset
   915
    (<datalink id="jthread"/> and <datalink id="jthreadGroup"/>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
   916
    References passed to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   917
    <jvmti/> functions can be either global or local, but they must be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   918
    strong references. All references returned by <jvmti/> functions are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   919
    local references--these local references are created 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   920
    during the <jvmti/> call.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   921
    Local references are a resource that must be managed (see the 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
   922
    <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp18654">JNI Documentation</externallink>).  
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   923
    When threads return from native code all local references
489c9b5090e2 Initial load
duke
parents:
diff changeset
   924
    are freed.  Note that some threads, including typical
489c9b5090e2 Initial load
duke
parents:
diff changeset
   925
    agent threads, will never return from native code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   926
    A thread is ensured the ability to create sixteen local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   927
    references without the need for any explicit management.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   928
    For threads executing a limited number of <jvmti/> calls before
489c9b5090e2 Initial load
duke
parents:
diff changeset
   929
    returning from native code
489c9b5090e2 Initial load
duke
parents:
diff changeset
   930
    (for example, threads processing events), 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   931
    it may be determined that no explicit management
489c9b5090e2 Initial load
duke
parents:
diff changeset
   932
    is needed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   933
    However, long running agent threads will need explicit
489c9b5090e2 Initial load
duke
parents:
diff changeset
   934
    local reference management--usually with the JNI functions
489c9b5090e2 Initial load
duke
parents:
diff changeset
   935
    <code>PushLocalFrame</code> and <code>PopLocalFrame</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   936
    Conversely, to preserve references beyond the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   937
    return from native code, they must be converted to global references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   938
    These rules do not apply to <datalink id="jmethodID"/> and <datalink id="jfieldID"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   939
    as they are not <datalink id="jobject"/>s.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   940
</intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   941
489c9b5090e2 Initial load
duke
parents:
diff changeset
   942
    <intro id="prereqState" label="Prerequisite State for Calling Functions">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   943
      Unless the function explicitly states that the agent must bring
489c9b5090e2 Initial load
duke
parents:
diff changeset
   944
      a thread or the VM to a particular state (for example, suspended),
489c9b5090e2 Initial load
duke
parents:
diff changeset
   945
      the <jvmti/> implementation is responsible for bringing the VM to a
489c9b5090e2 Initial load
duke
parents:
diff changeset
   946
      safe and consistent state for performing the function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   947
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   948
489c9b5090e2 Initial load
duke
parents:
diff changeset
   949
    <intro id="functionsExceptions" label="Exceptions and Functions">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   950
      <jvmti/> functions never throw exceptions; error conditions are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   951
      communicated via the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   952
      <internallink id="functionReturn">function return value</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   953
      Any existing exception state is preserved across a call to a 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   954
      <jvmti/> function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   955
      See the
489c9b5090e2 Initial load
duke
parents:
diff changeset
   956
      <externallink 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
   957
        id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html#wp770"
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
   958
             >Java Exceptions</externallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   959
      section of the JNI specification for information on handling exceptions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   960
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   961
489c9b5090e2 Initial load
duke
parents:
diff changeset
   962
  <category id="memory" label="Memory Management">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   963
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   964
      These functions provide for the allocation and deallocation of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   965
      memory used by <jvmti/> functionality and can be used to provide
489c9b5090e2 Initial load
duke
parents:
diff changeset
   966
      working memory for agents.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   967
      Memory managed by <jvmti/> is not compatible with other memory
489c9b5090e2 Initial load
duke
parents:
diff changeset
   968
      allocation libraries and mechanisms.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   969
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   970
489c9b5090e2 Initial load
duke
parents:
diff changeset
   971
    <function id="Allocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="46">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   972
      <synopsis>Allocate</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   973
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   974
	Allocate an area of memory through the <jvmti/> allocator. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
   975
        The allocated
489c9b5090e2 Initial load
duke
parents:
diff changeset
   976
	memory should be freed with <functionlink id="Deallocate"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   977
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   978
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   979
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   980
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   981
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   982
	<param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   983
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   984
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   985
	    The number of bytes to allocate.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   986
	    <rationale>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   987
	      <code>jlong</code> is used for compatibility with JVMDI.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   988
	    </rationale>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   989
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   990
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   991
	<param id="mem_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
   992
	  <allocbuf incount="size"><uchar/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   993
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   994
	    On return, a pointer to the beginning of the allocated memory.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   995
            If <code>size</code> is zero, <code>NULL</code> is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
   996
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   997
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   998
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
   999
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1000
	<error id="JVMTI_ERROR_OUT_OF_MEMORY">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1001
	  Memory request cannot be honored.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1002
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1003
	<error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1004
	  <paramlink id="size"></paramlink> is less than zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1005
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1006
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1007
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1008
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1009
    <function id="Deallocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="47">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1010
      <synopsis>Deallocate</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1011
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1012
	Deallocate <code>mem</code>  using the <jvmti/> allocator. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1013
        This function should
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1014
	be used to deallocate any memory allocated and returned 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1015
        by a <jvmti/> function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1016
	(including memory allocated with <functionlink id="Allocate"></functionlink>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1017
        All allocated memory must be deallocated
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1018
        or the memory cannot be reclaimed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1019
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1020
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1021
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1022
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1023
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1024
	<param id="mem">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1025
	  <outbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1026
            <uchar/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1027
	    <nullok>the call is ignored</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1028
          </outbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1029
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1030
	    A pointer to the beginning of the allocated memory.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1031
            Please ignore "On return, the elements are set."
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1032
              <todo>keep it from generating "On return, the elements are set"</todo>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1033
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1034
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1035
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1036
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1037
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1038
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1039
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1040
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1041
  <category id="threadCategory" label="Thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1042
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1043
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1044
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1045
    <function id="GetThreadState" num="17">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1046
      <synopsis>Get Thread State</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1047
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1048
        Get the state of a thread.  The state of the thread is represented by the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1049
        answers to the hierarchical set of questions below:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1050
          <ul type="circle">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1051
            <li><i>Alive?</i>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1052
              <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1053
                <li>Not alive.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1054
                  <ul type="circle">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1055
                    <li><i>Why not alive?</i>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1056
                      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1057
                        <li>New.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1058
                        <li>Terminated (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1059
                            id="JVMTI_THREAD_STATE_TERMINATED"><code>JVMTI_THREAD_STATE_TERMINATED</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1060
                      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1061
                    </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1062
                  </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1063
                </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1064
                <li>Alive (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1065
                    id="JVMTI_THREAD_STATE_ALIVE"><code>JVMTI_THREAD_STATE_ALIVE</code></datalink>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1066
                  <ul type="circle">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1067
                    <li><i>Suspended?</i>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1068
                      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1069
                        <li>Suspended (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1070
                            id="JVMTI_THREAD_STATE_SUSPENDED"><code>JVMTI_THREAD_STATE_SUSPENDED</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1071
                        <li>Not suspended</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1072
                      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1073
                    </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1074
                    <li><i>Interrupted?</i>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1075
                      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1076
                        <li>Interrupted (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1077
                            id="JVMTI_THREAD_STATE_INTERRUPTED"><code>JVMTI_THREAD_STATE_INTERRUPTED</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1078
                        <li>Not interrupted.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1079
                      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1080
                    </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1081
                    <li><i>In native?</i>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1082
                      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1083
                        <li>In native code (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1084
                            id="JVMTI_THREAD_STATE_IN_NATIVE"><code>JVMTI_THREAD_STATE_IN_NATIVE</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1085
                        <li>In Java programming language code</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1086
                      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1087
                    </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1088
                    <li><i>What alive state?</i>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1089
                      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1090
                        <li>Runnable (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1091
                            id="JVMTI_THREAD_STATE_RUNNABLE"><code>JVMTI_THREAD_STATE_RUNNABLE</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1092
                        <li>Blocked (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1093
                            id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER"><code>JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1094
                        <li>Waiting (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1095
                            id="JVMTI_THREAD_STATE_WAITING"><code>JVMTI_THREAD_STATE_WAITING</code></datalink>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1096
                          <ul type="circle">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1097
                            <li><i>Timed wait?</i>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1098
                              <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1099
                                <li>Indefinite (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1100
                                    id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY"><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></datalink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1101
                                <li>Timed (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1102
                                    id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT"><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1103
                              </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1104
                            </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1105
                            <li><i>Why waiting?</i>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1106
                              <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1107
                                <li>Object.wait (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1108
                                    id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT"><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1109
                                <li>LockSupport.park (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1110
                                    id="JVMTI_THREAD_STATE_PARKED"><code>JVMTI_THREAD_STATE_PARKED</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1111
                                <li>Sleeping (<datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1112
                                    id="JVMTI_THREAD_STATE_SLEEPING"><code>JVMTI_THREAD_STATE_SLEEPING</code></datalink>)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1113
                              </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1114
                            </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1115
                          </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1116
                        </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1117
                      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1118
                    </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1119
                  </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1120
                </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1121
              </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1122
            </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1123
          </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1124
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1125
	The answers are represented by the following bit vector. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1126
	<constants id="jvmtiThreadState" label="Thread State Flags" kind="bits">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1127
	  <constant id="JVMTI_THREAD_STATE_ALIVE" num="0x0001">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1128
	    Thread is alive. Zero if thread is new (not started) or terminated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1129
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1130
	  <constant id="JVMTI_THREAD_STATE_TERMINATED" num="0x0002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1131
	    Thread has completed execution.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1132
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1133
	  <constant id="JVMTI_THREAD_STATE_RUNNABLE" num="0x0004">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1134
	    Thread is runnable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1135
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1136
	  <constant id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER" num="0x0400">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1137
	    Thread is waiting to enter a synchronization block/method or,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1138
            after an <code>Object.wait()</code>, waiting to re-enter a 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1139
            synchronization block/method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1140
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1141
	  <constant id="JVMTI_THREAD_STATE_WAITING" num="0x0080">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1142
	    Thread is waiting.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1143
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1144
	  <constant id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY" num="0x0010">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1145
	    Thread is waiting without a timeout.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1146
            For example, <code>Object.wait()</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1147
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1148
	  <constant id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT" num="0x0020">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1149
	    Thread is waiting with a maximum time to wait specified.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1150
            For example, <code>Object.wait(long)</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1151
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1152
	  <constant id="JVMTI_THREAD_STATE_SLEEPING" num="0x0040">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1153
	    Thread is sleeping -- <code>Thread.sleep(long)</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1154
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1155
	  <constant id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT" num="0x0100">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1156
	    Thread is waiting on an object monitor -- <code>Object.wait</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1157
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1158
	  <constant id="JVMTI_THREAD_STATE_PARKED" num="0x0200">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1159
	    Thread is parked, for example: <code>LockSupport.park</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1160
            <code>LockSupport.parkUtil</code> and <code>LockSupport.parkNanos</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1161
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1162
	  <constant id="JVMTI_THREAD_STATE_SUSPENDED" num="0x100000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1163
	    Thread suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1164
	    <code>java.lang.Thread.suspend()</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1165
	    or a <jvmti/> suspend function 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1166
            (such as <functionlink id="SuspendThread"></functionlink>) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1167
            has been called on the thread. If this bit
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1168
	    is set, the other bits refer to the thread state before suspension.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1169
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1170
	  <constant id="JVMTI_THREAD_STATE_INTERRUPTED" num="0x200000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1171
	    Thread has been interrupted.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1172
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1173
	  <constant id="JVMTI_THREAD_STATE_IN_NATIVE" num="0x400000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1174
            Thread is in native code--that is, a native method is running
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1175
            which has not called back into the VM or Java programming
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1176
            language code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1177
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1178
            This flag is not set when running VM compiled Java programming
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1179
            language code nor is it set when running VM code or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1180
            VM support code. Native VM interface functions, such as JNI and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1181
            <jvmti/> functions, may be implemented as VM code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1182
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1183
	  <constant id="JVMTI_THREAD_STATE_VENDOR_1" num="0x10000000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1184
            Defined by VM vendor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1185
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1186
	  <constant id="JVMTI_THREAD_STATE_VENDOR_2" num="0x20000000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1187
            Defined by VM vendor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1188
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1189
	  <constant id="JVMTI_THREAD_STATE_VENDOR_3" num="0x40000000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1190
            Defined by VM vendor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1191
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1192
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1193
        The following definitions are used to convert <jvmti/> thread state
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1194
        to <code>java.lang.Thread.State</code> style states.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1195
	<constants id="jvmtiJavaLangThreadState" label="java.lang.Thread.State Conversion Masks" kind="bits">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1196
	  <constant id="JVMTI_JAVA_LANG_THREAD_STATE_MASK"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1197
                     num="JVMTI_THREAD_STATE_TERMINATED | JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1198
	    Mask the state with this before comparison
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1199
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1200
	  <constant id="JVMTI_JAVA_LANG_THREAD_STATE_NEW"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1201
                     num="0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1202
	    <code>java.lang.Thread.State.NEW</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1203
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1204
	  <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1205
                     num="JVMTI_THREAD_STATE_TERMINATED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1206
	    <code>java.lang.Thread.State.TERMINATED</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1207
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1208
	  <constant id="JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1209
                     num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1210
	    <code>java.lang.Thread.State.RUNNABLE</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1211
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1212
	  <constant id="JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1213
                     num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1214
	    <code>java.lang.Thread.State.BLOCKED</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1215
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1216
	  <constant id="JVMTI_JAVA_LANG_THREAD_STATE_WAITING"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1217
                     num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1218
	    <code>java.lang.Thread.State.WAITING</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1219
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1220
	  <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1221
                     num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1222
	    <code>java.lang.Thread.State.TIMED_WAITING</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1223
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1224
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1225
        <b>Rules</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1226
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1227
        There can be no more than one answer to a question, although there can be no
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1228
        answer (because the answer is unknown, does not apply, or none of the answers is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1229
        correct).  An answer is set only when the enclosing answers match.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1230
        That is, no more than one of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1231
          <ul type="circle">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1232
              <li><code>JVMTI_THREAD_STATE_RUNNABLE</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1233
              <li><code>JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1234
              <li><code>JVMTI_THREAD_STATE_WAITING</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1235
          </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1236
        can be set (a <tm>J2SE</tm> compliant implementation will always set
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1237
        one of these if <code>JVMTI_THREAD_STATE_ALIVE</code> is set). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1238
        And if any of these are set, the enclosing answer 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1239
        <code>JVMTI_THREAD_STATE_ALIVE</code> is set. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1240
        No more than one of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1241
          <ul type="circle">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1242
              <li><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1243
              <li><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1244
          </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1245
        can be set (a <tm>J2SE</tm> compliant implementation will always set
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1246
        one of these if <code>JVMTI_THREAD_STATE_WAITING</code> is set). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1247
        And if either is set, the enclosing answers 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1248
        <code>JVMTI_THREAD_STATE_ALIVE</code> and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1249
        <code>JVMTI_THREAD_STATE_WAITING</code> are set. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1250
        No more than one of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1251
          <ul type="circle">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1252
              <li><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1253
              <li><code>JVMTI_THREAD_STATE_PARKED</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1254
              <li><code>JVMTI_THREAD_STATE_SLEEPING</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1255
          </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1256
        can be set. And if any of these is set, the enclosing answers 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1257
        <code>JVMTI_THREAD_STATE_ALIVE</code> and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1258
        <code>JVMTI_THREAD_STATE_WAITING</code> are set. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1259
        Also, if <code>JVMTI_THREAD_STATE_SLEEPING</code> is set,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1260
        then <code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code> is set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1261
        If a state <i>A</i> is implemented using the mechanism of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1262
        state <i>B</i> then it is state <i>A</i> which 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1263
        is returned by this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1264
        For example, if <code>Thread.sleep(long)</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1265
        is implemented using <code>Object.wait(long)</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1266
        then it is still <code>JVMTI_THREAD_STATE_SLEEPING</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1267
        which is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1268
        More than one of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1269
          <ul type="circle">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1270
              <li><code>JVMTI_THREAD_STATE_SUSPENDED</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1271
              <li><code>JVMTI_THREAD_STATE_INTERRUPTED</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1272
              <li><code>JVMTI_THREAD_STATE_IN_NATIVE</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1273
          </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1274
        can be set, but if any is set,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1275
        <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1276
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1277
        And finally,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1278
        <code>JVMTI_THREAD_STATE_TERMINATED</code> cannot be set unless
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1279
        <code>JVMTI_THREAD_STATE_ALIVE</code> is not set.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1280
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1281
        The thread state representation is designed for extension in future versions
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1282
        of the specification; thread state values should be used accordingly, that is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1283
        they should not be used as ordinals.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1284
        Most queries can be made by testing a single bit, if use in a switch statement is desired,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1285
        the state bits should be masked with the interesting bits.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1286
        All bits not defined above are reserved for future use.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1287
        A VM, compliant to the current specification, must set reserved bits to zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1288
        An agent should ignore reserved bits -- 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1289
        they should not be assumed to be zero and thus should not be included in comparisons.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1290
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1291
        <b>Examples</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1292
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1293
        Note that the values below exclude reserved and vendor bits.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1294
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1295
        The state of a thread blocked at a <code>synchronized</code>-statement would be:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1296
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1297
            JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1298
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1299
        The state of a thread which hasn't started yet would be:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1300
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1301
            0
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1302
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1303
        The state of a thread at a <code>Object.wait(3000)</code> would be:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1304
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1305
            JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_WAITING + 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1306
                JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT + 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1307
                JVMTI_THREAD_STATE_MONITOR_WAITING
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1308
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1309
        The state of a thread suspended while runnable would be:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1310
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1311
            JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_RUNNABLE + JVMTI_THREAD_STATE_SUSPENDED
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1312
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1313
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1314
        <b>Testing the State</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1315
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1316
        In most cases, the thread state can be determined by testing the one bit corresponding
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1317
        to that question.  For example, the code to test if a thread is sleeping:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1318
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1319
	jint state;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1320
	jvmtiError err;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1321
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1322
	err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1323
	if (err == JVMTI_ERROR_NONE) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1324
	   if (state &amp; JVMTI_THREAD_STATE_SLEEPING) {  ...
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1325
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1326
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1327
        For waiting (that is, in <code>Object.wait</code>, parked, or sleeping) it would be:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1328
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1329
	   if (state &amp; JVMTI_THREAD_STATE_WAITING) {  ...
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1330
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1331
        For some states, more than one bit will need to be tested as is the case
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1332
        when testing if a thread has not yet been started:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1333
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1334
	   if ((state &amp; (JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_TERMINATED)) == 0)  {  ...
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1335
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1336
        To distinguish timed from untimed <code>Object.wait</code>:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1337
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1338
	   if (state &amp; JVMTI_THREAD_STATE_IN_OBJECT_WAIT)  {  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1339
             if (state &amp; JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT)  {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1340
               printf("in Object.wait(long timeout)\n");
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1341
             } else {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1342
               printf("in Object.wait()\n");
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1343
             }
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1344
           }
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1345
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1346
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1347
        <b>Relationship to <code>java.lang.Thread.State</code></b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1348
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1349
        The thread state represented by <code>java.lang.Thread.State</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1350
        returned from <code>java.lang.Thread.getState()</code> is a subset of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1351
        information returned from this function.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1352
        The corresponding <code>java.lang.Thread.State</code> can be determined
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1353
        by using the provided conversion masks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1354
        For example, this returns the name of the <code>java.lang.Thread.State</code> thread state:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1355
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1356
	    err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1357
	    abortOnError(err);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1358
            switch (state &amp; JVMTI_JAVA_LANG_THREAD_STATE_MASK) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1359
            case JVMTI_JAVA_LANG_THREAD_STATE_NEW:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1360
              return "NEW";
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1361
            case JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1362
              return "TERMINATED";
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1363
            case JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1364
              return "RUNNABLE";
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1365
            case JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1366
              return "BLOCKED";
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1367
            case JVMTI_JAVA_LANG_THREAD_STATE_WAITING:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1368
              return "WAITING";
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1369
            case JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1370
              return "TIMED_WAITING";
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1371
            }
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1372
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1373
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1374
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1375
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1376
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1377
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1378
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1379
	  <jthread null="current" started="maybe" impl="noconvert"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1380
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1381
	      The thread to query. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1382
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1383
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1384
	<param id="thread_state_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1385
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1386
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1387
	    On return, points to state flags,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1388
	    as defined by the <internallink id="jvmtiThreadState">Thread State Flags</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1389
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1390
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1391
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1392
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1393
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1394
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1395
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1396
    <function id="GetCurrentThread" phase="start" num="18" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1397
      <synopsis>Get Current Thread</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1398
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1399
        Get the current thread.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1400
        The current thread is the Java programming language thread which has called the function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1401
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1402
        Note that most <jvmti/> functions that take a thread 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1403
        as an argument will accept <code>NULL</code> to mean 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1404
        the current thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1405
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1406
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1407
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1408
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1409
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1410
        <param id="thread_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1411
	  <outptr><jthread/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1412
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1413
	     On return, points to the current thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1414
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1415
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1416
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1417
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1418
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1419
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1420
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1421
    <function id="GetAllThreads" num="4">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1422
      <synopsis>Get All Threads</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1423
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1424
        Get all live threads.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1425
        The threads are Java programming language threads;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1426
        that is, threads that are attached to the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1427
        A thread is live if <code>java.lang.Thread.isAlive()</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1428
        would return <code>true</code>, that is, the thread has
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1429
        been started and has not yet died.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1430
        The universe of threads is determined by the context of the <jvmti/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1431
        environment, which typically is all threads attached to the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1432
        Note that this includes <jvmti/> agent threads 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1433
        (see <functionlink id="RunAgentThread"/>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1434
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1435
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1436
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1437
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1438
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1439
        <param id="threads_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1440
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1441
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1442
	    On return, points to the number of running threads.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1443
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1444
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1445
        <param id="threads_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1446
	  <allocbuf outcount="threads_count_ptr"><jthread/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1447
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1448
	      On return, points to an array of references, one
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1449
	      for each running thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1450
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1451
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1452
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1453
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1454
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1455
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1456
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1457
    <function id="SuspendThread" num="5">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1458
      <synopsis>Suspend Thread</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1459
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1460
        Suspend the specified thread. If the calling thread is specified, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1461
        this function will not return until some other thread calls 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1462
        <functionlink id="ResumeThread"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1463
        If the thread is currently suspended, this function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1464
        does nothing and returns an error.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1465
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1466
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1467
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1468
        <required id="can_suspend"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1469
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1470
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1471
        <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1472
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1473
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1474
	      The thread to suspend. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1475
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1476
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1477
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1478
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1479
        <error id="JVMTI_ERROR_THREAD_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1480
          Thread already suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1481
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1482
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1483
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1484
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1485
    <elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1486
    <function id="SuspendAllThreads" num="101">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1487
      <synopsis>Suspend All Threads</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1488
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1489
	<issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1490
	    There has been no explicit call for this function, and it will
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1491
	    thus be removed if there is no interest.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1492
        </issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1493
        Suspend all live threads except:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1494
        <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1495
          <li>already suspended threads</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1496
          <li>those listed in <paramlink id="except_list"></paramlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1497
          <li>certain system (non application) threads, as determined
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1498
            by the VM implementation</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1499
        </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1500
        The threads are Java programming language threads;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1501
        native threads which are not attached to the VM are not
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1502
        Java programming language threads.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1503
        A thread is live if <code>java.lang.Thread.isAlive()</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1504
        would return <code>true</code>, that is, the thread has
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1505
        been started and has not yet died.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1506
        The universe of threads is determined 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1507
        by the context of the <jvmti/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1508
        environment, which, typically, is all threads attached to the VM,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1509
        except critical VM internal threads and <jvmti/> agent threads 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1510
	(see <functionlink id="RunAgentThread"/>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1511
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1512
        If the calling thread is specified, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1513
        all other threads are suspended first then the caller thread is suspended -
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1514
        this function will not return until some other thread calls 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1515
        <functionlink id="ResumeThread"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1516
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1517
        The list of actually
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1518
        suspended threads is returned in 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1519
        <paramlink id="suspended_list_ptr"></paramlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1520
        Suspension is as defined in <functionlink id="SuspendThread"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1521
        <functionlink id="ResumeThreadList"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1522
        can be used to resume the suspended threads.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1523
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1524
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1525
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1526
        <required id="can_suspend"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1527
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1528
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1529
        <param id="except_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1530
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1531
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1532
	    The number of threads in the list of threads not to be suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1533
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1534
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1535
        <param id="except_list">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1536
            <inbuf incount="except_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1537
              <jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1538
              <nullok>not an error if <code>except_count == 0</code></nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1539
            </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1540
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1541
	      The list of threads not to be suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1542
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1543
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1544
        <param id="suspended_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1545
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1546
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1547
	    On return, points to the number of threads suspended by this call.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1548
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1549
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1550
        <param id="suspended_list_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1551
	  <allocbuf outcount="suspended_count_ptr"><jthread/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1552
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1553
	      On return, points to an array of references, one
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1554
	      for each thread suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1555
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1556
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1557
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1558
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1559
        <error id="JVMTI_ERROR_INVALID_THREAD">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1560
          A thread in <paramlink id="except_list"></paramlink> was invalid.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1561
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1562
        <error id="JVMTI_ERROR_NULL_POINTER">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1563
          Both <paramlink id="except_list"></paramlink> was <code>NULL</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1564
          and <paramlink id="except_count"></paramlink> was non-zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1565
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1566
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1567
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1568
    </elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1569
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1570
    <function id="SuspendThreadList" num="92">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1571
      <synopsis>Suspend Thread List</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1572
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1573
        Suspend the <paramlink id="request_count"></paramlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1574
        threads specified in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1575
        <paramlink id="request_list"></paramlink> array. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1576
        Threads may be resumed with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1577
        <functionlink id="ResumeThreadList"></functionlink> or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1578
        <functionlink id="ResumeThread"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1579
        If the calling thread is specified in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1580
        <paramlink id="request_list"></paramlink> array, this function will
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1581
        not return until some other thread resumes it.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1582
        Errors encountered in the suspension of a thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1583
        are returned in the <paramlink id="results"></paramlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1584
        array, <b>not</b> in the return value of this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1585
        Threads that are currently suspended do not change state.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1586
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1587
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1588
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1589
        <required id="can_suspend"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1590
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1591
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1592
        <param id="request_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1593
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1594
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1595
	    The number of threads to suspend.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1596
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1597
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1598
        <param id="request_list">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1599
	  <inbuf incount="request_count"><jthread/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1600
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1601
	      The list of threads to suspend.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1602
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1603
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1604
        <param id="results">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1605
	  <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1606
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1607
	    An agent supplied array of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1608
	    <paramlink id="request_count"></paramlink> elements.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1609
	    On return, filled with the error code for
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1610
	    the suspend of the corresponding thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1611
	    The error code will be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1612
	    <errorlink id="JVMTI_ERROR_NONE"></errorlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1613
	    if the thread was suspended by this call.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1614
	    Possible error codes are those specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1615
	    for <functionlink id="SuspendThread"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1616
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1617
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1618
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1619
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1620
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1621
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1622
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1623
    <function id="ResumeThread" num="6">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1624
      <synopsis>Resume Thread</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1625
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1626
        Resume a suspended thread. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1627
        Any threads currently suspended through
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1628
        a <jvmti/> suspend function (eg.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1629
        <functionlink id="SuspendThread"></functionlink>) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1630
        or <code>java.lang.Thread.suspend()</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1631
        will resume execution;  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1632
	all other threads are unaffected.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1633
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1634
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1635
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1636
        <required id="can_suspend"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1637
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1638
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1639
        <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1640
	  <jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1641
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1642
	      The thread to resume.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1643
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1644
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1645
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1646
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1647
        <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1648
          Thread was not suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1649
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1650
        <error id="JVMTI_ERROR_INVALID_TYPESTATE">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1651
          The state of the thread has been modified, and is now inconsistent. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1652
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1653
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1654
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1655
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1656
    <function id="ResumeThreadList" num="93">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1657
      <synopsis>Resume Thread List</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1658
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1659
        Resume the <paramlink id="request_count"></paramlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1660
        threads specified in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1661
        <paramlink id="request_list"></paramlink> array. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1662
        Any thread suspended through
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1663
        a <jvmti/> suspend function (eg.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1664
        <functionlink id="SuspendThreadList"></functionlink>) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1665
        or <code>java.lang.Thread.suspend()</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1666
        will resume execution.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1667
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1668
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1669
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1670
        <required id="can_suspend"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1671
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1672
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1673
        <param id="request_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1674
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1675
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1676
	    The number of threads to resume.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1677
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1678
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1679
        <param id="request_list">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1680
	  <inbuf incount="request_count"><jthread/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1681
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1682
	      The threads to resume.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1683
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1684
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1685
        <param id="results">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1686
	  <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1687
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1688
	    An agent supplied array of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1689
	    <paramlink id="request_count"></paramlink> elements.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1690
	    On return, filled with the error code for
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1691
	    the resume of the corresponding thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1692
	    The error code will be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1693
	    <errorlink id="JVMTI_ERROR_NONE"></errorlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1694
	    if the thread was suspended by this call.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1695
	    Possible error codes are those specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1696
	    for <functionlink id="ResumeThread"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1697
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1698
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1699
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1700
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1701
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1702
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1703
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1704
    <function id="StopThread" num="7">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1705
      <synopsis>Stop Thread</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1706
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1707
	Send the specified asynchronous exception to the specified thread 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1708
	(similar to <code>java.lang.Thread.stop</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1709
	Normally, this function is used to kill the specified thread with an 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1710
	instance of the exception <code>ThreadDeath</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1711
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1712
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1713
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1714
	<required id="can_signal_thread"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1715
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1716
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1717
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1718
	  <jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1719
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1720
	      The thread to stop.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1721
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1722
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1723
	<param id="exception">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1724
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1725
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1726
	      The asynchronous exception object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1727
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1728
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1729
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1730
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1731
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1732
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1733
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1734
    <function id="InterruptThread" num="8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1735
      <synopsis>Interrupt Thread</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1736
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1737
	Interrupt the specified thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1738
	(similar to <code>java.lang.Thread.interrupt</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1739
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1740
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1741
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1742
	<required id="can_signal_thread"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1743
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1744
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1745
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1746
	  <jthread impl="noconvert"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1747
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1748
	      The thread to interrupt.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1749
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1750
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1751
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1752
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1753
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1754
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1755
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1756
    <function id="GetThreadInfo" num="9">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1757
      <synopsis>Get Thread Info</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1758
      <typedef id="jvmtiThreadInfo" label="Thread information structure">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1759
	<field id="name">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1760
	  <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1761
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1762
	    The thread name, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1763
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1764
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1765
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1766
	<field id="priority">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1767
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1768
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1769
	    The thread priority.  See the thread priority constants:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1770
	    <datalink id="jvmtiThreadPriority"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1771
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1772
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1773
	<field id="is_daemon">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1774
	  <jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1775
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1776
	    Is this a daemon thread?
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1777
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1778
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1779
	<field id="thread_group">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1780
	  <jthreadGroup/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1781
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1782
	    The thread group to which this thread belongs.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1783
            <code>NULL</code> if the thread has died.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1784
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1785
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1786
	<field id="context_class_loader">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1787
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1788
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1789
	      The context class loader associated with this thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1790
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1791
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1792
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1793
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1794
	Get thread information. The fields of the <datalink id="jvmtiThreadInfo"/> structure 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1795
	are filled in with details of the specified thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1796
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1797
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1798
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1799
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1800
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1801
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1802
	  <jthread null="current" impl="noconvert" started="maybe"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1803
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1804
	      The thread to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1805
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1806
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1807
	<param id="info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1808
	  <outptr><struct>jvmtiThreadInfo</struct></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1809
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1810
	    On return, filled with information describing the specified thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1811
	    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1812
	    For JDK 1.1 implementations that don't
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1813
	    recognize context class loaders, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1814
	    the <code>context_class_loader</code> field will be NULL.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1815
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1816
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1817
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1818
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1819
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1820
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1821
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1822
    <function id="GetOwnedMonitorInfo" num="10">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1823
      <synopsis>Get Owned Monitor Info</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1824
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1825
	Get information about the monitors owned by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1826
	specified thread. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1827
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1828
      <origin>jvmdiClone</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1829
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1830
	<required id="can_get_owned_monitor_info"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1831
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1832
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1833
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1834
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1835
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1836
	      The thread to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1837
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1838
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1839
	<param id="owned_monitor_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1840
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1841
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1842
	    The number of monitors returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1843
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1844
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1845
	<param id="owned_monitors_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1846
	  <allocbuf outcount="owned_monitor_count_ptr"><jobject/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1847
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1848
	      The array of owned monitors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1849
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1850
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1851
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1852
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1853
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1854
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1855
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1856
    <function id="GetOwnedMonitorStackDepthInfo" num="153" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1857
      <synopsis>Get Owned Monitor Stack Depth Info</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1858
      <typedef id="jvmtiMonitorStackDepthInfo" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1859
               label="Monitor stack depth information structure">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1860
        <field id="monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1861
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1862
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1863
	      The owned monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1864
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1865
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1866
        <field id="stack_depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1867
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1868
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1869
	    The stack depth.  Corresponds to the stack depth used in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1870
            <internallink id="stack">Stack Frame functions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1871
            That is, zero is the current frame, one is the frame which
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1872
            called the current frame. And it is negative one if the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1873
	    implementation cannot determine the stack depth (e.g., for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1874
	    monitors acquired by JNI <code>MonitorEnter</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1875
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1876
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1877
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1878
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1879
	Get information about the monitors owned by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1880
	specified thread and the depth of the stack frame which locked them. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1881
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1882
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1883
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1884
	<required id="can_get_owned_monitor_stack_depth_info"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1885
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1886
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1887
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1888
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1889
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1890
	      The thread to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1891
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1892
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1893
	<param id="monitor_info_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1894
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1895
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1896
	    The number of monitors returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1897
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1898
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1899
	<param id="monitor_info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1900
	  <allocbuf outcount="owned_monitor_depth_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1901
            <struct>jvmtiMonitorStackDepthInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1902
          </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1903
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1904
	    The array of owned monitor depth information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1905
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1906
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1907
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1908
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1909
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1910
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1911
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1912
    <function id="GetCurrentContendedMonitor" num="11">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1913
      <synopsis>Get Current Contended Monitor</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1914
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1915
	Get the object, if any, whose monitor the specified thread is waiting to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1916
	enter or waiting to regain through <code>java.lang.Object.wait</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1917
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1918
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1919
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1920
	<required id="can_get_current_contended_monitor"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1921
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1922
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1923
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1924
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1925
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1926
	      The thread to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1927
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1928
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1929
	<param id="monitor_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1930
	  <outptr><jobject/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1931
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1932
	      On return, filled with the current contended monitor, or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1933
	      NULL if there is none.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1934
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1935
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1936
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1937
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1938
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1939
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1940
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1941
    <callback id="jvmtiStartFunction">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1942
      <void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1943
      <synopsis>Agent Start Function</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1944
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1945
        Agent supplied callback function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1946
        This function is the entry point for an agent thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1947
	started with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1948
	<functionlink id="RunAgentThread"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1949
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1950
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1951
	  <param id="jvmti_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1952
	    <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1953
	      <struct>jvmtiEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1954
	    </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1955
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1956
	      The <jvmti/> environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1957
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1958
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1959
          <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1960
            <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1961
              <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1962
            </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1963
            <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1964
              The JNI environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1965
            </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1966
          </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1967
          <param id="arg">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1968
            <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1969
              <void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1970
            </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1971
              <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1972
                The <code>arg</code> parameter passed to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1973
                <functionlink id="RunAgentThread"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1974
              </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1975
          </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1976
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1977
    </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1978
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1979
    <function id="RunAgentThread" num="12">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1980
      <synopsis>Run Agent Thread</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1981
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1982
	Starts the execution of an agent thread. with the specified native function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1983
	The parameter <paramlink id="arg"></paramlink> is forwarded on to the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1984
	<functionlink id="jvmtiStartFunction">start function</functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1985
	(specified with <paramlink id="proc"></paramlink>) as its single argument.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1986
	This function allows the creation of agent threads 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1987
	for handling communication with another process or for handling events 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1988
	without the need to load a special subclass of <code>java.lang.Thread</code> or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1989
	implementer of <code>java.lang.Runnable</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1990
	Instead, the created thread can run entirely in native code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1991
	However, the created thread does require a newly created instance
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1992
	of <code>java.lang.Thread</code> (referenced by the argument <code>thread</code>) to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1993
	which it will be associated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1994
	The thread object can be created with JNI calls.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1995
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1996
	The following common thread priorities are provided for your convenience:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1997
	<constants id="jvmtiThreadPriority" label="Thread Priority Constants" kind="const">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1998
	  <constant id="JVMTI_THREAD_MIN_PRIORITY" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  1999
	    Minimum possible thread priority
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2000
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2001
	  <constant id="JVMTI_THREAD_NORM_PRIORITY" num="5">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2002
	    Normal thread priority
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2003
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2004
	  <constant id="JVMTI_THREAD_MAX_PRIORITY" num="10">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2005
	    Maximum possible thread priority
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2006
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2007
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2008
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2009
	The new thread is started as a daemon thread with the specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2010
	<paramlink id="priority"></paramlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2011
        If enabled, a <eventlink id="ThreadStart"/> event will be sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2012
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2013
        Since the thread has been started, the thread will be live when this function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2014
        returns, unless the thread has died immediately.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2015
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2016
        The thread group of the thread is ignored -- specifically, the thread is not
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2017
        added to the thread group and the thread is not seen on queries of the thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2018
        group at either the Java programming language or <jvmti/> levels.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2019
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2020
        The thread is not visible to Java programming language queries but is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2021
        included in <jvmti/> queries (for example, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2022
        <functionlink id="GetAllThreads"/> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2023
        <functionlink id="GetAllStackTraces"/>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2024
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2025
	Upon execution of <code>proc</code>, the new thread will be attached to the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2026
	VM--see the JNI documentation on 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
  2027
	<externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#wp1060"
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2028
		      >Attaching to the VM</externallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2029
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2030
      <origin>jvmdiClone</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2031
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2032
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2033
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2034
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2035
	  <jthread impl="noconvert" started="no"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2036
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2037
	      The thread to run.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2038
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2039
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2040
	<param id="proc">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2041
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2042
	    <struct>jvmtiStartFunction</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2043
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2044
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2045
	    The start function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2046
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2047
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2048
	<param id="arg">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2049
	  <inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2050
            <void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2051
            <nullok><code>NULL</code> is passed to the start function</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2052
          </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2053
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2054
	    The argument to the start function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2055
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2056
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2057
	<param id="priority">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2058
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2059
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2060
	    The priority of the started thread. Any thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2061
	    priority allowed by <code>java.lang.Thread.setPriority</code> can be used including
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2062
	    those in <datalink id="jvmtiThreadPriority"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2063
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2064
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2065
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2066
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2067
	<error id="JVMTI_ERROR_INVALID_PRIORITY"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2068
            <paramlink id="priority"/> is less than 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2069
            <datalink id="JVMTI_THREAD_MIN_PRIORITY"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2070
              or greater than
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2071
            <datalink id="JVMTI_THREAD_MAX_PRIORITY"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2072
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2073
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2074
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2075
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2076
    <function id="SetThreadLocalStorage" jkernel="yes" impl="notrace" phase="start" num="103">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2077
      <synopsis>Set Thread Local Storage</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2078
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2079
	The VM stores a pointer value associated with each environment-thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2080
	pair. This pointer value is called <i>thread-local storage</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2081
        This value is <code>NULL</code> unless set with this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2082
	Agents can allocate memory in which they store thread specific
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2083
        information. By setting thread-local storage it can then be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2084
	accessed with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2085
	<functionlink id="GetThreadLocalStorage"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2086
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2087
        This function is called by the agent to set the value of the <jvmti/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2088
        thread-local storage. <jvmti/> supplies to the agent a pointer-size
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2089
        thread-local storage that can be used to record per-thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2090
        information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2091
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2092
      <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2093
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2094
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2095
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2096
        <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2097
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2098
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2099
	      Store to this thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2100
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2101
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2102
        <param id="data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2103
	  <inbuf> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2104
	    <void/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2105
	    <nullok>value is set to <code>NULL</code></nullok> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2106
	  </inbuf> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2107
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2108
	    The value to be entered into the thread-local storage.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2109
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2110
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2111
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2112
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2113
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2114
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2115
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2116
    <function id="GetThreadLocalStorage" jkernel="yes" impl="innative notrace" phase="start" num="102">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2117
      <synopsis>Get Thread Local Storage</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2118
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2119
        Called by the agent to get the value of the <jvmti/> thread-local
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2120
        storage. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2121
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2122
      <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2123
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2124
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2125
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2126
        <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2127
	  <jthread null="current" impl="noconvert"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2128
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2129
	      Retrieve from this thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2130
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2131
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2132
        <param id="data_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2133
	  <agentbuf><void/></agentbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2134
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2135
	    Pointer through which the value of the thread local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2136
	    storage is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2137
	    If thread-local storage has not been set with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2138
	    <functionlink id="SetThreadLocalStorage"></functionlink> the returned 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2139
	    pointer is <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2140
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2141
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2142
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2143
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2144
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2145
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2146
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2147
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2148
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2149
  <category id="thread_groups" label="Thread Group">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2150
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2151
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2152
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2153
    <function id="GetTopThreadGroups" num="13">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2154
      <synopsis>Get Top Thread Groups</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2155
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2156
	Return all top-level (parentless) thread groups in the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2157
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2158
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2159
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2160
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2161
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2162
	<param id="group_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2163
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2164
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2165
	    On return, points to the number of top-level thread groups.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2166
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2167
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2168
	<param id="groups_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2169
	  <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2170
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2171
	      On return, refers to a pointer to the top-level thread group array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2172
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2173
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2174
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2175
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2176
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2177
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2178
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2179
    <function id="GetThreadGroupInfo" num="14">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2180
      <synopsis>Get Thread Group Info</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2181
      <typedef id="jvmtiThreadGroupInfo" label="Thread group information structure">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2182
	<field id="parent">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2183
	  <jthreadGroup/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2184
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2185
	    The parent thread group.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2186
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2187
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2188
	<field id="name">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2189
	  <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2190
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2191
	    The thread group's name, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2192
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2193
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2194
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2195
	<field id="max_priority">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2196
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2197
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2198
	    The maximum priority for this thread group.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2199
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2200
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2201
	<field id="is_daemon">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2202
	  <jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2203
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2204
	    Is this a daemon thread group?
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2205
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2206
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2207
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2208
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2209
	Get information about the thread group. The fields of the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2210
	<functionlink id="jvmtiThreadGroupInfo"></functionlink> structure 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2211
	are filled in with details of the specified thread group.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2212
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2213
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2214
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2215
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2216
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2217
	<param id="group">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2218
	  <jthreadGroup/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2219
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2220
	    The thread group to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2221
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2222
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2223
	<param id="info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2224
	  <outptr><struct>jvmtiThreadGroupInfo</struct></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2225
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2226
	    On return, filled with information describing the specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2227
	    thread group. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2228
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2229
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2230
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2231
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2232
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2233
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2234
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2235
    <function id="GetThreadGroupChildren" num="15">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2236
      <synopsis>Get Thread Group Children</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2237
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2238
	Get the live threads and active subgroups in this thread group.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2239
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2240
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2241
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2242
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2243
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2244
	<param id="group">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2245
	  <jthreadGroup/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2246
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2247
	    The group to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2248
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2249
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2250
	<param id="thread_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2251
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2252
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2253
	    On return, points to the number of live threads in this thread group.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2254
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2255
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2256
	<param id="threads_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2257
	  <allocbuf outcount="thread_count_ptr"><jthread/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2258
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2259
	      On return, points to an array of the live threads in this thread group.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2260
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2261
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2262
	<param id="group_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2263
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2264
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2265
	    On return, points to the number of active child thread groups
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2266
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2267
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2268
	<param id="groups_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2269
	  <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2270
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2271
	      On return, points to an array of the active child thread groups.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2272
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2273
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2274
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2275
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2276
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2277
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2278
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2279
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2280
  <category id="stack" label="Stack Frame">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2281
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2282
        These functions provide information about the stack of a thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2283
        Stack frames are referenced by depth.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2284
        The frame at depth zero is the current frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2285
        <p/>
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  2286
        Stack frames are as described in
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  2287
        <vmspec chapter="3.6"/>,
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2288
        That is, they correspond to method 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2289
        invocations (including native methods) but do not correspond to platform native or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2290
        VM internal frames.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2291
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2292
        A <jvmti/> implementation may use method invocations to launch a thread and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2293
        the corresponding frames may be included in the stack as presented by these functions --
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2294
        that is, there may be frames shown
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2295
        deeper than <code>main()</code> and <code>run()</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2296
        However this presentation must be consistent across all <jvmti/> functionality which 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2297
        uses stack frames or stack depth.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2298
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2299
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2300
      <typedef id="jvmtiFrameInfo" label="Stack frame information structure">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2301
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2302
          Information about a stack frame is returned in this structure.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2303
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2304
        <field id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2305
	  <jmethodID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2306
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2307
	      The method executing in this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2308
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2309
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2310
        <field id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2311
	  <jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2312
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2313
	    The index of the instruction executing in this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2314
            <code>-1</code> if the frame is executing a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2315
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2316
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2317
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2318
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2319
      <typedef id="jvmtiStackInfo" label="Stack information structure">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2320
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2321
          Information about a set of stack frames is returned in this structure.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2322
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2323
        <field id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2324
	  <jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2325
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2326
	    On return, the thread traced.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2327
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2328
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2329
        <field id="state">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2330
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2331
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2332
	    On return, the thread state. See <functionlink id="GetThreadState"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2333
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2334
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2335
        <field id="frame_buffer">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2336
	  <outbuf incount="max_frame_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2337
	    <struct>jvmtiFrameInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2338
	  </outbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2339
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2340
	      On return, this agent allocated buffer is filled 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2341
	      with stack frame information.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2342
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2343
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2344
        <field id="frame_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2345
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2346
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2347
	    On return, the number of records filled into 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2348
            <code>frame_buffer</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2349
            This will be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2350
            min(<code>max_frame_count</code>, <i>stackDepth</i>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2351
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2352
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2353
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2354
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2355
    <function id="GetStackTrace" num="104">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2356
      <synopsis>Get Stack Trace</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2357
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2358
        Get information about the stack of a thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2359
        If <paramlink id="max_frame_count"></paramlink> is less than the depth of the stack,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2360
        the <paramlink id="max_frame_count"></paramlink> topmost frames are returned, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2361
        otherwise the entire stack is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2362
        The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2363
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2364
        The following example causes up to five of the topmost frames
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2365
        to be returned and (if there are any frames) the currently
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2366
        executing method name to be printed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2367
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2368
jvmtiFrameInfo frames[5];
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2369
jint count;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2370
jvmtiError err;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2371
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2372
err = (*jvmti)-&gt;GetStackTrace(jvmti, aThread, 0, 5, 
14571
1e4d36113875 8003690: Example code in JVMTI GetStackTrace documentation is broken
mikael
parents: 14287
diff changeset
  2373
                               frames, &amp;count);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2374
if (err == JVMTI_ERROR_NONE &amp;&amp; count &gt;= 1) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2375
   char *methodName;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2376
   err = (*jvmti)-&gt;GetMethodName(jvmti, frames[0].method, 
14571
1e4d36113875 8003690: Example code in JVMTI GetStackTrace documentation is broken
mikael
parents: 14287
diff changeset
  2377
                       &amp;methodName, NULL, NULL);
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2378
   if (err == JVMTI_ERROR_NONE) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2379
      printf("Executing method: %s", methodName);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2380
   }
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2381
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2382
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2383
        <todo> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2384
          check example code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2385
        </todo>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2386
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2387
        The <paramlink id="thread"></paramlink> need not be suspended
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2388
        to call this function.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2389
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2390
        The <functionlink id="GetLineNumberTable"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2391
        function can be used to map locations to line numbers. Note that
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2392
        this mapping can be done lazily.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2393
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2394
      <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2395
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2396
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2397
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2398
        <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2399
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2400
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2401
	      Fetch the stack trace of this thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2402
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2403
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2404
        <param id="start_depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2405
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2406
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2407
	    Begin retrieving frames at this depth.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2408
            If non-negative, count from the current frame, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2409
            the first frame retrieved is at depth <code>start_depth</code>.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2410
            For example, if zero, start from the current frame; if one, start from the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2411
            caller of the current frame; if two, start from the caller of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2412
            caller of the current frame; and so on.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2413
            If negative, count from below the oldest frame,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2414
            the first frame retrieved is at depth <i>stackDepth</i><code> + start_depth</code>,  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2415
            where <i>stackDepth</i> is the count of frames on the stack.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2416
            For example, if negative one, only the oldest frame is retrieved;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2417
            if negative two, start from the frame called by the oldest frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2418
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2419
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2420
        <param id="max_frame_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2421
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2422
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2423
	    The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2424
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2425
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2426
        <param id="frame_buffer">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2427
	  <outbuf incount="max_frame_count" outcount="count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2428
	    <struct>jvmtiFrameInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2429
	  </outbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2430
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2431
	      On return, this agent allocated buffer is filled 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2432
	      with stack frame information.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2433
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2434
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2435
        <param id="count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2436
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2437
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2438
	    On return, points to the number of records filled in.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2439
            For non-negative <code>start_depth</code>, this will be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2440
            min(<code>max_frame_count</code>, <i>stackDepth</i><code> - start_depth</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2441
            For negative <code>start_depth</code>, this will be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2442
            min(<code>max_frame_count</code>, <code>-start_depth</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2443
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2444
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2445
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2446
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2447
	<error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2448
	  <paramlink id="start_depth"/> is positive and greater than or equal to <i>stackDepth</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2449
	  Or <paramlink id="start_depth"/> is negative and less than <i>-stackDepth</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2450
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2451
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2452
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2453
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2454
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2455
    <function id="GetAllStackTraces" num="100">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2456
      <synopsis>Get All Stack Traces</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2457
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2458
        Get information about the stacks of all live threads
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2459
        (including <internallink id="RunAgentThread">agent threads</internallink>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2460
        If <paramlink id="max_frame_count"/> is less than the depth of a stack,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2461
        the <paramlink id="max_frame_count"/> topmost frames are returned for that thread, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2462
        otherwise the entire stack is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2463
        The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2464
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2465
        All stacks are collected simultaneously, that is, no changes will occur to the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2466
        thread state or stacks between the sampling of one thread and the next.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2467
        The threads need not be suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2468
        
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2469
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2470
jvmtiStackInfo *stack_info;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2471
jint thread_count;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2472
int ti;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2473
jvmtiError err;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2474
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2475
err = (*jvmti)-&gt;GetAllStackTraces(jvmti, MAX_FRAMES, &amp;stack_info, &amp;thread_count); 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2476
if (err != JVMTI_ERROR_NONE) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2477
   ...   
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2478
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2479
for (ti = 0; ti &lt; thread_count; ++ti) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2480
   jvmtiStackInfo *infop = &amp;stack_info[ti];
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2481
   jthread thread = infop-&gt;thread;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2482
   jint state = infop-&gt;state;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2483
   jvmtiFrameInfo *frames = infop-&gt;frame_buffer;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2484
   int fi;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2485
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2486
   myThreadAndStatePrinter(thread, state);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2487
   for (fi = 0; fi &lt; infop-&gt;frame_count; fi++) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2488
      myFramePrinter(frames[fi].method, frames[fi].location);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2489
   }
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2490
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2491
/* this one Deallocate call frees all data allocated by GetAllStackTraces */
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2492
err = (*jvmti)-&gt;Deallocate(jvmti, stack_info); 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2493
        </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2494
        <todo> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2495
          check example code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2496
        </todo>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2497
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2498
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2499
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2500
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2501
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2502
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2503
        <param id="max_frame_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2504
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2505
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2506
	    The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2507
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2508
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2509
        <param id="stack_info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2510
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2511
	    <struct>jvmtiStackInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2512
	  </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2513
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2514
	      On return, this buffer is filled 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2515
	      with stack information for each thread.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2516
              The number of <datalink id="jvmtiStackInfo"/> records is determined 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2517
              by <paramlink id="thread_count_ptr"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2518
              <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2519
              Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2520
              buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2521
              These buffers must not be separately deallocated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2522
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2523
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2524
        <param id="thread_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2525
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2526
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2527
	    The number of threads traced.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2528
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2529
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2530
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2531
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2532
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2533
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2534
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2535
    <function id="GetThreadListStackTraces" num="101">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2536
      <synopsis>Get Thread List Stack Traces</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2537
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2538
        Get information about the stacks of the supplied threads.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2539
        If <paramlink id="max_frame_count"/> is less than the depth of a stack,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2540
        the <paramlink id="max_frame_count"/> topmost frames are returned for that thread, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2541
        otherwise the entire stack is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2542
        The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2543
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2544
        All stacks are collected simultaneously, that is, no changes will occur to the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2545
        thread state or stacks between the sampling one thread and the next.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2546
        The threads need not be suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2547
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2548
        If a thread has not yet started or terminates before the stack information is collected,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2549
        a zero length stack (<datalink id="jvmtiStackInfo.frame_count"/> will be zero)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2550
        will be returned and the thread <datalink id="jvmtiStackInfo.state"/> can be checked.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2551
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2552
        See the example for the similar function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2553
        <functionlink id="GetAllStackTraces"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2554
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2555
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2556
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2557
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2558
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2559
        <param id="thread_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2560
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2561
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2562
	    The number of threads to trace.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2563
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2564
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2565
        <param id="thread_list">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2566
	  <inbuf incount="thread_count"><jthread/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2567
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2568
	      The list of threads to trace.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2569
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2570
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2571
        <param id="max_frame_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2572
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2573
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2574
	    The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2575
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2576
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2577
        <param id="stack_info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2578
	  <allocbuf outcount="thread_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2579
	    <struct>jvmtiStackInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2580
	  </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2581
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2582
	      On return, this buffer is filled 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2583
	      with stack information for each thread.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2584
              The number of <datalink id="jvmtiStackInfo"/> records is determined 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2585
              by <paramlink id="thread_count"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2586
              <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2587
              Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2588
              buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2589
              These buffers must not be separately deallocated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2590
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2591
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2592
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2593
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2594
	<error id="JVMTI_ERROR_INVALID_THREAD">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2595
	  An element in <paramlink id="thread_list"/> is not a thread object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2596
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2597
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2598
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2599
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2600
    <elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2601
    <function id="AsyncGetStackTrace" num="1000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2602
      <synopsis>Get Stack Trace--Asynchronous</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2603
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2604
        Get information about the entire stack of a thread (or a sub-section of it).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2605
        This is the asynchronous version of <functionlink id="GetStackTrace"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2606
        and is reentrant and safe to call
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2607
        from asynchronous signal handlers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2608
        The stack trace is returned only for the calling thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2609
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2610
        The <functionlink id="GetLineNumberTable"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2611
        function can be used to map locations to line numbers. Note that
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2612
        this mapping can be done lazily.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2613
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2614
      <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2615
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2616
        <required id="can_get_async_stack_trace"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2617
        <capability id="can_show_JVM_spec_async_frames">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2618
          If <code>false</code>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2619
          <paramlink id="use_java_stack"></paramlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2620
          must be <code>false</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2621
        </capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2622
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2623
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2624
        <param id="use_java_stack">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2625
	  <jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2626
	  <description>
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  2627
	    Return the stack showing <vmspec/>
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2628
	    model of the stack; 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2629
	    otherwise, show the internal representation of the stack with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2630
	    inlined and optimized methods missing.  If the virtual machine
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2631
	    is using the <i>Java Virtual Machine Specification</i> stack model
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2632
	    internally, this flag is ignored.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2633
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2634
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2635
        <param id="max_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2636
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2637
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2638
	    The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2639
	    Retrieve this many unless the stack depth is less than <code>max_count</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2640
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2641
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2642
        <param id="frame_buffer">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2643
	  <outbuf incount="max_count" outcount="count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2644
	    <struct>jvmtiFrameInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2645
	    <nullok>this information is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2646
	  </outbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2647
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2648
	      The agent passes in a buffer
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2649
	      large enough to hold <code>max_count</code> records of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2650
	      <datalink id="jvmtiFrameInfo"></datalink>.  This buffer must be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2651
	      pre-allocated by the agent.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2652
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2653
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2654
        <param id="count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2655
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2656
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2657
	    On return, points to the number of records filled in..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2658
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2659
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2660
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2661
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2662
        <error id="JVMTI_ERROR_UNATTACHED_THREAD">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2663
          The thread being used to call this function is not attached
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2664
          to the virtual machine.  Calls must be made from attached threads.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2665
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2666
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2667
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2668
    </elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2669
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2670
    <function id="GetFrameCount" num="16">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2671
      <synopsis>Get Frame Count</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2672
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2673
	Get the number of frames currently in the specified thread's call stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2674
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2675
	If this function is called for a thread actively executing bytecodes (for example,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2676
	not the current thread and not suspended), the information returned is transient.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2677
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2678
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2679
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2680
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2681
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2682
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2683
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2684
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2685
	      The thread to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2686
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2687
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2688
	<param id="count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2689
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2690
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2691
	    On return, points to the number of frames in the call stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2692
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2693
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2694
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2695
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2696
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2697
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2698
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2699
    <function id="PopFrame" num="80">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2700
      <synopsis>Pop Frame</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2701
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2702
	Pop the current frame of <code>thread</code>'s stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2703
	Popping a frame takes you to the previous frame.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2704
	When the thread is resumed, the execution 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2705
	state of the thread is reset to the state
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2706
	immediately before the called method was invoked.
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  2707
	That is (using <vmspec/> terminology):
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2708
	  <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2709
	    <li>the current frame is discarded as the previous frame becomes the current one</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2710
	    <li>the operand stack is restored--the argument values are added back
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2711
	      and if the invoke was not <code>invokestatic</code>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2712
	      <code>objectref</code> is added back as well</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2713
	    <li>the Java virtual machine PC is restored to the opcode
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2714
	      of the invoke instruction</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2715
	  </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2716
	Note however, that any changes to the arguments, which
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2717
	occurred in the called method, remain; 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2718
	when execution continues, the first instruction to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2719
	execute will be the invoke.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2720
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2721
	Between calling <code>PopFrame</code> and resuming the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2722
	thread the state of the stack is undefined.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2723
	To pop frames beyond the first, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2724
	these three steps must be repeated:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2725
	<ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2726
	  <li>suspend the thread via an event (step, breakpoint, ...)</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2727
	  <li>call <code>PopFrame</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2728
	  <li>resume the thread</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2729
	</ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2730
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2731
	A lock acquired by calling the called method 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2732
	(if it is a <code>synchronized</code>  method) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2733
	and locks acquired by entering <code>synchronized</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2734
	blocks within the called method are released. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2735
	Note: this does not apply to native locks or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2736
	<code>java.util.concurrent.locks</code> locks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2737
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2738
	Finally blocks are not executed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2739
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2740
	Changes to global state are not addressed and thus remain changed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2741
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2742
	The specified thread must be suspended (which implies it cannot be the current thread).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2743
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2744
	Both the called method and calling method must be non-native Java programming 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2745
        language methods.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2746
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2747
	No <jvmti/> events are generated by this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2748
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2749
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2750
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2751
	<required id="can_pop_frame"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2752
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2753
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2754
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2755
	  <jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2756
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2757
	      The thread whose current frame is to be popped.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2758
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2759
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2760
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2761
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2762
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2763
	  Called or calling method is a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2764
          The implementation is unable to pop this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2765
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2766
	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2767
	  Thread was not suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2768
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2769
	<error id="JVMTI_ERROR_NO_MORE_FRAMES">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2770
	  There are less than two stack frames on the call stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2771
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2772
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2773
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2774
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2775
    <function id="GetFrameLocation" num="19">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2776
      <synopsis>Get Frame Location</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2777
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2778
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2779
	For a Java programming language frame, return the location of the instruction
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2780
	currently executing.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2781
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2782
      <origin>jvmdiClone</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2783
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2784
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2785
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2786
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2787
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2788
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2789
	    The thread of the frame to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2790
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2791
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2792
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2793
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2794
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2795
	    The depth of the frame to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2796
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2797
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2798
	<param id="method_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2799
	  <outptr><jmethodID/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2800
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2801
	      On return, points to the method for the current location.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2802
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2803
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2804
	<param id="location_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2805
	  <outptr><jlocation/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2806
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2807
	    On return, points to the index of the currently 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2808
	    executing instruction.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2809
            Is set to <code>-1</code> if the frame is executing
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2810
            a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2811
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2812
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2813
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2814
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2815
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2816
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2817
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2818
    <function id="NotifyFramePop" num="20">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2819
      <synopsis>Notify Frame Pop</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2820
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2821
	When the frame that is currently at <paramlink id="depth"></paramlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2822
        is popped from the stack, generate a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2823
	<eventlink id="FramePop"></eventlink> event.  See the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2824
	<eventlink id="FramePop"></eventlink> event for details.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2825
        Only frames corresponding to non-native Java programming language 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2826
        methods can receive notification.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2827
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2828
        The specified thread must either be the current thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2829
        or the thread must be suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2830
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2831
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2832
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2833
	<required id="can_generate_frame_pop_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2834
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2835
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2836
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2837
	  <jthread null="current" frame="depth"/>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2838
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2839
	    The thread of the frame for which the frame pop event will be generated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2840
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2841
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2842
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2843
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2844
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2845
	    The depth of the frame for which the frame pop event will be generated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2846
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2847
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2848
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2849
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2850
	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2851
	  The frame at <code>depth</code> is executing a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2852
          native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2853
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2854
	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2855
	  Thread was not suspended and was not the current thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2856
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2857
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2858
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2859
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2860
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2861
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2862
  <category id="ForceEarlyReturn" label="Force Early Return">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2863
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2864
      These functions allow an agent to force a method
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2865
      to return at any point during its execution.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2866
      The method which will return early is referred to as the <i>called method</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2867
      The called method is the current method
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  2868
      (as defined by
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  2869
      <vmspec chapter="3.6"/>) 
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2870
      for the specified thread at
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2871
      the time the function is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2872
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2873
      The specified thread must be suspended or must be the current thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2874
      The return occurs when execution of Java programming
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2875
      language code is resumed on this thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2876
      Between calling one of these functions and resumption
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2877
      of thread execution, the state of the stack is undefined.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2878
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2879
      No further instructions are executed in the called method.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2880
      Specifically, finally blocks are not executed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2881
      Note: this can cause inconsistent states in the application.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2882
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2883
      A lock acquired by calling the called method 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2884
      (if it is a <code>synchronized</code>  method) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2885
      and locks acquired by entering <code>synchronized</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2886
      blocks within the called method are released. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2887
      Note: this does not apply to native locks or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2888
      <code>java.util.concurrent.locks</code> locks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2889
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2890
      Events, such as <eventlink id="MethodExit"></eventlink>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2891
      are generated as they would be in a normal return.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2892
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2893
      The called method must be a non-native Java programming
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2894
      language method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2895
      Forcing return on a thread with only one frame on the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2896
      stack causes the thread to exit when resumed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2897
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2898
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2899
    <function id="ForceEarlyReturnObject" num="81" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2900
      <synopsis>Force Early Return - Object</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2901
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2902
	This function can be used to return from a method whose
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2903
        result type is <code>Object</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2904
        or a subclass of <code>Object</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2905
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2906
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2907
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2908
	<required id="can_force_early_return"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2909
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2910
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2911
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2912
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2913
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2914
	    The thread whose current frame is to return early.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2915
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2916
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2917
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2918
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2919
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2920
	    The return value for the called frame. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2921
            An object or <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2922
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2923
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2924
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2925
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2926
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2927
	  Attempted to return early from a frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2928
          corresponding to a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2929
          Or the implementation is unable to provide
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2930
          this functionality on this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2931
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2932
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2933
	  The result type of the called method is not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2934
          <code>Object</code> or a subclass of <code>Object</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2935
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2936
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2937
	  The supplied <paramlink id="value"/> is not compatible with the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2938
          result type of the called method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2939
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2940
	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2941
	  Thread was not the current thread and was not suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2942
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2943
	<error id="JVMTI_ERROR_NO_MORE_FRAMES">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2944
	  There are no more frames on the call stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2945
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2946
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2947
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2948
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2949
    <function id="ForceEarlyReturnInt" num="82" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2950
      <synopsis>Force Early Return - Int</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2951
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2952
	This function can be used to return from a method whose
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2953
        result type is <code>int</code>, <code>short</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2954
        <code>char</code>, <code>byte</code>, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2955
	<code>boolean</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2956
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2957
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2958
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2959
	<required id="can_force_early_return"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2960
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2961
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2962
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2963
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2964
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2965
	    The thread whose current frame is to return early.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2966
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2967
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2968
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2969
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2970
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2971
	    The return value for the called frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2972
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2973
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2974
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2975
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2976
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2977
	  Attempted to return early from a frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2978
          corresponding to a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2979
          Or the implementation is unable to provide
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2980
          this functionality on this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2981
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2982
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2983
	  The result type of the called method is not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2984
          <code>int</code>, <code>short</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2985
          <code>char</code>, <code>byte</code>, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2986
  	  <code>boolean</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2987
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2988
	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2989
	  Thread was not the current thread and was not suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2990
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2991
	<error id="JVMTI_ERROR_NO_MORE_FRAMES">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2992
	  There are no frames on the call stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2993
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2994
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2995
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2996
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2997
    <function id="ForceEarlyReturnLong" num="83" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2998
      <synopsis>Force Early Return - Long</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  2999
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3000
	This function can be used to return from a method whose
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3001
        result type is <code>long</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3002
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3003
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3004
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3005
	<required id="can_force_early_return"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3006
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3007
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3008
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3009
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3010
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3011
	    The thread whose current frame is to return early.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3012
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3013
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3014
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3015
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3016
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3017
	    The return value for the called frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3018
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3019
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3020
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3021
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3022
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3023
	  Attempted to return early from a frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3024
          corresponding to a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3025
          Or the implementation is unable to provide
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3026
          this functionality on this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3027
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3028
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3029
	  The result type of the called method is not <code>long</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3030
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3031
	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3032
	  Thread was not the current thread and was not suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3033
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3034
	<error id="JVMTI_ERROR_NO_MORE_FRAMES">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3035
	  There are no frames on the call stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3036
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3037
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3038
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3039
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3040
    <function id="ForceEarlyReturnFloat" num="84" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3041
      <synopsis>Force Early Return - Float</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3042
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3043
	This function can be used to return from a method whose
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3044
        result type is <code>float</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3045
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3046
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3047
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3048
	<required id="can_force_early_return"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3049
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3050
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3051
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3052
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3053
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3054
	    The thread whose current frame is to return early.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3055
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3056
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3057
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3058
	  <jfloat/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3059
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3060
	    The return value for the called frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3061
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3062
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3063
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3064
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3065
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3066
	  Attempted to return early from a frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3067
          corresponding to a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3068
          Or the implementation is unable to provide
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3069
          this functionality on this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3070
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3071
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3072
	  The result type of the called method is not <code>float</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3073
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3074
	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3075
	  Thread was not the current thread and was not suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3076
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3077
	<error id="JVMTI_ERROR_NO_MORE_FRAMES">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3078
	  There are no frames on the call stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3079
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3080
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3081
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3082
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3083
    <function id="ForceEarlyReturnDouble" num="85" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3084
      <synopsis>Force Early Return - Double</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3085
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3086
	This function can be used to return from a method whose
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3087
        result type is <code>double</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3088
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3089
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3090
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3091
	<required id="can_force_early_return"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3092
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3093
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3094
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3095
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3096
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3097
	    The thread whose current frame is to return early.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3098
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3099
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3100
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3101
	  <jdouble/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3102
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3103
	    The return value for the called frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3104
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3105
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3106
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3107
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3108
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3109
	  Attempted to return early from a frame corresponding to a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3110
          Or the implementation is unable to provide this functionality on this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3111
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3112
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3113
	  The result type of the called method is not <code>double</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3114
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3115
	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3116
	  Thread was not the current thread and was not suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3117
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3118
	<error id="JVMTI_ERROR_NO_MORE_FRAMES">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3119
	  There are no frames on the call stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3120
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3121
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3122
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3123
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3124
    <function id="ForceEarlyReturnVoid" num="86" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3125
      <synopsis>Force Early Return - Void</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3126
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3127
	This function can be used to return from a method with no result type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3128
        That is, the called method must be declared <code>void</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3129
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3130
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3131
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3132
	<required id="can_force_early_return"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3133
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3134
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3135
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3136
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3137
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3138
	    The thread whose current frame is to return early.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3139
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3140
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3141
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3142
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3143
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3144
	  Attempted to return early from a frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3145
          corresponding to a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3146
          Or the implementation is unable to provide
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3147
          this functionality on this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3148
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3149
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3150
	  The called method has a result type.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3151
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3152
	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3153
	  Thread was not the current thread and was not suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3154
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3155
	<error id="JVMTI_ERROR_NO_MORE_FRAMES">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3156
	  There are no frames on the call stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3157
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3158
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3159
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3160
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3161
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3162
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3163
  <category id="Heap" label="Heap">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3164
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3165
      These functions are used to analyze the heap.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3166
      Functionality includes the ability to view the objects in the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3167
      heap and to tag these objects.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3168
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3169
   
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3170
    <intro id="objectTags" label="Object Tags">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3171
      A <i>tag</i> is a value associated with an object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3172
      Tags are explicitly set by the agent using the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3173
      <functionlink id="SetTag"></functionlink> function or by
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3174
      callback functions such as <functionlink id="jvmtiHeapIterationCallback"/>.    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3175
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3176
      Tags are local to the environment; that is, the tags of one
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3177
      environment are not visible in another.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3178
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3179
      Tags are <code>jlong</code> values which can be used
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3180
      simply to mark an object or to store a pointer to more detailed
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3181
      information.  Objects which have not been tagged have a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3182
      tag of zero.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3183
      Setting a tag to zero makes the object untagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3184
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3185
   
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3186
    <intro id="heapCallbacks" label="Heap Callback Functions">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3187
        Heap functions which iterate through the heap and recursively
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3188
        follow object references use agent supplied callback functions
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3189
        to deliver the information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3190
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3191
        These heap callback functions must adhere to the following restrictions --
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3192
        These callbacks must not use JNI functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3193
        These callbacks must not use <jvmti/> functions except 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3194
        <i>callback safe</i> functions which
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3195
        specifically allow such use (see the raw monitor, memory management,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3196
        and environment local storage functions).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3197
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3198
        An implementation may invoke a callback on an internal thread or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3199
        the thread which called the iteration function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3200
        Heap callbacks are single threaded -- no more than one callback will
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3201
        be invoked at a time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3202
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3203
        The Heap Filter Flags can be used to prevent reporting
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3204
        based on the tag status of an object or its class.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3205
        If no flags are set (the <code>jint</code> is zero), objects
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3206
        will not be filtered out.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3207
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3208
        <constants id="jvmtiHeapFilter" label="Heap Filter Flags" kind="bits">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3209
	  <constant id="JVMTI_HEAP_FILTER_TAGGED" num="0x4">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3210
	    Filter out tagged objects. Objects which are tagged are not included.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3211
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3212
	  <constant id="JVMTI_HEAP_FILTER_UNTAGGED" num="0x8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3213
	    Filter out untagged objects. Objects which are not tagged are not included.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3214
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3215
	  <constant id="JVMTI_HEAP_FILTER_CLASS_TAGGED" num="0x10">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3216
	    Filter out objects with tagged classes. Objects whose class is tagged are not included.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3217
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3218
	  <constant id="JVMTI_HEAP_FILTER_CLASS_UNTAGGED" num="0x20">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3219
	    Filter out objects with untagged classes. Objects whose class is not tagged are not included.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3220
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3221
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3222
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3223
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3224
        The Heap Visit Control Flags are returned by the heap callbacks
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3225
        and can be used to abort the iteration.  For the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3226
        <functionlink id="jvmtiHeapReferenceCallback">Heap 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3227
        Reference Callback</functionlink>, it can also be used 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3228
        to prune the graph of traversed references
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3229
        (<code>JVMTI_VISIT_OBJECTS</code> is not set).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3230
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3231
        <constants id="jvmtiHeapVisitControl" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3232
                   label="Heap Visit Control Flags" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3233
                   kind="bits" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3234
                   since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3235
	  <constant id="JVMTI_VISIT_OBJECTS" num="0x100">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3236
            If we are visiting an object and if this callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3237
            was initiated by <functionlink id="FollowReferences"/>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3238
            traverse the references of this object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3239
            Otherwise ignored.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3240
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3241
	  <constant id="JVMTI_VISIT_ABORT" num="0x8000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3242
	    Abort the iteration.  Ignore all other bits.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3243
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3244
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3245
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3246
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3247
        The Heap Reference Enumeration is provided by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3248
        <functionlink id="jvmtiHeapReferenceCallback">Heap 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3249
        Reference Callback</functionlink> and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3250
        <functionlink id="jvmtiPrimitiveFieldCallback">Primitive Field 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3251
        Callback</functionlink> to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3252
        describe the kind of reference
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3253
        being reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3254
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3255
        <constants id="jvmtiHeapReferenceKind" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3256
                   label="Heap Reference Enumeration" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3257
                   kind="enum" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3258
                   since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3259
	  <constant id="JVMTI_HEAP_REFERENCE_CLASS" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3260
	    Reference from an object to its class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3261
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3262
	  <constant id="JVMTI_HEAP_REFERENCE_FIELD" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3263
	    Reference from an object to the value of one of its instance fields.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3264
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3265
	  <constant id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT" num="3">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3266
	    Reference from an array to one of its elements.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3267
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3268
	  <constant id="JVMTI_HEAP_REFERENCE_CLASS_LOADER" num="4">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3269
	    Reference from a class to its class loader.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3270
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3271
	  <constant id="JVMTI_HEAP_REFERENCE_SIGNERS" num="5">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3272
	    Reference from a class to its signers array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3273
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3274
	  <constant id="JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN" num="6">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3275
	    Reference from a class to its protection domain.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3276
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3277
	  <constant id="JVMTI_HEAP_REFERENCE_INTERFACE" num="7">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3278
            Reference from a class to one of its interfaces. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3279
            Note: interfaces are defined via a constant pool reference,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3280
            so the referenced interfaces may also be reported with a 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3281
            <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3282
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3283
	  <constant id="JVMTI_HEAP_REFERENCE_STATIC_FIELD" num="8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3284
	    Reference from a class to the value of one of its static fields.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3285
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3286
	  <constant id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL" num="9">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3287
	    Reference from a class to a resolved entry in the constant pool.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3288
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3289
	  <constant id="JVMTI_HEAP_REFERENCE_SUPERCLASS" num="10">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3290
            Reference from a class to its superclass. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3291
            A callback is bot sent if the superclass is <code>java.lang.Object</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3292
            Note: loaded classes define superclasses via a constant pool
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3293
            reference, so the referenced superclass may also be reported with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3294
            a <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3295
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3296
	  <constant id="JVMTI_HEAP_REFERENCE_JNI_GLOBAL" num="21">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3297
	    Heap root reference: JNI global reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3298
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3299
	  <constant id="JVMTI_HEAP_REFERENCE_SYSTEM_CLASS" num="22">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3300
	    Heap root reference: System class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3301
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3302
	  <constant id="JVMTI_HEAP_REFERENCE_MONITOR" num="23">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3303
	    Heap root reference: monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3304
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3305
	  <constant id="JVMTI_HEAP_REFERENCE_STACK_LOCAL" num="24">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3306
	    Heap root reference: local variable on the stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3307
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3308
	  <constant id="JVMTI_HEAP_REFERENCE_JNI_LOCAL" num="25">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3309
	    Heap root reference: JNI local reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3310
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3311
	  <constant id="JVMTI_HEAP_REFERENCE_THREAD" num="26">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3312
	    Heap root reference: Thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3313
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3314
	  <constant id="JVMTI_HEAP_REFERENCE_OTHER" num="27">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3315
	    Heap root reference: other heap root reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3316
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3317
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3318
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3319
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3320
        Definitions for the single character type descriptors of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3321
        primitive types.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3322
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3323
        <constants id="jvmtiPrimitiveType" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3324
                   label="Primitive Type Enumeration" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3325
                   kind="enum" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3326
                   since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3327
	  <constant id="JVMTI_PRIMITIVE_TYPE_BOOLEAN" num="90">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3328
            'Z' - Java programming language <code>boolean</code> - JNI <code>jboolean</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3329
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3330
	  <constant id="JVMTI_PRIMITIVE_TYPE_BYTE" num="66">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3331
            'B' - Java programming language <code>byte</code> - JNI <code>jbyte</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3332
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3333
	  <constant id="JVMTI_PRIMITIVE_TYPE_CHAR" num="67">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3334
            'C' - Java programming language <code>char</code> - JNI <code>jchar</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3335
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3336
	  <constant id="JVMTI_PRIMITIVE_TYPE_SHORT" num="83">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3337
            'S' - Java programming language <code>short</code> - JNI <code>jshort</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3338
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3339
	  <constant id="JVMTI_PRIMITIVE_TYPE_INT" num="73">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3340
            'I' - Java programming language <code>int</code> - JNI <code>jint</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3341
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3342
	  <constant id="JVMTI_PRIMITIVE_TYPE_LONG" num="74">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3343
            'J' - Java programming language <code>long</code> - JNI <code>jlong</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3344
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3345
	  <constant id="JVMTI_PRIMITIVE_TYPE_FLOAT" num="70">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3346
            'F' - Java programming language <code>float</code> - JNI <code>jfloat</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3347
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3348
	  <constant id="JVMTI_PRIMITIVE_TYPE_DOUBLE" num="68">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3349
            'D' - Java programming language <code>double</code> - JNI <code>jdouble</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3350
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3351
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3352
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3353
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3354
      <typedef id="jvmtiHeapReferenceInfoField" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3355
               label="Reference information structure for Field references" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3356
               since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3357
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3358
          Reference information returned for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3359
          <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3360
          <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3361
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3362
	<field id="index">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3363
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3364
	  <description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3365
            For <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>, the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3366
            referrer object is not a class or an inteface.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3367
            In this case, <code>index</code> is the index of the field 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3368
            in the class of the referrer object.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3369
            This class is referred to below as <i>C</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3370
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3371
            For <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3372
            the referrer object is a class (referred to below as <i>C</i>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3373
            or an interface (referred to below as <i>I</i>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3374
            In this case, <code>index</code> is the index of the field in 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3375
            that class or interface.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3376
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3377
            If the referrer object is not an interface, then the field 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3378
            indices are determined as follows: 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3379
            <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3380
              <li>make a list of all the fields in <i>C</i> and its
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3381
                  superclasses, starting with all the fields in 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3382
                  <code>java.lang.Object</code> and ending with all the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3383
                  fields in <i>C</i>.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3384
              <li>Within this list, put 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3385
                  the fields for a given class in the order returned by
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3386
                  <functionlink id="GetClassFields"/>.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3387
              <li>Assign the fields in this list indices 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3388
                  <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3389
                  is the count of the fields in all the interfaces
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3390
                  implemented by <i>C</i>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3391
                  Note that <i>C</i> implements all interfaces 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3392
                  directly implemented by its superclasses; as well
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3393
                  as all superinterfaces of these interfaces.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3394
            </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3395
            If the referrer object is an interface, then the field 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3396
            indices are determined as follows:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3397
            <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3398
              <li>make a list of the fields directly declared in 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3399
                  <i>I</i>.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3400
              <li>Within this list, put 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3401
                  the fields in the order returned by
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3402
                  <functionlink id="GetClassFields"/>.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3403
              <li>Assign the fields in this list indices 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3404
                  <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3405
                  is the count of the fields in all the superinterfaces
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3406
                  of <i>I</i>.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3407
            </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3408
            All fields are included in this computation, regardless of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3409
            field modifier (static, public, private, etc).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3410
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3411
            For example, given the following classes and interfaces:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3412
            <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3413
interface I0 {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3414
    int p = 0;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3415
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3416
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3417
interface I1 extends I0 {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3418
    int x = 1;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3419
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3420
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3421
interface I2 extends I0 {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3422
    int y = 2;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3423
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3424
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3425
class C1 implements I1 {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3426
    public static int a = 3;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3427
    private int b = 4;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3428
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3429
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3430
class C2 extends C1 implements I2 {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3431
    static int q = 5;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3432
    final int r = 6;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3433
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3434
            </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3435
            Assume that <functionlink id="GetClassFields"/> called on
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3436
            <code>C1</code> returns the fields of <code>C1</code> in the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3437
            order: a, b; and that the fields of <code>C2</code> are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3438
            returned in the order: q, r.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3439
            An instance of class <code>C1</code> will have the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3440
            following field indices:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3441
            <dl><dd><table>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3442
              <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3443
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3444
                  a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3445
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3446
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3447
                  2
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3448
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3449
                <td align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3450
                  The count of the fields in the interfaces
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3451
                  implemented by <code>C1</code> is two (<i>n</i>=2):
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3452
                  <code>p</code> of <code>I0</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3453
                  and <code>x</code> of <code>I1</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3454
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3455
              </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3456
              <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3457
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3458
                  b
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3459
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3460
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3461
                  3
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3462
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3463
                <td align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3464
                  the subsequent index.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3465
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3466
              </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3467
            </table></dd></dl>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3468
            The class <code>C1</code> will have the same field indices.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3469
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3470
            An instance of class <code>C2</code> will have the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3471
            following field indices:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3472
            <dl><dd><table>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3473
              <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3474
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3475
                  a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3476
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3477
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3478
                  3
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3479
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3480
                <td align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3481
                  The count of the fields in the interfaces
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3482
                  implemented by <code>C2</code> is three (<i>n</i>=3):
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3483
                  <code>p</code> of <code>I0</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3484
                  <code>x</code> of <code>I1</code> and <code>y</code> of <code>I2</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3485
                  (an interface of <code>C2</code>).  Note that the field <code>p</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3486
                  of <code>I0</code> is only included once.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3487
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3488
              </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3489
              <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3490
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3491
                  b
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3492
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3493
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3494
                  4
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3495
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3496
                <td align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3497
                  the subsequent index to "a".
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3498
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3499
              </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3500
              <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3501
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3502
                  q
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3503
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3504
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3505
                  5
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3506
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3507
                <td align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3508
                  the subsequent index to "b".
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3509
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3510
              </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3511
              <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3512
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3513
                  r
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3514
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3515
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3516
                  6
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3517
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3518
                <td align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3519
                  the subsequent index to "q".
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3520
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3521
              </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3522
            </table></dd></dl>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3523
            The class <code>C2</code> will have the same field indices.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3524
            Note that a field may have a different index depending on the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3525
            object that is viewing it -- for example field "a" above.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3526
            Note also: not all field indices may be visible from the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3527
            callbacks, but all indices are shown for illustrative purposes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3528
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3529
            The interface <code>I1</code> will have the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3530
            following field indices:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3531
            <dl><dd><table>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3532
              <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3533
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3534
                  x
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3535
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3536
                <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3537
                  1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3538
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3539
                <td align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3540
                  The count of the fields in the superinterfaces
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3541
                  of <code>I1</code> is one (<i>n</i>=1):
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3542
                  <code>p</code> of <code>I0</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3543
                </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3544
              </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3545
            </table></dd></dl>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3546
	  </description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3547
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3548
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3549
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3550
      <typedef id="jvmtiHeapReferenceInfoArray" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3551
               label="Reference information structure for Array references" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3552
               since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3553
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3554
          Reference information returned for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3555
         <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3556
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3557
	<field id="index">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3558
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3559
	  <description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3560
	    The array index.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3561
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3562
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3563
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3564
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3565
      <typedef id="jvmtiHeapReferenceInfoConstantPool" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3566
               label="Reference information structure for Constant Pool references" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3567
               since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3568
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3569
          Reference information returned for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3570
          <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3571
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3572
	<field id="index">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3573
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3574
	  <description>	    
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  3575
	    The index into the constant pool of the class. See the description in 
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  3576
      <vmspec chapter="4.4"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3577
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3578
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3579
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3580
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3581
      <typedef id="jvmtiHeapReferenceInfoStackLocal" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3582
               label="Reference information structure for Local Variable references" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3583
               since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3584
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3585
          Reference information returned for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3586
          <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3587
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3588
        <field id="thread_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3589
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3590
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3591
	    The tag of the thread corresponding to this stack, zero if not tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3592
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3593
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3594
        <field id="thread_id">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3595
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3596
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3597
	    The unique thread ID of the thread corresponding to this stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3598
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3599
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3600
        <field id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3601
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3602
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3603
	    The depth of the frame. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3604
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3605
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3606
        <field id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3607
	  <jmethodID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3608
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3609
	    The method executing in this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3610
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3611
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3612
        <field id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3613
	  <jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3614
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3615
	    The currently executing location in this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3616
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3617
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3618
        <field id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3619
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3620
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3621
	    The slot number of the local variable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3622
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3623
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3624
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3625
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3626
      <typedef id="jvmtiHeapReferenceInfoJniLocal" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3627
               label="Reference information structure for JNI local references" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3628
               since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3629
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3630
          Reference information returned for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3631
          <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3632
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3633
        <field id="thread_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3634
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3635
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3636
	    The tag of the thread corresponding to this stack, zero if not tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3637
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3638
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3639
        <field id="thread_id">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3640
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3641
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3642
	    The unique thread ID of the thread corresponding to this stack.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3643
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3644
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3645
        <field id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3646
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3647
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3648
	    The depth of the frame. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3649
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3650
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3651
        <field id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3652
	  <jmethodID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3653
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3654
	    The method executing in this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3655
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3656
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3657
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3658
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3659
      <typedef id="jvmtiHeapReferenceInfoReserved" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3660
               label="Reference information structure for Other references" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3661
               since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3662
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3663
          Reference information returned for other references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3664
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3665
        <field id="reserved1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3666
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3667
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3668
	    reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3669
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3670
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3671
        <field id="reserved2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3672
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3673
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3674
	    reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3675
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3676
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3677
        <field id="reserved3">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3678
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3679
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3680
	    reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3681
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3682
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3683
        <field id="reserved4">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3684
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3685
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3686
	    reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3687
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3688
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3689
        <field id="reserved5">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3690
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3691
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3692
	    reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3693
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3694
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3695
        <field id="reserved6">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3696
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3697
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3698
	    reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3699
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3700
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3701
        <field id="reserved7">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3702
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3703
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3704
	    reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3705
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3706
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3707
        <field id="reserved8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3708
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3709
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3710
	    reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3711
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3712
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3713
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3714
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3715
      <uniontypedef id="jvmtiHeapReferenceInfo" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3716
               label="Reference information structure" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3717
               since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3718
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3719
          The information returned about referrers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3720
          Represented as a union of the various kinds of reference information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3721
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3722
	<field id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3723
	  <struct>jvmtiHeapReferenceInfoField</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3724
	  <description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3725
	    The referrer information for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3726
            <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3727
            and <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3728
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3729
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3730
	<field id="array">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3731
	  <struct>jvmtiHeapReferenceInfoArray</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3732
	  <description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3733
	    The referrer information for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3734
	    For <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3735
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3736
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3737
	<field id="constant_pool">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3738
	  <struct>jvmtiHeapReferenceInfoConstantPool</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3739
	  <description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3740
	    The referrer information for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3741
	    For <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3742
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3743
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3744
        <field id="stack_local">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3745
	  <struct>jvmtiHeapReferenceInfoStackLocal</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3746
	  <description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3747
	    The referrer information for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3748
	    For <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3749
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3750
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3751
        <field id="jni_local">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3752
	  <struct>jvmtiHeapReferenceInfoJniLocal</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3753
	  <description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3754
	    The referrer information for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3755
	    For <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3756
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3757
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3758
        <field id="other">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3759
	  <struct>jvmtiHeapReferenceInfoReserved</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3760
	  <description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3761
	    reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3762
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3763
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3764
      </uniontypedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3765
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3766
      <typedef id="jvmtiHeapCallbacks" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3767
               label="Heap callback function structure" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3768
               since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3769
        <field id="heap_iteration_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3770
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3771
	    <struct>jvmtiHeapIterationCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3772
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3773
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3774
	    The callback to be called to describe an
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3775
	    object in the heap. Used by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3776
            <functionlink id="IterateThroughHeap"/> function, ignored by the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3777
            <functionlink id="FollowReferences"/> function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3778
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3779
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3780
        <field id="heap_reference_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3781
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3782
	    <struct>jvmtiHeapReferenceCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3783
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3784
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3785
	    The callback to be called to describe an
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3786
	    object reference.  Used by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3787
            <functionlink id="FollowReferences"/> function, ignored by the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3788
            <functionlink id="IterateThroughHeap"/> function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3789
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3790
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3791
        <field id="primitive_field_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3792
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3793
	    <struct>jvmtiPrimitiveFieldCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3794
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3795
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3796
            The callback to be called to describe a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3797
            primitive field.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3798
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3799
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3800
        <field id="array_primitive_value_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3801
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3802
	    <struct>jvmtiArrayPrimitiveValueCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3803
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3804
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3805
	    The callback to be called to describe an
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3806
	    array of primitive values.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3807
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3808
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3809
        <field id="string_primitive_value_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3810
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3811
	    <struct>jvmtiStringPrimitiveValueCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3812
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3813
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3814
	    The callback to be called to describe a String value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3815
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3816
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3817
        <field id="reserved5">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3818
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3819
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3820
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3821
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3822
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3823
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3824
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3825
        <field id="reserved6">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3826
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3827
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3828
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3829
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3830
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3831
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3832
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3833
        <field id="reserved7">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3834
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3835
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3836
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3837
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3838
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3839
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3840
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3841
        <field id="reserved8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3842
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3843
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3844
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3845
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3846
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3847
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3848
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3849
        <field id="reserved9">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3850
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3851
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3852
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3853
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3854
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3855
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3856
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3857
        <field id="reserved10">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3858
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3859
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3860
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3861
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3862
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3863
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3864
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3865
        <field id="reserved11">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3866
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3867
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3868
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3869
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3870
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3871
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3872
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3873
        <field id="reserved12">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3874
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3875
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3876
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3877
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3878
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3879
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3880
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3881
        <field id="reserved13">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3882
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3883
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3884
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3885
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3886
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3887
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3888
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3889
        <field id="reserved14">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3890
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3891
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3892
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3893
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3894
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3895
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3896
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3897
        <field id="reserved15">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3898
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3899
	    <struct>jvmtiReservedCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3900
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3901
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3902
	    Reserved for future use..
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3903
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3904
	</field>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3905
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3906
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3907
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3908
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3909
      <rationale>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3910
	The heap dumping functionality (below) uses a callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3911
	for each object.  While it would seem that a buffered approach
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3912
	would provide better throughput, tests do
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3913
	not show this to be the case--possibly due to locality of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3914
	memory reference or array access overhead.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3915
      </rationale>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3916
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3917
      <issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3918
        Still under investigation as to if java.lang.ref references
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3919
	are reported as a different type of reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3920
      </issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3921
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3922
      <issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3923
        Should or can an indication of the cost or relative cost of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3924
	these operations be included?
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3925
      </issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3926
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3927
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3928
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3929
    <callback id="jvmtiHeapIterationCallback" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3930
      <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3931
      <synopsis>Heap Iteration Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3932
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3933
        Agent supplied callback function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3934
	Describes (but does not pass in) an object in the heap.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3935
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3936
        This function should return a bit vector of the desired
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3937
        <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3938
        This will determine if the entire iteration should be aborted
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3939
        (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3940
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3941
        See the <internallink id="heapCallbacks">heap callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3942
        function restrictions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3943
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3944
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3945
        <param id="class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3946
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3947
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3948
	    The tag of the class of object (zero if the class is not tagged). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3949
	    If the object represents a runtime class, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3950
            the <code>class_tag</code> is the tag 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3951
	    associated with <code>java.lang.Class</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3952
            (zero if <code>java.lang.Class</code> is not tagged).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3953
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3954
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3955
        <param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3956
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3957
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3958
	    Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3959
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3960
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3961
        <param id="tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3962
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3963
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3964
	    The object tag value, or zero if the object is not tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3965
	    To set the tag value to be associated with the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3966
	    the agent sets the <code>jlong</code> pointed to by the parameter. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3967
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3968
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3969
        <param id="length">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3970
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3971
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3972
	    If this object is an array, the length of the array. Otherwise negative one (-1).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3973
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3974
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3975
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3976
	  <outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3977
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3978
	    The user supplied data that was passed into the iteration function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3979
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3980
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3981
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3982
    </callback>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3983
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3984
    <callback id="jvmtiHeapReferenceCallback" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3985
      <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3986
      <synopsis>Heap Reference Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3987
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3988
        Agent supplied callback function.	
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3989
	Describes a reference from an object or the VM (the referrer) to another object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3990
	(the referree) or a heap root to a referree.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3991
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3992
        This function should return a bit vector of the desired
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3993
        <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3994
        This will determine if the objects referenced by the referree
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3995
        should be visited or if the entire iteration should be aborted.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3996
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3997
        See the <internallink id="heapCallbacks">heap callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3998
        function restrictions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  3999
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4000
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4001
	<param id="reference_kind">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4002
	  <enum>jvmtiHeapReferenceKind</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4003
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4004
	    The kind of reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4005
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4006
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4007
	<param id="reference_info">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4008
	  <inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4009
	    <struct>jvmtiHeapReferenceInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4010
	  </inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4011
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4012
	    Details about the reference. 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
  4013
            Set when the <datalink id="jvmtiHeapReferenceCallback.reference_kind">reference_kind</datalink> is
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4014
            <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4015
	    <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4016
	    <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4017
	    <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4018
            <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4019
            or <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4020
            Otherwise <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4021
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4022
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4023
        <param id="class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4024
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4025
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4026
	    The tag of the class of referree object (zero if the class is not tagged). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4027
            If the referree object represents a runtime class, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4028
            the <code>class_tag</code> is the tag 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4029
            associated with <code>java.lang.Class</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4030
            (zero if <code>java.lang.Class</code> is not tagged).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4031
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4032
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4033
        <param id="referrer_class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4034
          <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4035
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4036
            The tag of the class of the referrer object (zero if the class is not tagged
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4037
            or the referree is a heap root). If the referrer object represents a runtime
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4038
            class, the <code>referrer_class_tag</code> is the tag associated with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4039
            the <code>java.lang.Class</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4040
            (zero if <code>java.lang.Class</code> is not tagged).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4041
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4042
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4043
        <param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4044
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4045
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4046
	    Size of the referree object (in bytes). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4047
            See <functionlink id="GetObjectSize"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4048
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4049
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4050
        <param id="tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4051
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4052
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4053
	    Points to the referree object tag value, or zero if the object is not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4054
	    tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4055
	    To set the tag value to be associated with the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4056
	    the agent sets the <code>jlong</code> pointed to by the parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4057
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4058
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4059
        <param id="referrer_tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4060
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4061
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4062
	    Points to the tag of the referrer object, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4063
            points to the zero if the referrer
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4064
	    object is not tagged. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4065
            <code>NULL</code> if the referrer in not an object (that is,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4066
            this callback is reporting a heap root).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4067
	    To set the tag value to be associated with the referrer object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4068
	    the agent sets the <code>jlong</code> pointed to by the parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4069
            If this callback is reporting a reference from an object to itself, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4070
            <code>referrer_tag_ptr == tag_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4071
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4072
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4073
        <param id="length">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4074
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4075
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4076
	    If this object is an array, the length of the array. Otherwise negative one (-1).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4077
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4078
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4079
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4080
	  <outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4081
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4082
	    The user supplied data that was passed into the iteration function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4083
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4084
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4085
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4086
    </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4087
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4088
    <callback id="jvmtiPrimitiveFieldCallback" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4089
      <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4090
      <synopsis>Primitive Field Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4091
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4092
        Agent supplied callback function which	
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4093
        describes a primitive field of an object (<i>the object</i>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4094
        A primitive field is a field whose type is a primitive type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4095
        This callback will describe a static field if the object is a class,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4096
        and otherwise will describe an instance field.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4097
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4098
        This function should return a bit vector of the desired
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4099
        <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4100
        This will determine if the entire iteration should be aborted
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4101
        (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4102
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4103
        See the <internallink id="heapCallbacks">heap callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4104
        function restrictions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4105
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4106
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4107
	<param id="kind">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4108
	  <enum>jvmtiHeapReferenceKind</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4109
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4110
	    The kind of field -- instance or static (<datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4111
            <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4112
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4113
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4114
	<param id="info">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4115
	  <inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4116
	    <struct>jvmtiHeapReferenceInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4117
	  </inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4118
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4119
	    Which field (the field index).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4120
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4121
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4122
        <param id="object_class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4123
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4124
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4125
            The tag of the class of the object (zero if the class is not tagged). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4126
            If the object represents a runtime class, the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4127
            <code>object_class_tag</code> is the tag 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4128
            associated with <code>java.lang.Class</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4129
            (zero if <code>java.lang.Class</code> is not tagged).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4130
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4131
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4132
        <param id="object_tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4133
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4134
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4135
	    Points to the tag of the object, or zero if the object is not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4136
	    tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4137
	    To set the tag value to be associated with the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4138
	    the agent sets the <code>jlong</code> pointed to by the parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4139
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4140
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4141
        <param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4142
	  <jvalue/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4143
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4144
	    The value of the field.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4145
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4146
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4147
        <param id="value_type">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4148
	  <enum>jvmtiPrimitiveType</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4149
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4150
	    The type of the field.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4151
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4152
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4153
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4154
	  <outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4155
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4156
	    The user supplied data that was passed into the iteration function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4157
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4158
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4159
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4160
    </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4161
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4162
    <callback id="jvmtiArrayPrimitiveValueCallback" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4163
      <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4164
      <synopsis>Array Primitive Value Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4165
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4166
        Agent supplied callback function.	
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4167
	Describes the values in an array of a primitive type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4168
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4169
        This function should return a bit vector of the desired
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4170
        <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4171
        This will determine if the entire iteration should be aborted
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4172
        (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4173
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4174
        See the <internallink id="heapCallbacks">heap callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4175
        function restrictions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4176
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4177
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4178
        <param id="class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4179
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4180
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4181
	    The tag of the class of the array object (zero if the class is not tagged). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4182
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4183
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4184
        <param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4185
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4186
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4187
	    Size of the array (in bytes). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4188
            See <functionlink id="GetObjectSize"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4189
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4190
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4191
        <param id="tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4192
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4193
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4194
	    Points to the tag of the array object, or zero if the object is not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4195
	    tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4196
	    To set the tag value to be associated with the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4197
	    the agent sets the <code>jlong</code> pointed to by the parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4198
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4199
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4200
        <param id="element_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4201
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4202
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4203
	    The length of the primitive array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4204
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4205
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4206
        <param id="element_type">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4207
	  <enum>jvmtiPrimitiveType</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4208
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4209
	    The type of the elements of the array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4210
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4211
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4212
        <param id="elements">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4213
	  <vmbuf><void/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4214
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4215
	    The elements of the array in a packed array of <code>element_count</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4216
            items of <code>element_type</code> size each.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4217
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4218
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4219
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4220
	  <outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4221
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4222
	    The user supplied data that was passed into the iteration function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4223
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4224
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4225
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4226
    </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4227
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4228
    <callback id="jvmtiStringPrimitiveValueCallback" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4229
      <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4230
      <synopsis>String Primitive Value Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4231
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4232
        Agent supplied callback function.	
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4233
	Describes the value of a java.lang.String.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4234
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4235
        This function should return a bit vector of the desired
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4236
        <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4237
        This will determine if the entire iteration should be aborted
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4238
        (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4239
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4240
        See the <internallink id="heapCallbacks">heap callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4241
        function restrictions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4242
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4243
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4244
        <param id="class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4245
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4246
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4247
	    The tag of the class of the String class (zero if the class is not tagged). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4248
            <issue>Is this needed?</issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4249
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4250
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4251
        <param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4252
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4253
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4254
	    Size of the string (in bytes). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4255
            See <functionlink id="GetObjectSize"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4256
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4257
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4258
        <param id="tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4259
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4260
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4261
	    Points to the tag of the String object, or zero if the object is not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4262
	    tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4263
	    To set the tag value to be associated with the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4264
	    the agent sets the <code>jlong</code> pointed to by the parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4265
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4266
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4267
        <param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4268
	  <vmbuf><jchar/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4269
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4270
	    The value of the String, encoded as a Unicode string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4271
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4272
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4273
        <param id="value_length">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4274
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4275
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4276
	    The length of the string. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4277
            The length is equal to the number of 16-bit Unicode 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4278
            characters in the string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4279
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4280
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4281
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4282
	  <outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4283
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4284
	    The user supplied data that was passed into the iteration function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4285
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4286
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4287
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4288
    </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4289
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4290
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4291
    <callback id="jvmtiReservedCallback" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4292
      <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4293
      <synopsis>reserved for future use Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4294
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4295
        Placeholder -- reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4296
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4297
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4298
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4299
    </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4300
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4301
    <function id="FollowReferences" num="115" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4302
      <synopsis>Follow References</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4303
      <description>	
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4304
        This function initiates a traversal over the objects that are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4305
        directly and indirectly reachable from the specified object or,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4306
        if <code>initial_object</code> is not specified, all objects 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4307
        reachable from the heap roots.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4308
	The heap root are the set of system classes, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4309
	JNI globals, references from thread stacks, and other objects used as roots 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4310
	for the purposes of garbage collection. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4311
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4312
        This function operates by traversing the reference graph.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4313
        Let <i>A</i>, <i>B</i>, ... represent objects.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4314
        When a reference from <i>A</i> to <i>B</i> is traversed,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4315
        when a reference from a heap root to <i>B</i> is traversed, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4316
        or when <i>B</i> is specified as the <paramlink id="initial_object"/>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4317
        then <i>B</i> is said to be <i>visited</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4318
        A reference from <i>A</i> to <i>B</i> is not traversed until <i>A</i> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4319
        is visited.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4320
        References are reported in the same order that the references are traversed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4321
        Object references are reported by invoking the agent supplied  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4322
        callback function <functionlink id="jvmtiHeapReferenceCallback"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4323
        In a reference from <i>A</i> to <i>B</i>, <i>A</i> is known 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4324
        as the <i>referrer</i> and <i>B</i> as the <i>referree</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4325
        The callback is invoked exactly once for each reference from a referrer;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4326
        this is true even if there are reference cycles or multiple paths to
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4327
        the referrer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4328
        There may be more than one reference between a referrer and a referree,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4329
        each reference is reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4330
        These references may be distinguished by examining the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4331
        <datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4332
         id="jvmtiHeapReferenceCallback.reference_kind"><code>reference_kind</code></datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4333
         and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4334
        <datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4335
         id="jvmtiHeapReferenceCallback.reference_info"><code>reference_info</code></datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4336
        parameters of the <functionlink id="jvmtiHeapReferenceCallback"/> callback.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4337
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4338
        This function reports a Java programming language view of object references,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4339
        not a virtual machine implementation view. The following object references
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4340
        are reported when they are non-null:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4341
        <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4342
          <li>Instance objects report references to each non-primitive instance fields
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4343
              (including inherited fields).</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4344
          <li>Instance objects report a reference to the object type (class).</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4345
          <li>Classes report a reference to the superclass and directly
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4346
              implemented/extended interfaces.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4347
          <li>Classes report a reference to the class loader, protection domain,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4348
              signers, and resolved entries in the constant pool.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4349
          <li>Classes report a reference to each directly declared non-primitive
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4350
              static field.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4351
          <li>Arrays report a reference to the array type (class) and each
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4352
              array element.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4353
          <li>Primitive arrays report a reference to the array type.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4354
        </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4355
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4356
        This function can also be used to examine primitive (non-object) values.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4357
        The primitive value of an array or String
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4358
        is reported after the object has been visited;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4359
        it is reported by invoking the agent supplied callback function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4360
        <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4361
        <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4362
        A primitive field
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4363
        is reported after the object with that field is visited;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4364
        it is reported by invoking the agent supplied callback function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4365
        <functionlink id="jvmtiPrimitiveFieldCallback"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4366
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4367
        Whether a callback is provided or is <code>NULL</code> only determines
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4368
        whether the callback will be invoked, it does not influence
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4369
        which objects are visited nor does it influence whether other callbacks
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4370
        will be invoked.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4371
        However, the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4372
        <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4373
        returned by <functionlink id="jvmtiHeapReferenceCallback"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4374
        do determine if the objects referenced by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4375
        current object as visited.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4376
        The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4377
        and <paramlink id="klass"/> provided as parameters to this function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4378
        do not control which objects are visited but they do control which
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4379
        objects and primitive values are reported by the callbacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4380
        For example, if the only callback that was set is
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
  4381
        <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4382
        is set to the array of bytes class, then only arrays of byte will be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4383
        reported.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4384
        The table below summarizes this:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4385
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4386
        <table>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4387
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4388
            <th/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4389
            <th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4390
              Controls objects visited
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4391
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4392
            <th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4393
              Controls objects reported
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4394
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4395
            <th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4396
              Controls primitives reported
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4397
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4398
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4399
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4400
            <th align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4401
              the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4402
              <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4403
              returned by <functionlink id="jvmtiHeapReferenceCallback"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4404
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4405
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4406
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4407
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4408
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4409
              <b>Yes</b>, since visits are controlled
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4410
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4411
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4412
              <b>Yes</b>, since visits are controlled
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4413
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4414
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4415
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4416
            <th align="left">
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
  4417
              <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/>
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4418
              in <paramlink id="callbacks"/> set
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4419
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4420
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4421
              No
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4422
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4423
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4424
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4425
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4426
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4427
              No
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4428
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4429
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4430
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4431
            <th align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4432
              <paramlink id="heap_filter"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4433
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4434
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4435
              No
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4436
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4437
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4438
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4439
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4440
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4441
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4442
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4443
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4444
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4445
            <th align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4446
              <paramlink id="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4447
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4448
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4449
              No
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4450
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4451
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4452
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4453
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4454
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4455
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4456
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4457
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4458
        </table>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4459
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4460
        During the execution of this function the state of the heap
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4461
        does not change: no objects are allocated, no objects are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4462
        garbage collected, and the state of objects (including 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4463
        held values) does not change. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4464
        As a result, threads executing Java 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4465
        programming language code, threads attempting to resume the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4466
        execution of Java programming language code, and threads 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4467
        attempting to execute JNI functions are typically stalled.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4468
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4469
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4470
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4471
        <required id="can_tag_objects"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4472
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4473
      <parameters>             
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4474
        <param id="heap_filter">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4475
          <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4476
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4477
            This bit vector of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4478
            <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4479
            restricts the objects for which the callback function is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4480
            This applies to both the object and primitive callbacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4481
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4482
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4483
        <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4484
          <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4485
            <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4486
            <nullok>callbacks are not limited to instances of a particular
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4487
                    class</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4488
          </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4489
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4490
            Callbacks are only reported when the object is an instance of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4491
            this class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4492
            Objects which are instances of a subclass of <code>klass</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4493
            are not reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4494
            If <code>klass</code> is an interface, no objects are reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4495
            This applies to both the object and primitive callbacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4496
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4497
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4498
        <param id="initial_object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4499
          <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4500
            <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4501
            <nullok>references are followed from the heap roots</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4502
          </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4503
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4504
            The object to follow
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4505
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4506
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4507
        <param id="callbacks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4508
          <inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4509
            <struct>jvmtiHeapCallbacks</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4510
          </inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4511
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4512
            Structure defining the set of callback functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4513
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4514
        </param>                  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4515
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4516
          <inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4517
            <void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4518
            <nullok><code>NULL</code> is passed as the user supplied data</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4519
          </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4520
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4521
            User supplied data to be passed to the callback. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4522
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4523
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4524
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4525
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4526
        <error id="JVMTI_ERROR_INVALID_CLASS">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4527
          <paramlink id="klass"/> is not a valid class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4528
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4529
        <error id="JVMTI_ERROR_INVALID_OBJECT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4530
          <paramlink id="initial_object"/> is not a valid object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4531
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4532
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4533
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4534
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4535
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4536
    <function id="IterateThroughHeap" num="116" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4537
      <synopsis>Iterate Through Heap</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4538
      <description>        
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4539
        Initiate an iteration over all objects in the heap. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4540
        This includes both reachable and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4541
        unreachable objects. Objects are visited in no particular order.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4542
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4543
        Heap objects are reported by invoking the agent supplied 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4544
        callback function <functionlink id="jvmtiHeapIterationCallback"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4545
        References between objects are not reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4546
        If only reachable objects are desired, or if object reference information
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4547
        is needed, use <functionlink id="FollowReferences"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4548
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4549
        This function can also be used to examine primitive (non-object) values.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4550
        The primitive value of an array or String
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4551
        is reported after the object has been visited;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4552
        it is reported by invoking the agent supplied callback function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4553
        <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4554
        <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4555
        A primitive field
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4556
        is reported after the object with that field is visited;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4557
        it is reported by invoking the agent supplied 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4558
        callback function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4559
        <functionlink id="jvmtiPrimitiveFieldCallback"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4560
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4561
        Unless the iteration is aborted by the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4562
        <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4563
        returned by a callback, all objects in the heap are visited.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4564
        Whether a callback is provided or is <code>NULL</code> only determines
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4565
        whether the callback will be invoked, it does not influence
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4566
        which objects are visited nor does it influence whether other callbacks
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4567
        will be invoked.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4568
        The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4569
        and <paramlink id="klass"/> provided as parameters to this function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4570
        do not control which objects are visited but they do control which
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4571
        objects and primitive values are reported by the callbacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4572
        For example, if the only callback that was set is
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
  4573
        <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4574
        is set to the array of bytes class, then only arrays of byte will be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4575
        reported. The table below summarizes this (contrast this with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4576
        <functionlink id="FollowReferences"/>):
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4577
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4578
        <table>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4579
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4580
            <th/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4581
            <th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4582
              Controls objects visited
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4583
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4584
            <th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4585
              Controls objects reported
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4586
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4587
            <th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4588
              Controls primitives reported
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4589
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4590
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4591
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4592
            <th align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4593
              the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4594
              <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4595
              returned by <functionlink id="jvmtiHeapIterationCallback"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4596
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4597
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4598
              No<br/>(unless they abort the iteration)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4599
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4600
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4601
              No<br/>(unless they abort the iteration)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4602
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4603
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4604
              No<br/>(unless they abort the iteration)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4605
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4606
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4607
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4608
            <th align="left">
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
  4609
              <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/>
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4610
              in <paramlink id="callbacks"/> set
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4611
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4612
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4613
              No
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4614
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4615
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4616
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4617
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4618
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4619
              No
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4620
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4621
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4622
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4623
            <th align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4624
              <paramlink id="heap_filter"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4625
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4626
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4627
              No
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4628
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4629
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4630
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4631
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4632
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4633
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4634
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4635
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4636
          <tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4637
            <th align="left">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4638
              <paramlink id="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4639
            </th>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4640
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4641
              No
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4642
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4643
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4644
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4645
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4646
            <td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4647
              <b>Yes</b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4648
            </td>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4649
          </tr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4650
        </table>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4651
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4652
        During the execution of this function the state of the heap
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4653
        does not change: no objects are allocated, no objects are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4654
        garbage collected, and the state of objects (including 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4655
        held values) does not change. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4656
        As a result, threads executing Java 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4657
        programming language code, threads attempting to resume the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4658
        execution of Java programming language code, and threads 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4659
        attempting to execute JNI functions are typically stalled.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4660
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4661
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4662
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4663
        <required id="can_tag_objects"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4664
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4665
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4666
        <param id="heap_filter">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4667
          <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4668
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4669
            This bit vector of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4670
            <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4671
            restricts the objects for which the callback function is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4672
            This applies to both the object and primitive callbacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4673
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4674
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4675
        <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4676
          <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4677
            <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4678
            <nullok>callbacks are not limited to instances of a particular class</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4679
          </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4680
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4681
            Callbacks are only reported when the object is an instance of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4682
            this class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4683
            Objects which are instances of a subclass of <code>klass</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4684
            are not reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4685
            If <code>klass</code> is an interface, no objects are reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4686
            This applies to both the object and primitive callbacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4687
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4688
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4689
        <param id="callbacks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4690
          <inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4691
            <struct>jvmtiHeapCallbacks</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4692
          </inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4693
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4694
            Structure defining the set callback functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4695
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4696
        </param>                  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4697
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4698
          <inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4699
            <void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4700
            <nullok><code>NULL</code> is passed as the user supplied data</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4701
          </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4702
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4703
            User supplied data to be passed to the callback. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4704
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4705
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4706
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4707
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4708
        <error id="JVMTI_ERROR_INVALID_CLASS">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4709
          <paramlink id="klass"/> is not a valid class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4710
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4711
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4712
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4713
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4714
    <function id="GetTag" phase="start" num="106">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4715
      <synopsis>Get Tag</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4716
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4717
        Retrieve the tag associated with an object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4718
        The tag is a long value typically used to store a 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4719
        unique identifier or pointer to object information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4720
        The tag is set with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4721
        <functionlink id="SetTag"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4722
        Objects for which no tags have been set return a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4723
        tag value of zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4724
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4725
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4726
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4727
        <required id="can_tag_objects"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4728
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4729
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4730
        <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4731
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4732
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4733
	      The object whose tag is to be retrieved.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4734
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4735
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4736
        <param id="tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4737
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4738
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4739
	    On return, the referenced long is set to the value 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4740
	    of the tag.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4741
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4742
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4743
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4744
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4745
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4746
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4747
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4748
    <function id="SetTag" phase="start" num="107">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4749
      <synopsis>Set Tag</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4750
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4751
        Set the tag associated with an object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4752
        The tag is a long value typically used to store a 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4753
        unique identifier or pointer to object information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4754
        The tag is visible with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4755
        <functionlink id="GetTag"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4756
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4757
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4758
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4759
        <required id="can_tag_objects"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4760
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4761
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4762
        <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4763
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4764
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4765
	      The object whose tag is to be set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4766
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4767
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4768
        <param id="tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4769
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4770
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4771
	    The new value of the tag.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4772
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4773
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4774
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4775
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4776
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4777
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4778
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4779
    <function id="GetObjectsWithTags" num="114">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4780
      <synopsis>Get Objects With Tags</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4781
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4782
	Return objects in the heap with the specified tags.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4783
	The format is parallel arrays of objects and tags.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4784
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4785
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4786
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4787
        <required id="can_tag_objects"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4788
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4789
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4790
	<param id="tag_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4791
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4792
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4793
	      Number of tags to scan for.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4794
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4795
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4796
	<param id="tags">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4797
	  <inbuf incount="tag_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4798
	    <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4799
	  </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4800
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4801
	      Scan for objects with these tags.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4802
	      Zero is not permitted in this array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4803
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4804
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4805
	<param id="count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4806
	  <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4807
	    <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4808
	  </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4809
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4810
	      Return the number of objects with any of the tags 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4811
	      in <paramlink id="tags"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4812
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4813
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4814
	<param id="object_result_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4815
	  <allocbuf outcount="count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4816
	    <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4817
	    <nullok>this information is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4818
	  </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4819
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4820
	      Returns the array of objects with any of the tags 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4821
	      in <paramlink id="tags"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4822
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4823
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4824
	<param id="tag_result_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4825
	  <allocbuf outcount="count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4826
	    <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4827
	    <nullok>this information is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4828
	  </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4829
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4830
	      For each object in <paramlink id="object_result_ptr"/>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4831
	      return the tag at the corresponding index.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4832
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4833
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4834
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4835
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4836
	<error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4837
	  Zero is present in <paramlink id="tags"></paramlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4838
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4839
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4840
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4841
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4842
    <function id="ForceGarbageCollection" num="108">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4843
      <synopsis>Force Garbage Collection</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4844
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4845
        Force the VM to perform a garbage collection.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4846
        The garbage collection is as complete as possible.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4847
        This function does not cause finalizers to be run.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4848
        This function does not return until the garbage collection
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4849
        is finished.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4850
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4851
        Although garbage collection is as complete 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4852
        as possible there is no guarantee that all 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4853
        <eventlink id="ObjectFree"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4854
        events will have been 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4855
        sent by the time that this function 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4856
        returns. In particular, an object may be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4857
        prevented from being freed because it 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4858
        is awaiting finalization.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4859
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4860
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4861
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4862
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4863
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4864
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4865
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4866
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4867
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4868
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4869
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4870
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4871
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4872
  <category id="Heap_1_0" label="Heap (1.0)">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4873
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4874
      <b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4875
        These functions and data types were introduced in the original 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4876
        <jvmti/> version 1.0 and have been superseded by more
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4877
      </b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4878
      <internallink id="Heap"><b>powerful and flexible versions</b></internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4879
      <b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4880
        which:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4881
      </b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4882
      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4883
        <li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4884
          <b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4885
            Allow access to primitive values (the value of Strings, arrays, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4886
            and primitive fields)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4887
          </b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4888
        </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4889
        <li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4890
          <b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4891
            Allow the tag of the referrer to be set, thus enabling more
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4892
            efficient localized reference graph building
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4893
          </b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4894
        </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4895
        <li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4896
          <b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4897
            Provide more extensive filtering abilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4898
          </b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4899
        </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4900
        <li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4901
          <b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4902
            Are extensible, allowing their abilities to grow in future versions of <jvmti/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4903
          </b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4904
        </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4905
      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4906
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4907
      <b>Please use the </b>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4908
      <internallink id="Heap"><b>current Heap functions</b></internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4909
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4910
        <constants id="jvmtiHeapObjectFilter" label="Heap Object Filter Enumeration" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4911
	  <constant id="JVMTI_HEAP_OBJECT_TAGGED" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4912
	    Tagged objects only.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4913
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4914
	  <constant id="JVMTI_HEAP_OBJECT_UNTAGGED" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4915
	    Untagged objects only.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4916
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4917
	  <constant id="JVMTI_HEAP_OBJECT_EITHER" num="3">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4918
	    Either tagged or untagged objects.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4919
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4920
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4921
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4922
        <constants id="jvmtiHeapRootKind" label="Heap Root Kind Enumeration" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4923
	  <constant id="JVMTI_HEAP_ROOT_JNI_GLOBAL" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4924
	    JNI global reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4925
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4926
	  <constant id="JVMTI_HEAP_ROOT_SYSTEM_CLASS" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4927
	    System class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4928
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4929
	  <constant id="JVMTI_HEAP_ROOT_MONITOR" num="3">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4930
	    Monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4931
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4932
	  <constant id="JVMTI_HEAP_ROOT_STACK_LOCAL" num="4">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4933
	    Stack local.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4934
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4935
	  <constant id="JVMTI_HEAP_ROOT_JNI_LOCAL" num="5">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4936
	    JNI local reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4937
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4938
	  <constant id="JVMTI_HEAP_ROOT_THREAD" num="6">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4939
	    Thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4940
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4941
	  <constant id="JVMTI_HEAP_ROOT_OTHER" num="7">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4942
	    Other.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4943
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4944
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4945
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4946
        <constants id="jvmtiObjectReferenceKind" label="Object Reference Enumeration" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4947
	  <constant id="JVMTI_REFERENCE_CLASS" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4948
	    Reference from an object to its class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4949
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4950
	  <constant id="JVMTI_REFERENCE_FIELD" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4951
	    Reference from an object to the value of one of its instance fields.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4952
	    For references of this kind the <code>referrer_index</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4953
	    parameter to the <internallink id="jvmtiObjectReferenceCallback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4954
            jvmtiObjectReferenceCallback</internallink> is the index of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4955
 	    the instance field. The index is based on the order of all the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4956
            object's fields. This includes all fields of the directly declared
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4957
            static and instance fields in the class, and includes all fields (both
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4958
            public and private) fields declared in superclasses and superinterfaces.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4959
            The index is thus calculated by summing the index of the field in the directly
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4960
            declared class (see <functionlink id="GetClassFields"/>), with the total
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4961
            number of fields (both public and private) declared in all superclasses
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4962
            and superinterfaces. The index starts at zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4963
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4964
	  <constant id="JVMTI_REFERENCE_ARRAY_ELEMENT" num="3">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4965
	    Reference from an array to one of its elements.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4966
	    For references of this kind the <code>referrer_index</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4967
            parameter to the <internallink id="jvmtiObjectReferenceCallback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4968
            jvmtiObjectReferenceCallback</internallink> is the array index.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4969
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4970
	  <constant id="JVMTI_REFERENCE_CLASS_LOADER" num="4">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4971
	    Reference from a class to its class loader.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4972
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4973
	  <constant id="JVMTI_REFERENCE_SIGNERS" num="5">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4974
	    Reference from a class to its signers array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4975
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4976
	  <constant id="JVMTI_REFERENCE_PROTECTION_DOMAIN" num="6">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4977
	    Reference from a class to its protection domain.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4978
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4979
	  <constant id="JVMTI_REFERENCE_INTERFACE" num="7">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4980
	    Reference from a class to one of its interfaces.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4981
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4982
	  <constant id="JVMTI_REFERENCE_STATIC_FIELD" num="8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4983
	    Reference from a class to the value of one of its static fields.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4984
	    For references of this kind the <code>referrer_index</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4985
	    parameter to the <internallink id="jvmtiObjectReferenceCallback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4986
            jvmtiObjectReferenceCallback</internallink> is the index of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4987
 	    the static field. The index is based on the order of all the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4988
            object's fields. This includes all fields of the directly declared
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4989
            static and instance fields in the class, and includes all fields (both
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4990
            public and private) fields declared in superclasses and superinterfaces.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4991
            The index is thus calculated by summing the index of the field in the directly
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4992
            declared class (see <functionlink id="GetClassFields"/>), with the total
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4993
            number of fields (both public and private) declared in all superclasses
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4994
            and superinterfaces. The index starts at zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4995
            Note: this definition differs from that in the <jvmti/> 1.0 Specification.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4996
            <rationale>No known implementations used the 1.0 definition.</rationale>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4997
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4998
	  <constant id="JVMTI_REFERENCE_CONSTANT_POOL" num="9">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  4999
	    Reference from a class to a resolved entry in the constant pool.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5000
	    For references of this kind the <code>referrer_index</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5001
            parameter to the <internallink id="jvmtiObjectReferenceCallback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5002
            jvmtiObjectReferenceCallback</internallink> is the index into
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  5003
            constant pool table of the class, starting at 1. See
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  5004
            <vmspec chapter="4.4"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5005
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5006
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5007
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5008
        <constants id="jvmtiIterationControl" label="Iteration Control Enumeration" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5009
	  <constant id="JVMTI_ITERATION_CONTINUE" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5010
	    Continue the iteration.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5011
            If this is a reference iteration, follow the references of this object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5012
	  </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5013
	  <constant id="JVMTI_ITERATION_IGNORE" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5014
	    Continue the iteration.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5015
            If this is a reference iteration, ignore the references of this object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5016
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5017
	  <constant id="JVMTI_ITERATION_ABORT" num="0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5018
	    Abort the iteration.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5019
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5020
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5021
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5022
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5023
    <callback id="jvmtiHeapObjectCallback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5024
      <enum>jvmtiIterationControl</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5025
      <synopsis>Heap Object Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5026
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5027
        Agent supplied callback function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5028
	Describes (but does not pass in) an object in the heap.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5029
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5030
        Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5031
        or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5032
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5033
        See the <internallink id="heapCallbacks">heap callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5034
        function restrictions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5035
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5036
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5037
        <param id="class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5038
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5039
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5040
	    The tag of the class of object (zero if the class is not tagged). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5041
	    If the object represents a runtime class, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5042
            the <code>class_tag</code> is the tag 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5043
	    associated with <code>java.lang.Class</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5044
            (zero if <code>java.lang.Class</code> is not tagged).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5045
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5046
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5047
        <param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5048
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5049
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5050
	    Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5051
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5052
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5053
        <param id="tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5054
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5055
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5056
	    The object tag value, or zero if the object is not tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5057
	    To set the tag value to be associated with the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5058
	    the agent sets the <code>jlong</code> pointed to by the parameter. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5059
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5060
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5061
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5062
	  <outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5063
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5064
	    The user supplied data that was passed into the iteration function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5065
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5066
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5067
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5068
    </callback>  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5069
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5070
    <callback id="jvmtiHeapRootCallback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5071
      <enum>jvmtiIterationControl</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5072
      <synopsis>Heap Root Object Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5073
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5074
        Agent supplied callback function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5075
	Describes (but does not pass in) an object that is a root for the purposes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5076
	of garbage collection.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5077
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5078
        Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5079
        <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5080
        references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5081
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5082
        See the <internallink id="heapCallbacks">heap callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5083
        function restrictions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5084
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5085
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5086
	<param id="root_kind">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5087
	  <enum>jvmtiHeapRootKind</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5088
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5089
	    The kind of heap root.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5090
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5091
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5092
        <param id="class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5093
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5094
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5095
	    The tag of the class of object (zero if the class is not tagged). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5096
            If the object represents a runtime class, the <code>class_tag</code> is the tag 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5097
            associated with <code>java.lang.Class</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5098
            (zero if <code>java.lang.Class</code> is not tagged).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5099
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5100
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5101
        <param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5102
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5103
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5104
	    Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5105
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5106
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5107
        <param id="tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5108
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5109
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5110
	    The object tag value, or zero if the object is not tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5111
	    To set the tag value to be associated with the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5112
	    the agent sets the <code>jlong</code> pointed to by the parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5113
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5114
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5115
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5116
	  <outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5117
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5118
	    The user supplied data that was passed into the iteration function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5119
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5120
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5121
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5122
    </callback> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5123
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5124
    <callback id="jvmtiStackReferenceCallback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5125
      <enum>jvmtiIterationControl</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5126
      <synopsis>Stack Reference Object Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5127
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5128
        Agent supplied callback function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5129
	Describes (but does not pass in) an object on the stack that is a root for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5130
	the purposes of garbage collection.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5131
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5132
        Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5133
        <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5134
        references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5135
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5136
        See the <internallink id="heapCallbacks">heap callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5137
        function restrictions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5138
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5139
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5140
	<param id="root_kind">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5141
	  <enum>jvmtiHeapRootKind</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5142
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5143
	    The kind of root (either <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5144
	    <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5145
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5146
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5147
        <param id="class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5148
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5149
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5150
           The tag of the class of object (zero if the class is not tagged). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5151
           If the object represents a runtime class, the  <code>class_tag</code> is the tag 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5152
           associated with <code>java.lang.Class</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5153
           (zero if <code>java.lang.Class</code> is not tagged).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5154
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5155
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5156
        <param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5157
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5158
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5159
	    Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5160
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5161
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5162
        <param id="tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5163
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5164
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5165
	    The object tag value, or zero if the object is not tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5166
	    To set the tag value to be associated with the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5167
	    the agent sets the <code>jlong</code> pointed to by the parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5168
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5169
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5170
        <param id="thread_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5171
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5172
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5173
	    The tag of the thread corresponding to this stack, zero if not tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5174
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5175
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5176
        <param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5177
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5178
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5179
	    The depth of the frame. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5180
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5181
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5182
        <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5183
	  <jmethodID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5184
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5185
	    The method executing in this frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5186
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5187
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5188
        <param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5189
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5190
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5191
	    The slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5192
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5193
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5194
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5195
	  <outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5196
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5197
	    The user supplied data that was passed into the iteration function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5198
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5199
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5200
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5201
    </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5202
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5203
    <callback id="jvmtiObjectReferenceCallback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5204
      <enum>jvmtiIterationControl</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5205
      <synopsis>Object Reference Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5206
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5207
        Agent supplied callback function.	
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5208
	Describes a reference from an object (the referrer) to another object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5209
	(the referree).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5210
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5211
        Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5212
        <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5213
        references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5214
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5215
        See the <internallink id="heapCallbacks">heap callback
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5216
        function restrictions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5217
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5218
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5219
	<param id="reference_kind">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5220
	  <enum>jvmtiObjectReferenceKind</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5221
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5222
	    The type of reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5223
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5224
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5225
        <param id="class_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5226
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5227
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5228
	    The tag of the class of referree object (zero if the class is not tagged). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5229
            If the referree object represents a runtime class,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5230
            the  <code>class_tag</code> is the tag 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5231
            associated with <code>java.lang.Class</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5232
            (zero if <code>java.lang.Class</code> is not tagged).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5233
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5234
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5235
        <param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5236
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5237
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5238
	    Size of the referree object (in bytes). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5239
            See <functionlink id="GetObjectSize"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5240
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5241
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5242
        <param id="tag_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5243
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5244
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5245
	    The referree object tag value, or zero if the object is not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5246
	    tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5247
	    To set the tag value to be associated with the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5248
	    the agent sets the <code>jlong</code> pointed to by the parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5249
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5250
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5251
        <param id="referrer_tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5252
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5253
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5254
	    The tag of the referrer object, or zero if the referrer
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5255
	    object is not tagged.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5256
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5257
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5258
	<param id="referrer_index">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5259
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5260
	  <description>	    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5261
	    For references of type <code>JVMTI_REFERENCE_FIELD</code> or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5262
            <code>JVMTI_REFERENCE_STATIC_FIELD</code> the index
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5263
	    of the field in the referrer object. The index is based on the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5264
	    order of all the object's fields - see <internallink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5265
	    id="JVMTI_REFERENCE_FIELD">JVMTI_REFERENCE_FIELD</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5266
            or <internallink
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5267
	    id="JVMTI_REFERENCE_STATIC_FIELD">JVMTI_REFERENCE_STATIC_FIELD
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5268
	    </internallink> for further description.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5269
	    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5270
	    For references of type <code>JVMTI_REFERENCE_ARRAY_ELEMENT</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5271
	    the array index - see <internallink id="JVMTI_REFERENCE_ARRAY_ELEMENT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5272
	    JVMTI_REFERENCE_ARRAY_ELEMENT</internallink> for further description.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5273
	    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5274
	    For references of type <code>JVMTI_REFERENCE_CONSTANT_POOL</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5275
	    the index into the constant pool of the class - see
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5276
	    <internallink id="JVMTI_REFERENCE_CONSTANT_POOL">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5277
	    JVMTI_REFERENCE_CONSTANT_POOL</internallink> for further 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5278
	    description.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5279
	    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5280
	    For references of other kinds the <code>referrer_index</code> is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5281
	    <code>-1</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5282
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5283
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5284
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5285
	  <outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5286
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5287
	    The user supplied data that was passed into the iteration function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5288
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5289
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5290
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5291
    </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5292
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5293
    <function id="IterateOverObjectsReachableFromObject" num="109">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5294
      <synopsis>Iterate Over Objects Reachable From Object</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5295
      <description>	
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5296
        This function iterates over all objects that are directly
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5297
        and indirectly reachable from the specified object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5298
	For each object <i>A</i> (known
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5299
	as the referrer) with a reference to object <i>B</i> the specified 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5300
	callback function is called to describe the object reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5301
        The callback is called exactly once for each reference from a referrer;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5302
        this is true even if there are reference cycles or multiple paths to
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5303
        the referrer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5304
        There may be more than one reference between a referrer and a referree,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5305
        These may be distinguished by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5306
        <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5307
        <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5308
        The callback for an object will always occur after the callback for
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5309
        its referrer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5310
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5311
        See <functionlink id="FollowReferences"/> for the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5312
        references which are reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5313
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5314
        During the execution of this function the state of the heap
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5315
        does not change: no objects are allocated, no objects are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5316
        garbage collected, and the state of objects (including 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5317
        held values) does not change. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5318
        As a result, threads executing Java 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5319
        programming language code, threads attempting to resume the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5320
        execution of Java programming language code, and threads 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5321
        attempting to execute JNI functions are typically stalled.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5322
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5323
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5324
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5325
        <required id="can_tag_objects"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5326
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5327
      <parameters>             
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5328
        <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5329
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5330
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5331
	      The object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5332
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5333
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5334
        <param id="object_reference_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5335
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5336
	    <struct>jvmtiObjectReferenceCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5337
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5338
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5339
	      The callback to be called to describe each
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5340
	      object reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5341
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5342
	</param>		  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5343
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5344
	  <inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5345
	    <void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5346
	    <nullok><code>NULL</code> is passed as the user supplied data</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5347
	  </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5348
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5349
	    User supplied data to be passed to the callback. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5350
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5351
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5352
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5353
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5354
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5355
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5356
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5357
    <function id="IterateOverReachableObjects" num="110">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5358
      <synopsis>Iterate Over Reachable Objects</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5359
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5360
        This function iterates over the root objects and all objects that
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5361
        are directly and indirectly reachable from the root objects.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5362
	The root objects comprise the set of system classes, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5363
	JNI globals, references from thread stacks, and other objects used as roots 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5364
	for the purposes of garbage collection. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5365
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5366
	For each root the <paramlink id="heap_root_callback"></paramlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5367
	or <paramlink id="stack_ref_callback"></paramlink> callback is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5368
	An object can be a root object for more than one reason and in that case
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5369
	the appropriate callback is called for each reason.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5370
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5371
	For each object reference the <paramlink id="object_ref_callback"></paramlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5372
	callback function is called to describe the object reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5373
        The callback is called exactly once for each reference from a referrer;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5374
        this is true even if there are reference cycles or multiple paths to
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5375
        the referrer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5376
        There may be more than one reference between a referrer and a referree,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5377
        These may be distinguished by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5378
        <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5379
        <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5380
        The callback for an object will always occur after the callback for
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5381
        its referrer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5382
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5383
        See <functionlink id="FollowReferences"/> for the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5384
        references which are reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5385
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5386
	Roots are always reported to the profiler before any object references
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5387
	are reported. In other words, the <paramlink id="object_ref_callback"></paramlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5388
	callback will not be called until the appropriate callback has been called
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5389
	for all roots. If the <paramlink id="object_ref_callback"></paramlink> callback is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5390
	specified as <code>NULL</code> then this function returns after
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5391
	reporting the root objects to the profiler.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5392
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5393
        During the execution of this function the state of the heap
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5394
        does not change: no objects are allocated, no objects are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5395
        garbage collected, and the state of objects (including 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5396
        held values) does not change. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5397
        As a result, threads executing Java 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5398
        programming language code, threads attempting to resume the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5399
        execution of Java programming language code, and threads 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5400
        attempting to execute JNI functions are typically stalled.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5401
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5402
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5403
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5404
        <required id="can_tag_objects"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5405
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5406
      <parameters>      	
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5407
        <param id="heap_root_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5408
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5409
	    <struct>jvmtiHeapRootCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5410
	    <nullok>do not report heap roots</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5411
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5412
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5413
	      The callback function to be called for each heap root of type
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5414
	      <code>JVMTI_HEAP_ROOT_JNI_GLOBAL</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5415
	      <code>JVMTI_HEAP_ROOT_SYSTEM_CLASS</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5416
	      <code>JVMTI_HEAP_ROOT_MONITOR</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5417
	      <code>JVMTI_HEAP_ROOT_THREAD</code>, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5418
	      <code>JVMTI_HEAP_ROOT_OTHER</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5419
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5420
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5421
        <param id="stack_ref_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5422
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5423
	    <struct>jvmtiStackReferenceCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5424
	    <nullok>do not report stack references</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5425
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5426
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5427
	      The callback function to be called for each heap root of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5428
	      <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5429
	      <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5430
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5431
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5432
        <param id="object_ref_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5433
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5434
	    <struct>jvmtiObjectReferenceCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5435
	    <nullok>do not follow references from the root objects</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5436
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5437
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5438
	      The callback function to be called for each object reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5439
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5440
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5441
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5442
	  <inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5443
	    <void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5444
	    <nullok><code>NULL</code> is passed as the user supplied data</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5445
	  </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5446
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5447
	    User supplied data to be passed to the callback. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5448
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5449
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5450
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5451
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5452
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5453
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5454
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5455
    <function id="IterateOverHeap" num="111">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5456
      <synopsis>Iterate Over Heap</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5457
      <description>        
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5458
        Iterate over all objects in the heap. This includes both reachable and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5459
	unreachable objects.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5460
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5461
	The <paramlink id="object_filter"></paramlink> parameter indicates the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5462
	objects for which the callback function is called. If this parameter
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5463
	is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5464
	called for every object that is tagged. If the parameter is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5465
	<code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5466
	for objects that are not tagged. If the parameter
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5467
	is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5468
	called for every object in the heap, irrespective of whether it is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5469
	tagged or not.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5470
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5471
        During the execution of this function the state of the heap
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5472
        does not change: no objects are allocated, no objects are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5473
        garbage collected, and the state of objects (including 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5474
        held values) does not change. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5475
        As a result, threads executing Java 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5476
        programming language code, threads attempting to resume the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5477
        execution of Java programming language code, and threads 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5478
        attempting to execute JNI functions are typically stalled.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5479
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5480
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5481
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5482
        <required id="can_tag_objects"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5483
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5484
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5485
	<param id="object_filter">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5486
	  <enum>jvmtiHeapObjectFilter</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5487
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5488
	    Indicates the objects for which the callback function is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5489
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5490
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5491
        <param id="heap_object_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5492
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5493
	    <struct>jvmtiHeapObjectCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5494
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5495
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5496
	      The iterator function to be called for each
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5497
	      object matching the <paramlink id="object_filter"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5498
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5499
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5500
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5501
	  <inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5502
	    <void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5503
	    <nullok><code>NULL</code> is passed as the user supplied data</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5504
	  </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5505
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5506
	    User supplied data to be passed to the callback. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5507
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5508
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5509
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5510
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5511
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5512
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5513
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5514
    <function id="IterateOverInstancesOfClass" num="112">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5515
      <synopsis>Iterate Over Instances Of Class</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5516
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5517
        Iterate over all objects in the heap that are instances of the specified class. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5518
        This includes direct instances of the specified class and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5519
        instances of all subclasses of the specified class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5520
	This includes both reachable and unreachable objects.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5521
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5522
	The <paramlink id="object_filter"></paramlink> parameter indicates the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5523
	objects for which the callback function is called. If this parameter
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5524
	is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5525
	called for every object that is tagged. If the parameter is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5526
	<code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5527
	called for objects that are not tagged. If the parameter
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5528
	is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5529
	called for every object in the heap, irrespective of whether it is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5530
	tagged or not.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5531
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5532
	During the execution of this function the state of the heap
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5533
	does not change: no objects are allocated, no objects are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5534
	garbage collected, and the state of objects (including 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5535
	held values) does not change. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5536
	As a result, threads executing Java 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5537
	programming language code, threads attempting to resume the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5538
	execution of Java programming language code, and threads 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5539
	attempting to execute JNI functions are typically stalled.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5540
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5541
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5542
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5543
        <required id="can_tag_objects"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5544
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5545
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5546
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5547
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5548
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5549
	      Iterate over objects of this class only.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5550
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5551
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5552
	<param id="object_filter">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5553
	  <enum>jvmtiHeapObjectFilter</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5554
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5555
	    Indicates the objects for which the callback function is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5556
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5557
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5558
	<param id="heap_object_callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5559
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5560
	    <struct>jvmtiHeapObjectCallback</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5561
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5562
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5563
	      The iterator function to be called for each
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5564
	      <paramlink id="klass"/> instance matching 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5565
              the <paramlink id="object_filter"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5566
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5567
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5568
        <param id="user_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5569
	  <inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5570
	    <void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5571
	    <nullok><code>NULL</code> is passed as the user supplied data</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5572
	  </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5573
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5574
	    User supplied data to be passed to the callback. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5575
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5576
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5577
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5578
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5579
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5580
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5581
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5582
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5583
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5584
  <category id="local" label="Local Variable">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5585
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5586
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5587
      These functions are used to retrieve or set the value of a local variable. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5588
      The variable is identified by the depth of the frame containing its
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5589
      value and the variable's slot number within that frame. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5590
      The mapping of variables to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5591
      slot numbers can be obtained with the function 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5592
      <functionlink id="GetLocalVariableTable"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5593
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5594
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5595
    <function id="GetLocalObject" num="21">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5596
      <synopsis>Get Local Variable - Object</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5597
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5598
	This function can be used to retrieve the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5599
        variable whose type is <code>Object</code> or a subclass of <code>Object</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5600
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5601
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5602
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5603
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5604
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5605
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5606
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5607
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5608
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5609
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5610
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5611
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5612
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5613
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5614
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5615
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5616
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5617
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5618
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5619
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5620
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5621
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5622
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5623
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5624
	<param id="value_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5625
	  <outptr><jobject/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5626
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5627
	      On return, points to the variable's value. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5628
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5629
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5630
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5631
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5632
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5633
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5634
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5635
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5636
          The variable type is not
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5637
          <code>Object</code> or a subclass of <code>Object</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5638
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5639
	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5640
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5641
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5642
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5643
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5644
7444
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5645
    <function id="GetLocalInstance" num="155" since="1.2">
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5646
      <synopsis>Get Local Instance</synopsis>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5647
      <description>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5648
        This function can be used to retrieve the value of the local object
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5649
        variable at slot 0 (the "<code>this</code>" object) from non-static
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5650
        frames.  This function can retrieve the "<code>this</code>" object from
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5651
        native method frames, whereas <code>GetLocalObject()</code> would 
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5652
        return <code>JVMTI_ERROR_OPAQUE_FRAME</code> in those cases.
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5653
      </description>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5654
      <origin>new</origin>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5655
      <capabilities>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5656
	<required id="can_access_local_variables"></required>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5657
      </capabilities>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5658
      <parameters>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5659
 	<param id="thread">
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5660
	  <jthread null="current" frame="frame"/>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5661
	  <description>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5662
	    The thread of the frame containing the variable's value.
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5663
	  </description>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5664
	</param>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5665
	<param id="depth">
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5666
	  <jframeID thread="thread"/>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5667
	  <description>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5668
	    The depth of the frame containing the variable's value.
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5669
	  </description>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5670
	</param>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5671
	<param id="value_ptr">
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5672
	  <outptr><jobject/></outptr>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5673
	    <description>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5674
	      On return, points to the variable's value. 
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5675
	    </description>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5676
	</param>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5677
      </parameters>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5678
      <errors>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5679
	<error id="JVMTI_ERROR_INVALID_SLOT">
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5680
	  If the specified frame is a static method frame.
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5681
	</error>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5682
      </errors>
be338e543a57 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 7413
diff changeset
  5683
    </function>
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5684
    <function id="GetLocalInt" num="22">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5685
      <synopsis>Get Local Variable - Int</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5686
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5687
	This function can be used to retrieve the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5688
        variable whose type is <code>int</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5689
        <code>short</code>, <code>char</code>, <code>byte</code>, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5690
	<code>boolean</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5691
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5692
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5693
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5694
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5695
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5696
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5697
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5698
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5699
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5700
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5701
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5702
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5703
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5704
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5705
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5706
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5707
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5708
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5709
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5710
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5711
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5712
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5713
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5714
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5715
	<param id="value_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5716
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5717
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5718
	    On return, points to the variable's value. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5719
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5720
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5721
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5722
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5723
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5724
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5725
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5726
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5727
	  The variable type is not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5728
          <code>int</code>, <code>short</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5729
          <code>char</code>, <code>byte</code>, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5730
  	  <code>boolean</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5731
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5732
	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5733
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5734
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5735
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5736
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5737
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5738
    <function id="GetLocalLong" num="23">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5739
      <synopsis>Get Local Variable - Long</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5740
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5741
	This function can be used to retrieve the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5742
        variable whose type is <code>long</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5743
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5744
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5745
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5746
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5747
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5748
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5749
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5750
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5751
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5752
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5753
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5754
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5755
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5756
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5757
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5758
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5759
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5760
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5761
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5762
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5763
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5764
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5765
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5766
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5767
	<param id="value_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5768
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5769
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5770
	    On return, points to the variable's value. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5771
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5772
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5773
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5774
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5775
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5776
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5777
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5778
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5779
	  The variable type is not <code>long</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5780
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5781
	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5782
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5783
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5784
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5785
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5786
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5787
    <function id="GetLocalFloat" num="24">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5788
      <synopsis>Get Local Variable - Float</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5789
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5790
	This function can be used to retrieve the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5791
        variable whose type is <code>float</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5792
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5793
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5794
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5795
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5796
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5797
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5798
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5799
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5800
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5801
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5802
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5803
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5804
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5805
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5806
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5807
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5808
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5809
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5810
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5811
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5812
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5813
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5814
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5815
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5816
	<param id="value_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5817
	  <outptr><jfloat/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5818
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5819
	    On return, points to the variable's value. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5820
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5821
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5822
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5823
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5824
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5825
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5826
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5827
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5828
	  The variable type is not <code>float</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5829
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5830
	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5831
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5832
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5833
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5834
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5835
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5836
    <function id="GetLocalDouble" num="25">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5837
      <synopsis>Get Local Variable - Double</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5838
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5839
	This function can be used to retrieve the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5840
        variable whose type is <code>long</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5841
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5842
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5843
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5844
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5845
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5846
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5847
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5848
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5849
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5850
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5851
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5852
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5853
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5854
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5855
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5856
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5857
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5858
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5859
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5860
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5861
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5862
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5863
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5864
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5865
	<param id="value_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5866
	  <outptr><jdouble/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5867
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5868
	    On return, points to the variable's value. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5869
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5870
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5871
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5872
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5873
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5874
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5875
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5876
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5877
	  The variable type is not <code>double</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5878
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5879
	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5880
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5881
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5882
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5883
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5884
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5885
    <function id="SetLocalObject" num="26">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5886
      <synopsis>Set Local Variable - Object</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5887
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5888
	This function can be used to set the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5889
        variable whose type is <code>Object</code> or a subclass of <code>Object</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5890
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5891
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5892
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5893
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5894
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5895
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5896
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5897
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5898
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5899
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5900
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5901
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5902
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5903
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5904
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5905
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5906
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5907
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5908
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5909
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5910
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5911
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5912
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5913
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5914
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5915
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5916
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5917
	      The new value for the variable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5918
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5919
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5920
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5921
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5922
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5923
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5924
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5925
	<error id="JVMTI_ERROR_TYPE_MISMATCH">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5926
	  The variable type is not
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5927
	  <code>Object</code> or a subclass of <code>Object</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5928
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5929
	<error id="JVMTI_ERROR_TYPE_MISMATCH">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5930
	  The supplied <paramlink id="value"/> is not compatible 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5931
	  with the variable type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5932
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5933
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5934
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5935
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5936
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5937
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5938
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5939
    <function id="SetLocalInt" num="27">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5940
      <synopsis>Set Local Variable - Int</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5941
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5942
	This function can be used to set the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5943
        variable whose type is <code>int</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5944
        <code>short</code>, <code>char</code>, <code>byte</code>, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5945
	<code>boolean</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5946
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5947
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5948
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5949
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5950
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5951
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5952
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5953
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5954
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5955
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5956
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5957
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5958
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5959
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5960
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5961
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5962
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5963
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5964
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5965
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5966
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5967
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5968
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5969
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5970
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5971
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5972
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5973
	    The new value for the variable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5974
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5975
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5976
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5977
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5978
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5979
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5980
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5981
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5982
	  The variable type is not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5983
          <code>int</code>, <code>short</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5984
          <code>char</code>, <code>byte</code>, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5985
  	  <code>boolean</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5986
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5987
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5988
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5989
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5990
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5991
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5992
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5993
    <function id="SetLocalLong" num="28">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5994
      <synopsis>Set Local Variable - Long</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5995
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5996
	This function can be used to set the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5997
        variable whose type is <code>long</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5998
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  5999
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6000
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6001
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6002
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6003
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6004
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6005
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6006
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6007
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6008
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6009
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6010
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6011
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6012
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6013
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6014
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6015
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6016
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6017
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6018
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6019
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6020
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6021
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6022
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6023
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6024
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6025
	    The new value for the variable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6026
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6027
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6028
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6029
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6030
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6031
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6032
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6033
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6034
	  The variable type is not <code>long</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6035
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6036
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6037
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6038
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6039
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6040
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6041
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6042
    <function id="SetLocalFloat" num="29">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6043
      <synopsis>Set Local Variable - Float</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6044
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6045
	This function can be used to set the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6046
        variable whose type is <code>float</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6047
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6048
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6049
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6050
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6051
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6052
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6053
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6054
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6055
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6056
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6057
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6058
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6059
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6060
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6061
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6062
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6063
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6064
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6065
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6066
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6067
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6068
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6069
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6070
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6071
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6072
	  <jfloat/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6073
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6074
	    The new value for the variable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6075
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6076
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6077
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6078
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6079
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6080
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6081
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6082
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6083
	  The variable type is not <code>float</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6084
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6085
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6086
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6087
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6088
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6089
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6090
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6091
    <function id="SetLocalDouble" num="30">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6092
      <synopsis>Set Local Variable - Double</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6093
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6094
	This function can be used to set the value of a local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6095
        variable whose type is <code>double</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6096
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6097
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6098
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6099
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6100
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6101
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6102
 	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6103
	  <jthread null="current" frame="frame"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6104
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6105
	    The thread of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6106
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6107
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6108
	<param id="depth">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6109
	  <jframeID thread="thread"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6110
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6111
	    The depth of the frame containing the variable's value.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6112
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6113
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6114
	<param id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6115
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6116
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6117
	    The variable's slot number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6118
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6119
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6120
	<param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6121
	  <jdouble/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6122
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6123
	    The new value for the variable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6124
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6125
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6126
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6127
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6128
	<error id="JVMTI_ERROR_INVALID_SLOT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6129
	  Invalid <code>slot</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6130
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6131
	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6132
	  The variable type is not <code>double</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6133
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6134
	<error id="JVMTI_ERROR_OPAQUE_FRAME">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6135
	  Not a visible frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6136
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6137
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6138
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6139
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6140
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6141
  <category id="breakpointCategory" label="Breakpoint">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6142
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6143
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6144
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6145
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6146
    <function id="SetBreakpoint" num="38">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6147
      <synopsis>Set Breakpoint</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6148
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6149
	Set a breakpoint at the instruction indicated by
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6150
	<code>method</code> and <code>location</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6151
	An instruction can only have one breakpoint.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6152
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6153
	Whenever the designated instruction is about to be executed, a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6154
	<eventlink id="Breakpoint"></eventlink> event is generated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6155
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6156
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6157
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6158
	<required id="can_generate_breakpoint_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6159
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6160
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6161
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6162
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6163
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6164
	      The class in which to set the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6165
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6166
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6167
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6168
	  <jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6169
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6170
	      The method in which to set the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6171
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6172
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6173
	<param id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6174
	  <jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6175
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6176
	    the index of the instruction at which to set the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6177
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6178
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6179
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6180
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6181
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6182
	<error id="JVMTI_ERROR_DUPLICATE"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6183
	  The designated bytecode already has a breakpoint.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6184
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6185
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6186
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6187
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6188
    <function id="ClearBreakpoint" num="39">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6189
      <synopsis>Clear Breakpoint</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6190
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6191
	Clear the breakpoint at the bytecode indicated by
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6192
	<code>method</code> and <code>location</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6193
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6194
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6195
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6196
	<required id="can_generate_breakpoint_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6197
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6198
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6199
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6200
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6201
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6202
	      The class in which to clear the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6203
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6204
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6205
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6206
	  <jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6207
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6208
	      The method in which to clear the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6209
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6210
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6211
	<param id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6212
	  <jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6213
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6214
	    the index of the instruction at which to clear the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6215
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6216
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6217
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6218
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6219
	<error id="JVMTI_ERROR_NOT_FOUND"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6220
	  There's no breakpoint at the designated bytecode.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6221
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6222
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6223
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6224
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6225
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6226
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6227
  <category id="fieldWatch" label="Watched Field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6228
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6229
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6230
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6231
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6232
    <function id="SetFieldAccessWatch" num="41">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6233
      <synopsis>Set Field Access Watch</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6234
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6235
	Generate a <eventlink id="FieldAccess"></eventlink> event
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6236
	when the field specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6237
	by <code>klass</code> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6238
	<code>field</code> is about to be accessed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6239
	An event will be generated for each access of the field
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6240
	until it is canceled with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6241
	<functionlink id="ClearFieldAccessWatch"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6242
	Field accesses from Java programming language code or from JNI code are watched,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6243
	fields modified by other means are not watched.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6244
	Note that <jvmti/> users should be aware that their own field accesses
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6245
	will trigger the watch.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6246
	A field can only have one field access watch set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6247
	Modification of a field is not considered an access--use 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6248
	<functionlink id="SetFieldModificationWatch"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6249
	to monitor modifications.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6250
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6251
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6252
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6253
	<required id="can_generate_field_access_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6254
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6255
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6256
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6257
	  <jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6258
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6259
	      The class containing the field to watch
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6260
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6261
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6262
	<param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6263
	  <jfieldID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6264
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6265
	      The field to watch
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6266
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6267
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6268
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6269
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6270
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6271
	<error id="JVMTI_ERROR_DUPLICATE"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6272
	  The designated field is already being watched for accesses.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6273
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6274
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6275
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6276
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6277
    <function id="ClearFieldAccessWatch" num="42">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6278
      <synopsis>Clear Field Access Watch</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6279
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6280
	Cancel a field access watch previously set by 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6281
	<functionlink id="SetFieldAccessWatch"></functionlink>, on the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6282
	field specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6283
	by <code>klass</code> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6284
	<code>field</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6285
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6286
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6287
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6288
	<required id="can_generate_field_access_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6289
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6290
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6291
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6292
	  <jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6293
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6294
	      The class containing the field to watch
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6295
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6296
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6297
	<param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6298
	  <jfieldID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6299
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6300
	      The field to watch
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6301
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6302
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6303
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6304
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6305
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6306
	<error id="JVMTI_ERROR_NOT_FOUND"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6307
	  The designated field is not being watched for accesses.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6308
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6309
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6310
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6311
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6312
    <function id="SetFieldModificationWatch" num="43">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6313
      <synopsis>Set Field Modification Watch</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6314
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6315
	Generate a <eventlink id="FieldModification"></eventlink> event
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6316
	when the field specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6317
	by <code>klass</code> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6318
	<code>field</code> is about to be modified.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6319
	An event will be generated for each modification of the field
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6320
	until it is canceled with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6321
	<functionlink id="ClearFieldModificationWatch"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6322
	Field modifications from Java programming language code or from JNI code are watched,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6323
	fields modified by other means are not watched.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6324
	Note that <jvmti/> users should be aware that their own field modifications
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6325
	will trigger the watch.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6326
	A field can only have one field modification watch set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6327
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6328
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6329
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6330
	<required id="can_generate_field_modification_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6331
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6332
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6333
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6334
	  <jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6335
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6336
	      The class containing the field to watch
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6337
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6338
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6339
	<param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6340
	  <jfieldID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6341
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6342
	      The field to watch
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6343
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6344
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6345
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6346
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6347
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6348
	<error id="JVMTI_ERROR_DUPLICATE"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6349
	  The designated field is already being watched for modifications.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6350
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6351
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6352
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6353
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6354
    <function id="ClearFieldModificationWatch" num="44">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6355
      <synopsis>Clear Field Modification Watch</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6356
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6357
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6358
	Cancel a field modification watch previously set by 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6359
	<functionlink id="SetFieldModificationWatch"></functionlink>, on the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6360
	field specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6361
	by <code>klass</code> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6362
	<code>field</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6363
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6364
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6365
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6366
	<required id="can_generate_field_modification_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6367
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6368
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6369
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6370
	  <jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6371
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6372
	      The class containing the field to watch
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6373
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6374
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6375
	<param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6376
	  <jfieldID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6377
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6378
	      The field to watch
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6379
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6380
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6381
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6382
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6383
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6384
	<error id="JVMTI_ERROR_NOT_FOUND"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6385
	  The designated field is not being watched for modifications.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6386
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6387
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6388
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6389
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6390
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6391
  <category id="class" label="Class">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6392
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6393
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6394
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6395
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6396
    <function id="GetLoadedClasses" jkernel="yes" num="78">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6397
      <synopsis>Get Loaded Classes</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6398
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6399
	Return an array of all classes loaded in the virtual machine.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6400
	The number of classes in the array is returned via
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6401
	<code>class_count_ptr</code>, and the array itself via
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6402
	<code>classes_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6403
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6404
	Array classes of all types (including arrays of primitive types) are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6405
	included in the returned list. Primitive classes (for example, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6406
	<code>java.lang.Integer.TYPE</code>) are <i>not</i> included in this list. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6407
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6408
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6409
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6410
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6411
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6412
	<param id="class_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6413
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6414
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6415
	    On return, points to the number of classes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6416
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6417
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6418
	<param id="classes_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6419
	  <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6420
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6421
	      On return, points to an array of references, one
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6422
	      for each class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6423
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6424
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6425
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6426
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6427
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6428
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6429
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6430
    <function id="GetClassLoaderClasses" jkernel="yes" num="79">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6431
      <synopsis>Get Classloader Classes</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6432
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6433
	Returns an array of those classes for which this class loader has
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6434
	been recorded as an initiating loader. Each 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6435
	class in the returned array was created by this class loader, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6436
	either by defining it directly or by delegation to another class loader.
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  6437
	See <vmspec chapter="5.3"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6438
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6439
	For JDK version 1.1 implementations that don't
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6440
	recognize the distinction between initiating and defining class loaders,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6441
	this function should return all classes loaded in the virtual machine.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6442
	The number of classes in the array is returned via
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6443
	<code>class_count_ptr</code>, and the array itself via
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6444
	<code>classes_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6445
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6446
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6447
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6448
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6449
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6450
	<param id="initiating_loader">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6451
          <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6452
            <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6453
	    <nullok>the classes initiated by the bootstrap loader will be returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6454
          </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6455
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6456
	      An initiating class loader.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6457
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6458
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6459
	<param id="class_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6460
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6461
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6462
	    On return, points to the number of classes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6463
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6464
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6465
	<param id="classes_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6466
	  <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6467
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6468
	      On return, points to an array of references, one
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6469
	      for each class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6470
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6471
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6472
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6473
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6474
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6475
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6476
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6477
    <function id="GetClassSignature" phase="start" num="48">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6478
      <synopsis>Get Class Signature</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6479
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6480
        For the class indicated by <code>klass</code>, return the 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
  6481
        <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp16432">JNI 
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6482
            type signature</externallink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6483
        and the generic signature of the class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6484
        For example, <code>java.util.List</code> is <code>"Ljava/util/List;"</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6485
        and <code>int[]</code> is <code>"[I"</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6486
	The returned name for primitive classes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6487
	is the type signature character of the corresponding primitive type. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6488
        For example, <code>java.lang.Integer.TYPE</code> is <code>"I"</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6489
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6490
      <origin>jvmdiClone</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6491
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6492
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6493
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6494
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6495
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6496
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6497
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6498
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6499
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6500
	<param id="signature_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6501
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6502
            <char/>           
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6503
            <nullok>the signature is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6504
          </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6505
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6506
	    On return, points to the JNI type signature of the class, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6507
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6508
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6509
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6510
	<param id="generic_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6511
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6512
            <char/>           
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6513
            <nullok>the generic signature is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6514
          </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6515
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6516
	    On return, points to the generic signature of the class, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6517
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6518
            If there is no generic signature attribute for the class, then,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6519
            on return, points to <code>NULL</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6520
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6521
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6522
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6523
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6524
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6525
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6526
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6527
    <function id="GetClassStatus" phase="start" num="49">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6528
      <synopsis>Get Class Status</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6529
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6530
	Get the status of the class. Zero or more of the following bits can be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6531
	set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6532
	<constants id="jvmtiClassStatus" label="Class Status Flags" kind="bits">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6533
	  <constant id="JVMTI_CLASS_STATUS_VERIFIED" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6534
	    Class bytecodes have been verified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6535
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6536
	  <constant id="JVMTI_CLASS_STATUS_PREPARED" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6537
	    Class preparation is complete
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6538
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6539
	  <constant id="JVMTI_CLASS_STATUS_INITIALIZED" num="4">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6540
	    Class initialization is complete. Static initializer has been run.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6541
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6542
	  <constant id="JVMTI_CLASS_STATUS_ERROR" num="8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6543
	    Error during initialization makes class unusable
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6544
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6545
	  <constant id="JVMTI_CLASS_STATUS_ARRAY" num="16">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6546
	    Class is an array.  If set, all other bits are zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6547
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6548
	  <constant id="JVMTI_CLASS_STATUS_PRIMITIVE" num="32">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6549
	    Class is a primitive class (for example, <code>java.lang.Integer.TYPE</code>).  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6550
	    If set, all other bits are zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6551
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6552
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6553
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6554
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6555
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6556
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6557
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6558
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6559
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6560
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6561
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6562
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6563
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6564
	<param id="status_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6565
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6566
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6567
	    On return, points to the current state of this class as one or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6568
	    more of the <internallink id="jvmtiClassStatus">class status flags</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6569
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6570
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6571
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6572
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6573
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6574
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6575
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6576
    <function id="GetSourceFileName" phase="start" num="50">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6577
      <synopsis>Get Source File Name</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6578
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6579
	For the class indicated by <code>klass</code>, return the source file
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6580
	name via <code>source_name_ptr</code>. The returned string 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6581
	is a file name only and never contains a directory name. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6582
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6583
	For primitive classes (for example, <code>java.lang.Integer.TYPE</code>) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6584
	and for arrays this function returns 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6585
	<errorlink id="JVMTI_ERROR_ABSENT_INFORMATION"></errorlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6586
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6587
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6588
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6589
 	<required id="can_get_source_file_name"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6590
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6591
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6592
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6593
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6594
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6595
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6596
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6597
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6598
	<param id="source_name_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6599
	  <allocbuf><char/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6600
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6601
	    On return, points to the class's source file name, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6602
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6603
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6604
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6605
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6606
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6607
	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6608
	  Class information does not include a source file name. This includes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6609
	  cases where the class is an array class or primitive class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6610
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6611
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6612
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6613
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6614
    <function id="GetClassModifiers" phase="start" num="51">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6615
      <synopsis>Get Class Modifiers</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6616
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6617
	For the class indicated by <code>klass</code>, return the access
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6618
	flags
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6619
	via <code>modifiers_ptr</code>.
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  6620
	Access flags are defined in <vmspec chapter="4"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6621
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6622
	If the class is an array class, then its public, private, and protected 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6623
	modifiers are the same as those of its component type. For arrays of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6624
	primitives, this component type is represented by one of the primitive 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6625
	classes (for example, <code>java.lang.Integer.TYPE</code>). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6626
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6627
	If the class is a primitive class, its public modifier is always true, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6628
	and its protected and private modifiers are always false. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6629
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6630
	If the class is an array class or a primitive class then its final 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6631
	modifier is always true and its interface modifier is always false. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6632
	The values of its other modifiers are not determined by this specification. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6633
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6634
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6635
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6636
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6637
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6638
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6639
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6640
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6641
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6642
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6643
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6644
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6645
	<param id="modifiers_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6646
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6647
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6648
	    On return, points to the current access flags of this class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6649
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6650
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6651
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6652
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6653
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6654
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6655
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6656
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6657
    <function id="GetClassMethods" phase="start" num="52">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6658
      <synopsis>Get Class Methods</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6659
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6660
	For the class indicated by <code>klass</code>, return a count of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6661
	methods via <code>method_count_ptr</code> and a list of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6662
	method IDs via <code>methods_ptr</code>. The method list contains 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6663
	constructors and static initializers as well as true methods.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6664
	Only directly declared methods are returned (not inherited methods).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6665
	An empty method list is returned for array classes and primitive classes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6666
	(for example, <code>java.lang.Integer.TYPE</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6667
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6668
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6669
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6670
        <capability id="can_maintain_original_method_order"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6671
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6672
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6673
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6674
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6675
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6676
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6677
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6678
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6679
	<param id="method_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6680
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6681
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6682
	    On return, points to the number of methods declared in this class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6683
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6684
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6685
	<param id="methods_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6686
	  <allocbuf outcount="method_count_ptr"><jmethodID class="klass"/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6687
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6688
	      On return, points to the method ID array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6689
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6690
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6691
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6692
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6693
	<error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6694
	  <paramlink id="klass"></paramlink> is not prepared.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6695
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6696
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6697
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6698
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6699
    <function id="GetClassFields" phase="start" num="53">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6700
      <synopsis>Get Class Fields</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6701
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6702
	For the class indicated by <code>klass</code>, return a count of fields
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6703
	via <code>field_count_ptr</code> and a list of field IDs via
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6704
	<code>fields_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6705
	Only directly declared fields are returned (not inherited fields).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6706
	Fields are returned in the order they occur in the class file.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6707
	An empty field list is returned for array classes and primitive classes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6708
	(for example, <code>java.lang.Integer.TYPE</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6709
	Use JNI to determine the length of an array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6710
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6711
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6712
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6713
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6714
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6715
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6716
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6717
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6718
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6719
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6720
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6721
	<param id="field_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6722
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6723
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6724
	    On return, points to the number of fields declared in this class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6725
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6726
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6727
	<param id="fields_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6728
	  <allocbuf outcount="field_count_ptr"><jfieldID/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6729
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6730
	      On return, points to the field ID array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6731
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6732
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6733
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6734
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6735
	<error id="JVMTI_ERROR_CLASS_NOT_PREPARED"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6736
	  <paramlink id="klass"></paramlink> is not prepared.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6737
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6738
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6739
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6740
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6741
    <function id="GetImplementedInterfaces" phase="start" num="54">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6742
      <synopsis>Get Implemented Interfaces</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6743
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6744
	Return the direct super-interfaces of this class. For a class, this 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6745
	function returns the interfaces declared in its <code>implements</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6746
	clause. For an interface, this function returns the interfaces declared in
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6747
	its <code>extends</code> clause.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6748
	An empty interface list is returned for array classes and primitive classes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6749
	(for example, <code>java.lang.Integer.TYPE</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6750
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6751
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6752
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6753
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6754
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6755
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6756
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6757
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6758
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6759
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6760
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6761
	<param id="interface_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6762
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6763
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6764
	    On return, points to the number of interfaces.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6765
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6766
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6767
	<param id="interfaces_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6768
	  <allocbuf outcount="interface_count_ptr"><jclass/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6769
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6770
	      On return, points to the interface array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6771
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6772
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6773
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6774
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6775
	<error id="JVMTI_ERROR_CLASS_NOT_PREPARED"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6776
	  <paramlink id="klass"></paramlink> is not prepared.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6777
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6778
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6779
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6780
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6781
    <function id="GetClassVersionNumbers" phase="start" num="145" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6782
      <synopsis>Get Class Version Numbers</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6783
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6784
        For the class indicated by <code>klass</code>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6785
        return the minor and major version numbers,
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  6786
        as defined in
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  6787
        <vmspec chapter="4"/>. 
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6788
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6789
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6790
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6791
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6792
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6793
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6794
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6795
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6796
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6797
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6798
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6799
	<param id="minor_version_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6800
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6801
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6802
	    On return, points to the value of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6803
            <code>minor_version</code> item of the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6804
            Class File Format.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6805
            Note: to be consistent with the Class File Format,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6806
            the minor version number is the first parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6807
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6808
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6809
	<param id="major_version_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6810
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6811
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6812
	    On return, points to the value of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6813
            <code>major_version</code> item of the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6814
            Class File Format.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6815
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6816
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6817
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6818
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6819
	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6820
	  The class is a primitive or array class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6821
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6822
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6823
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6824
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6825
    <function id="GetConstantPool" phase="start" num="146" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6826
      <synopsis>Get Constant Pool</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6827
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6828
	For the class indicated by <code>klass</code>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6829
        return the raw bytes of the constant pool in the format of the
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  6830
        <code>constant_pool</code> item of 
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  6831
        <vmspec chapter="4"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6832
        The format of the constant pool may differ between versions
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6833
        of the Class File Format, so, the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6834
        <functionlink id="GetClassVersionNumbers">minor and major 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6835
        class version numbers</functionlink> should be checked for
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6836
        compatibility.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6837
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6838
        The returned constant pool might not have the same layout or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6839
        contents as the constant pool in the defining class file.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6840
        The constant pool returned by GetConstantPool() may have
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6841
        more or fewer entries than the defining constant pool.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6842
        Entries may be in a different order.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6843
        The constant pool returned by GetConstantPool() will match the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6844
        constant pool used by 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6845
        <functionlink id="GetBytecodes">GetBytecodes()</functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6846
        That is, the bytecodes returned by GetBytecodes() will have
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6847
        constant pool indices which refer to constant pool entries returned
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6848
        by GetConstantPool().
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6849
        Note that since <functionlink id="RetransformClasses"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6850
        and <functionlink id="RedefineClasses"/> can change 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6851
        the constant pool, the constant pool returned by this function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6852
        can change accordingly.  Thus, the correspondence between 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6853
        GetConstantPool() and GetBytecodes() does not hold if there
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6854
        is an intervening class retransformation or redefinition. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6855
        The value of a constant pool entry used by a given bytecode will
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6856
        match that of the defining class file (even if the indices don't match).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6857
        Constant pool entries which are not used directly or indirectly by
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6858
        bytecodes (for example,  UTF-8 strings associated with annotations) are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6859
        not  required to exist in the returned constant pool.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6860
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6861
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6862
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6863
	<required id="can_get_constant_pool"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6864
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6865
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6866
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6867
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6868
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6869
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6870
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6871
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6872
	<param id="constant_pool_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6873
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6874
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6875
	    On return, points to the number of entries
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6876
            in the constant pool table plus one.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6877
            This corresponds to the <code>constant_pool_count</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6878
            item of the Class File Format.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6879
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6880
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6881
	<param id="constant_pool_byte_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6882
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6883
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6884
	    On return, points to the number of bytes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6885
            in the returned raw constant pool.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6886
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6887
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6888
	<param id="constant_pool_bytes_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6889
	  <allocbuf outcount="constant_pool_byte_count_ptr"><uchar/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6890
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6891
	      On return, points to the raw constant pool, that is the bytes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6892
              defined by the <code>constant_pool</code> item of the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6893
              Class File Format
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6894
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6895
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6896
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6897
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6898
	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6899
	  The class is a primitive or array class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6900
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6901
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6902
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6903
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6904
    <function id="IsInterface" phase="start" num="55">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6905
      <synopsis>Is Interface</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6906
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6907
	Determines whether a class object reference represents an interface.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6908
	The <code>jboolean</code> result is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6909
	<code>JNI_TRUE</code> if the "class" is actually an interface,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6910
	<code>JNI_FALSE</code> otherwise. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6911
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6912
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6913
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6914
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6915
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6916
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6917
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6918
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6919
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6920
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6921
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6922
	<param id="is_interface_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6923
	  <outptr><jboolean/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6924
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6925
	    On return, points to the boolean result of this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6926
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6927
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6928
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6929
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6930
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6931
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6932
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6933
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6934
    <function id="IsArrayClass" phase="start" num="56">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6935
      <synopsis>Is Array Class</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6936
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6937
	Determines whether a class object reference represents an array.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6938
	The <code>jboolean</code> result is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6939
	<code>JNI_TRUE</code> if the class is an array,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6940
	<code>JNI_FALSE</code> otherwise. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6941
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6942
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6943
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6944
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6945
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6946
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6947
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6948
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6949
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6950
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6951
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6952
	<param id="is_array_class_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6953
	  <outptr><jboolean/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6954
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6955
	    On return, points to the boolean result of this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6956
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6957
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6958
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6959
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6960
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6961
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6962
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6963
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6964
    <function id="IsModifiableClass" jkernel="yes" phase="start" num="45" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6965
      <synopsis>Is Modifiable Class</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6966
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6967
	Determines whether a class is modifiable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6968
        If a class is modifiable (<paramlink id="is_modifiable_class_ptr"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6969
        returns <code>JNI_TRUE</code>) the class can be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6970
        redefined with <functionlink id="RedefineClasses"/> (assuming 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6971
        the agent possesses the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6972
        <fieldlink id="can_redefine_classes" struct="jvmtiCapabilities"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6973
        capability) or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6974
        retransformed with <functionlink id="RetransformClasses"/> (assuming 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6975
        the agent possesses the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6976
        <fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6977
        capability).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6978
        If a class is not modifiable (<paramlink id="is_modifiable_class_ptr"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6979
        returns <code>JNI_FALSE</code>) the class can be neither
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6980
        redefined nor retransformed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6981
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6982
        Primitive classes (for example, <code>java.lang.Integer.TYPE</code>) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6983
        and array classes are never modifiable. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6984
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6985
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6986
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6987
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6988
        <capability id="can_redefine_any_class">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6989
          If possessed then all classes (except primitive and array classes) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6990
          are modifiable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6991
        </capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6992
        <capability id="can_redefine_classes">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6993
          No effect on the result of the function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6994
          But must additionally be possessed to modify the class with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6995
          <functionlink id="RedefineClasses"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6996
        </capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6997
        <capability id="can_retransform_classes">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6998
          No effect on the result of the function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  6999
          But must additionally be possessed to modify the class with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7000
          <functionlink id="RetransformClasses"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7001
        </capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7002
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7003
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7004
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7005
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7006
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7007
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7008
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7009
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7010
	<param id="is_modifiable_class_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7011
	  <outptr><jboolean/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7012
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7013
	    On return, points to the boolean result of this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7014
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7015
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7016
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7017
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7018
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7019
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7020
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7021
    <function id="GetClassLoader" phase="start" num="57">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7022
      <synopsis>Get Class Loader</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7023
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7024
	For the class indicated by <code>klass</code>, return via
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7025
	<code>classloader_ptr</code> a reference to the class loader for the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7026
	class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7027
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7028
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7029
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7030
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7031
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7032
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7033
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7034
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7035
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7036
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7037
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7038
	<param id="classloader_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7039
	  <outptr><jobject/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7040
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7041
	      On return, points to the class loader that loaded
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7042
	      this class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7043
              If the class was not created by a class loader
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7044
              or if the class loader is the bootstrap class loader,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7045
              points to <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7046
 	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7047
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7048
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7049
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7050
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7051
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7052
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7053
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7054
    <function id="GetSourceDebugExtension" phase="start" num="90">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7055
      <synopsis>Get Source Debug Extension</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7056
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7057
	For the class indicated by <code>klass</code>, return the debug 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7058
        extension via <code>source_debug_extension_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7059
        The returned string 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7060
	contains exactly the debug extension information present in the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7061
	class file of <code>klass</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7062
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7063
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7064
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7065
	<required id="can_get_source_debug_extension"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7066
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7067
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7068
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7069
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7070
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7071
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7072
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7073
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7074
	<param id="source_debug_extension_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7075
	  <allocbuf><char/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7076
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7077
	    On return, points to the class's debug extension, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7078
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7079
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7080
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7081
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7082
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7083
	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7084
	  Class information does not include a debug extension.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7085
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7086
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7087
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7088
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7089
    <function id="RetransformClasses" jkernel="yes" num="152" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7090
      <synopsis>Retransform Classes</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7091
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7092
        This function facilitates the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7093
        <internallink id="bci">bytecode instrumentation</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7094
        of already loaded classes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7095
        To replace the class definition without reference to the existing
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7096
        bytecodes, as one might do when recompiling from source for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7097
        fix-and-continue debugging, <functionlink id="RedefineClasses"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7098
        function should be used instead.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7099
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7100
        When classes are initially loaded or when they are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7101
        <functionlink id="RedefineClasses">redefined</functionlink>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7102
        the initial class file bytes can be transformed with the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7103
        <eventlink id="ClassFileLoadHook"/> event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7104
        This function reruns the transformation process
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7105
        (whether or not a transformation has previously occurred).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7106
        This retransformation follows these steps:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7107
        <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7108
          <li>starting from the initial class file bytes 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7109
          </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7110
          <li>for each <fieldlink id="can_retransform_classes"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7111
                     struct="jvmtiCapabilities">retransformation
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7112
                                                incapable</fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7113
            agent which received a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7114
            <code>ClassFileLoadHook</code> event during the previous
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7115
            load or redefine, the bytes it returned 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7116
            (via the <code>new_class_data</code> parameter)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7117
            are reused as the output of the transformation; 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7118
            note that this is equivalent to reapplying
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7119
            the previous transformation, unaltered. except that
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7120
            the <code>ClassFileLoadHook</code> event
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7121
            is <b>not</b> sent to these agents
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7122
          </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7123
          <li>for each <fieldlink id="can_retransform_classes"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7124
                     struct="jvmtiCapabilities">retransformation
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7125
                                                capable</fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7126
            agent, the <code>ClassFileLoadHook</code> event is sent,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7127
            allowing a new transformation to be applied
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7128
          </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7129
          <li>the transformed class file bytes are installed as the new
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7130
            definition of the class
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7131
          </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7132
        </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7133
        See the <eventlink id="ClassFileLoadHook"/> event for more details.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7134
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7135
        The initial class file bytes represent the bytes passed to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7136
        <code>ClassLoader.defineClass</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7137
        or <code>RedefineClasses</code> (before any transformations
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7138
        were applied), however they may not exactly match them.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7139
        The constant pool may differ in ways described in
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7140
        <functionlink id="GetConstantPool"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7141
        Constant pool indices in the bytecodes of methods will correspond.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7142
        Some attributes may not be present.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7143
        Where order is not meaningful, for example the order of methods,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7144
        order may not be preserved.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7145
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7146
        Retransformation can cause new versions of methods to be installed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7147
        Old method versions may become 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7148
        <internallink id="obsoleteMethods">obsolete</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7149
        The new method version will be used on new invokes.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7150
        If a method has active stack frames, those active frames continue to
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7151
        run the bytecodes of the original method version. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7152
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7153
        This function does not cause any initialization except that which 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7154
        would occur under the customary JVM semantics.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7155
        In other words, retransforming a class does not cause its initializers to be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7156
        run. The values of static fields will remain as they were
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7157
        prior to the call.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7158
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7159
        Threads need not be suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7160
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7161
        All breakpoints in the class are cleared.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7162
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7163
        All attributes are updated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7164
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7165
        Instances of the retransformed class are not affected -- fields retain their
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7166
        previous values.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7167
        <functionlink id="GetTag">Tags</functionlink> on the instances are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7168
        also unaffected.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7169
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7170
        In response to this call, no events other than the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7171
        <eventlink id="ClassFileLoadHook"/> event
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7172
        will be sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7173
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7174
        The retransformation may change method bodies, the constant pool and attributes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7175
        The retransformation must not add, remove or rename fields or methods, change the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7176
        signatures of methods, change modifiers, or change inheritance.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7177
        These restrictions may be lifted in future versions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7178
        See the error return description below for information on error codes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7179
        returned if an unsupported retransformation is attempted.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7180
        The class file bytes are not verified or installed until they have passed
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7181
        through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7182
        returned error code reflects the result of the transformations.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7183
        If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7184
        none of the classes to be retransformed will have a new definition installed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7185
        When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7186
        all of the classes to be retransformed will have their new definitions installed.        
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7187
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7188
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7189
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7190
        <required id="can_retransform_classes"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7191
        <capability id="can_retransform_any_class"></capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7192
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7193
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7194
        <param id="class_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7195
          <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7196
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7197
            The number of classes to be retransformed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7198
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7199
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7200
        <param id="classes">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7201
          <inbuf incount="class_count"><jclass/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7202
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7203
            The array of classes to be retransformed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7204
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7205
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7206
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7207
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7208
        <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7209
          One of the <paramlink id="classes"/> cannot be modified. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7210
          See <functionlink id="IsModifiableClass"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7211
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7212
        <error id="JVMTI_ERROR_INVALID_CLASS">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7213
          One of the <paramlink id="classes"/> is not a valid class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7214
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7215
        <error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7216
          A retransformed class file has a version number not supported by this VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7217
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7218
        <error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7219
          A retransformed class file is malformed (The VM would return a <code>ClassFormatError</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7220
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7221
        <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7222
          The retransformed class file definitions would lead to a circular definition 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7223
          (the VM would return a <code>ClassCircularityError</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7224
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7225
        <error id="JVMTI_ERROR_FAILS_VERIFICATION">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7226
          The retransformed class file bytes fail verification.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7227
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7228
        <error id="JVMTI_ERROR_NAMES_DONT_MATCH">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7229
          The class name defined in a retransformed class file is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7230
          different from the name in the old class object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7231
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7232
        <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7233
          A retransformed class file would require adding a method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7234
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7235
        <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7236
          A retransformed class file changes a field.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7237
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7238
        <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7239
          A direct superclass is different for a retransformed class file,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7240
          or the set of directly implemented
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7241
          interfaces is different.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7242
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7243
        <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7244
          A retransformed class file does not declare a method
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7245
          declared in the old class version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7246
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7247
        <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7248
          A retransformed class file has different class modifiers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7249
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7250
        <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7251
          A method in the retransformed class file has different modifiers
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7252
          than its counterpart in the old class version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7253
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7254
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7255
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7256
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7257
    <function id="RedefineClasses" jkernel="yes" num="87">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7258
      <synopsis>Redefine Classes</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7259
      <typedef id="jvmtiClassDefinition" label="Class redefinition description">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7260
	<field id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7261
	  <jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7262
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7263
	      Class object for this class
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7264
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7265
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7266
	<field id="class_byte_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7267
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7268
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7269
	    Number of bytes defining class (below)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7270
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7271
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7272
	<field id="class_bytes">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7273
	  <inbuf incount="class_byte_count"><uchar/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7274
	  <description>
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  7275
            Bytes defining class (in <vmspec chapter="4"/>)
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7276
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7277
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7278
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7279
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7280
	All classes given are redefined according to the definitions
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7281
	supplied.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7282
	This function is used to replace the definition of a class
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7283
	with a new definition, as might be needed in fix-and-continue
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7284
	debugging.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7285
	Where the existing class file bytes are to be transformed, for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7286
	example in
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7287
	<internallink id="bci">bytecode instrumentation</internallink>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7288
	<functionlink id="RetransformClasses"/> should be used.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7289
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7290
	Redefinition can cause new versions of methods to be installed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7291
	Old method versions may become 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7292
	<internallink id="obsoleteMethods">obsolete</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7293
	The new method version will be used on new invokes.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7294
	If a method has active stack frames, those active frames continue to
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7295
        run the bytecodes of the original method version. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7296
	If resetting of stack frames is desired, use 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7297
	<functionlink id="PopFrame"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7298
	to pop frames with obsolete method versions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7299
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7300
	This function does not cause any initialization except that which 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7301
	would occur under the customary JVM semantics.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7302
	In other words, redefining a class does not cause its initializers to be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7303
	run. The values of static fields will remain as they were
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7304
	prior to the call.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7305
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7306
	Threads need not be suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7307
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7308
	All breakpoints in the class are cleared.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7309
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7310
	All attributes are updated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7311
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7312
        Instances of the redefined class are not affected -- fields retain their
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7313
        previous values.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7314
	<functionlink id="GetTag">Tags</functionlink> on the instances are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7315
        also unaffected.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7316
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7317
	In response to this call, the <jvmti/> event
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7318
        <eventlink id="ClassFileLoadHook">Class File Load Hook</eventlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7319
        will be sent (if enabled), but no other <jvmti/> events will be sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7320
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7321
        The redefinition may change method bodies, the constant pool and attributes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7322
        The redefinition must not add, remove or rename fields or methods, change the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7323
        signatures of methods, change modifiers, or change inheritance.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7324
        These restrictions may be lifted in future versions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7325
	See the error return description below for information on error codes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7326
	returned if an unsupported redefinition is attempted.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7327
        The class file bytes are not verified or installed until they have passed
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7328
        through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7329
        returned error code reflects the result of the transformations applied
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7330
        to the bytes passed into <paramlink id="class_definitions"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7331
        If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7332
        none of the classes to be redefined will have a new definition installed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7333
        When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7334
        all of the classes to be redefined will have their new definitions installed.        
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7335
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7336
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7337
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7338
	<required id="can_redefine_classes"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7339
        <capability id="can_redefine_any_class"></capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7340
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7341
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7342
	<param id="class_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7343
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7344
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7345
	    The number of classes specified in <code>class_definitions</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7346
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7347
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7348
	<param id="class_definitions">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7349
	  <inbuf incount="class_count"><struct>jvmtiClassDefinition</struct></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7350
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7351
	    The array of new class definitions
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7352
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7353
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7354
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7355
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7356
	<error id="JVMTI_ERROR_NULL_POINTER">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7357
	  One of <code>class_bytes</code> is <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7358
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7359
	<error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7360
	  An element of <code>class_definitions</code> cannot be modified.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7361
          See <functionlink id="IsModifiableClass"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7362
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7363
	<error id="JVMTI_ERROR_INVALID_CLASS">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7364
	  An element of <code>class_definitions</code> is not a valid class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7365
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7366
	<error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7367
	  A new class file has a version number not supported by this VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7368
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7369
	<error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7370
	  A new class file is malformed (The VM would return a <code>ClassFormatError</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7371
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7372
	<error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7373
	  The new class file definitions would lead to a circular definition 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7374
	  (the VM would return a <code>ClassCircularityError</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7375
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7376
	<error id="JVMTI_ERROR_FAILS_VERIFICATION">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7377
	  The class bytes fail verification.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7378
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7379
	<error id="JVMTI_ERROR_NAMES_DONT_MATCH">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7380
	  The class name defined in a new class file is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7381
	  different from the name in the old class object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7382
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7383
	<error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7384
	  A new class file would require adding a method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7385
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7386
	<error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7387
	  A new class version changes a field.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7388
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7389
	<error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7390
	  A direct superclass is different for a new class
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7391
	  version, or the set of directly implemented
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7392
	  interfaces is different.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7393
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7394
	<error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7395
	  A new class version does not declare a method
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7396
	  declared in the old class version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7397
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7398
	<error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7399
	  A new class version has different modifiers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7400
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7401
	<error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7402
	  A method in the new class version has different modifiers
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7403
	  than its counterpart in the old class version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7404
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7405
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7406
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7407
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7408
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7409
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7410
  <category id="object" label="Object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7411
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7412
    <function id="GetObjectSize" jkernel="yes" phase="start" num="154">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7413
      <synopsis>Get Object Size</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7414
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7415
	For the object indicated by <code>object</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7416
	return via <code>size_ptr</code> the size of the object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7417
        This size is an implementation-specific approximation of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7418
        the amount of storage consumed by this object. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7419
        It may include some or all of the object's overhead, and thus
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7420
        is useful for comparison within an implementation but not
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7421
        between implementations.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7422
        The estimate may change during a single invocation of the JVM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7423
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7424
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7425
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7426
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7427
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7428
	<param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7429
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7430
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7431
	      The object to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7432
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7433
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7434
	<param id="size_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7435
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7436
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7437
	    On return, points to the object's size in bytes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7438
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7439
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7440
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7441
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7442
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7443
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7444
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7445
    <function id="GetObjectHashCode" phase="start" num="58">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7446
      <synopsis>Get Object Hash Code</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7447
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7448
	For the object indicated by <code>object</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7449
	return via <code>hash_code_ptr</code> a hash code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7450
        This hash code could be used to maintain a hash table of object references,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7451
        however, on some implementations this can cause significant performance 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7452
        impacts--in most cases 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7453
        <internallink id="Heap">tags</internallink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7454
        will be a more efficient means of associating information with objects.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7455
	This function guarantees 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7456
	the same hash code value for a particular object throughout its life
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7457
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7458
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7459
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7460
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7461
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7462
	<param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7463
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7464
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7465
	      The object to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7466
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7467
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7468
	<param id="hash_code_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7469
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7470
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7471
	    On return, points to the object's hash code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7472
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7473
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7474
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7475
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7476
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7477
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7478
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7479
    <function id="GetObjectMonitorUsage" num="59">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7480
      <synopsis>Get Object Monitor Usage</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7481
      <typedef id="jvmtiMonitorUsage" label="Object monitor usage information">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7482
	<field id="owner">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7483
	  <jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7484
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7485
	      The thread owning this monitor, or <code>NULL</code> if unused
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7486
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7487
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7488
	<field id="entry_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7489
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7490
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7491
	    The number of times the owning thread has entered the monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7492
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7493
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7494
	<field id="waiter_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7495
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7496
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7497
	    The number of threads waiting to own this monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7498
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7499
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7500
	<field id="waiters">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7501
	  <allocfieldbuf><jthread/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7502
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7503
	      The <code>waiter_count</code> waiting threads
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7504
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7505
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7506
	<field id="notify_waiter_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7507
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7508
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7509
	    The number of threads waiting to be notified by this monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7510
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7511
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7512
	<field id="notify_waiters">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7513
	  <allocfieldbuf><jthread/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7514
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7515
	      The <code>notify_waiter_count</code> threads waiting to be notified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7516
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7517
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7518
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7519
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7520
	Get information about the object's monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7521
	The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7522
	are filled in with information about usage of the monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7523
	  <todo>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7524
	    Decide and then clarify suspend requirements.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7525
	  </todo>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7526
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7527
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7528
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7529
	<required id="can_get_monitor_info"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7530
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7531
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7532
	<param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7533
	  <jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7534
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7535
	      The object to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7536
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7537
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7538
	<param id="info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7539
	  <outptr><struct>jvmtiMonitorUsage</struct></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7540
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7541
	    On return, filled with monitor information for the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7542
	    specified object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7543
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7544
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7545
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7546
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7547
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7548
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7549
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7550
    <elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7551
    <function id="GetObjectMonitors" num="116">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7552
      <synopsis>Get Object Monitors</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7553
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7554
        Return the list of object monitors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7555
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7556
        Note: details about each monitor can be examined with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7557
        <functionlink id="GetObjectMonitorUsage"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7558
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7559
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7560
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7561
        <required id="can_get_monitor_info"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7562
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7563
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7564
        <param id="monitorCnt">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7565
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7566
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7567
	    On return, pointer to the number 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7568
	    of monitors returned in <code>monitors_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7569
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7570
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7571
        <param id="monitors_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7572
	  <allocbuf outcount="monitorCnt"><jobject/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7573
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7574
	      On return, pointer to the monitor list.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7575
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7576
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7577
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7578
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7579
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7580
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7581
    </elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7582
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7583
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7584
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7585
  <category id="fieldCategory" label="Field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7586
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7587
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7588
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7589
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7590
    <function id="GetFieldName" phase="start" num="60">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7591
      <synopsis>Get Field Name (and Signature)</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7592
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7593
	For the field indicated by <paramlink id="klass"/> and <paramlink id="field"/>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7594
	return the field name via <paramlink id="name_ptr"/> and field signature via
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7595
	<paramlink id="signature_ptr"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7596
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7597
        Field signatures are defined in the JNI Specification and 
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  7598
        are referred to as <code>field descriptors</code> in
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  7599
        <vmspec chapter="4.3.2"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7600
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7601
      <origin>jvmdiClone</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7602
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7603
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7604
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7605
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7606
	  <jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7607
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7608
	      The class of the field to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7609
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7610
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7611
	<param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7612
	  <jfieldID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7613
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7614
	      The field to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7615
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7616
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7617
	<param id="name_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7618
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7619
	    <char/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7620
	    <nullok>the name is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7621
	  </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7622
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7623
	    On return, points to the field name, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7624
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7625
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7626
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7627
	<param id="signature_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7628
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7629
	    <char/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7630
	    <nullok>the signature is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7631
	  </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7632
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7633
	    On return, points to the field signature, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7634
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7635
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7636
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7637
	<param id="generic_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7638
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7639
            <char/>           
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7640
            <nullok>the generic signature is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7641
          </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7642
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7643
	    On return, points to the generic signature of the field, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7644
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7645
            If there is no generic signature attribute for the field, then,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7646
            on return, points to <code>NULL</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7647
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7648
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7649
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7650
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7651
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7652
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7653
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7654
    <function id="GetFieldDeclaringClass" phase="start" num="61">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7655
      <synopsis>Get Field Declaring Class</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7656
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7657
	For the field indicated by <code>klass</code> and <code>field</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7658
	return the class that defined it via <code>declaring_class_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7659
	The declaring class will either be <code>klass</code>, a superclass, or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7660
	an implemented interface.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7661
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7662
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7663
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7664
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7665
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7666
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7667
	  <jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7668
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7669
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7670
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7671
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7672
	<param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7673
	  <jfieldID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7674
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7675
	      The field to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7676
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7677
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7678
	<param id="declaring_class_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7679
	  <outptr><jclass/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7680
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7681
	      On return, points to the declaring class
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7682
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7683
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7684
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7685
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7686
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7687
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7688
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7689
    <function id="GetFieldModifiers" phase="start" num="62">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7690
      <synopsis>Get Field Modifiers</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7691
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7692
	For the field indicated by <code>klass</code> and <code>field</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7693
	return the access flags via <code>modifiers_ptr</code>.
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  7694
	Access flags are defined in <vmspec chapter="4"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7695
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7696
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7697
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7698
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7699
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7700
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7701
	  <jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7702
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7703
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7704
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7705
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7706
	<param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7707
	  <jfieldID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7708
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7709
	      The field to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7710
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7711
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7712
	<param id="modifiers_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7713
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7714
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7715
	    On return, points to the access flags.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7716
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7717
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7718
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7719
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7720
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7721
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7722
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7723
    <function id="IsFieldSynthetic" phase="start" num="63">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7724
      <synopsis>Is Field Synthetic</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7725
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7726
	For the field indicated by <code>klass</code> and <code>field</code>, return a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7727
	value indicating whether the field is synthetic via <code>is_synthetic_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7728
	Synthetic fields are generated by the compiler but not present in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7729
	original source code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7730
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7731
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7732
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7733
        <required id="can_get_synthetic_attribute"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7734
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7735
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7736
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7737
	  <jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7738
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7739
	      The class of the field to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7740
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7741
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7742
	<param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7743
	  <jfieldID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7744
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7745
	      The field to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7746
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7747
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7748
	<param id="is_synthetic_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7749
	  <outptr><jboolean/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7750
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7751
	    On return, points to the boolean result of this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7752
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7753
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7754
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7755
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7756
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7757
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7758
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7759
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7760
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7761
  <category id="method" label="Method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7762
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7763
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7764
      These functions provide information about a method (represented as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7765
      <typelink id="jmethodID"/>) and set how methods are processed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7766
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7767
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7768
    <intro id="obsoleteMethods" label="Obsolete Methods">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7769
      The functions <functionlink id="RetransformClasses"/> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7770
      <functionlink id="RedefineClasses"/> can cause new versions
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7771
      of methods to be installed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7772
      An original version of a method is considered equivalent
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7773
      to the new version if:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7774
      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7775
        <li>their bytecodes are the same except for indices into the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7776
          constant pool and </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7777
        <li>the referenced constants are equal.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7778
      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7779
      An original method version which is not equivalent to the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7780
      new method version is called obsolete and is assigned a new method ID;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7781
      the original method ID now refers to the new method version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7782
      A method ID can be tested for obsolescence with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7783
      <functionlink id="IsMethodObsolete"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7784
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7785
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7786
    <function id="GetMethodName" phase="start" num="64">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7787
      <synopsis>Get Method Name (and Signature)</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7788
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7789
	For the method indicated by <code>method</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7790
	return the method name via <code>name_ptr</code> and method signature via
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7791
	<code>signature_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7792
        <p/>
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  7793
        Method signatures are defined in the JNI Specification and are 
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  7794
        referred to as <code>method descriptors</code> in 
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  7795
        <vmspec chapter="4.3.3"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7796
	Note this is different
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7797
	than method signatures as defined in the <i>Java Language Specification</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7798
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7799
      <origin>jvmdiClone</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7800
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7801
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7802
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7803
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7804
	  <jmethodID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7805
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7806
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7807
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7808
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7809
	<param id="name_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7810
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7811
	    <char/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7812
	    <nullok>the name is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7813
	  </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7814
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7815
	    On return, points to the method name, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7816
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7817
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7818
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7819
	<param id="signature_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7820
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7821
	    <char/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7822
	    <nullok>the signature is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7823
	  </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7824
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7825
	    On return, points to the method signature, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7826
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7827
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7828
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7829
	<param id="generic_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7830
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7831
            <char/>           
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7832
            <nullok>the generic signature is not returned</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7833
          </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7834
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7835
	    On return, points to the generic signature of the method, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7836
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7837
            If there is no generic signature attribute for the method, then,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7838
            on return, points to <code>NULL</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7839
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7840
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7841
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7842
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7843
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7844
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7845
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7846
    <function id="GetMethodDeclaringClass" phase="start" num="65">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7847
      <synopsis>Get Method Declaring Class</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7848
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7849
	For the method indicated by <code>method</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7850
	return the class that defined it via <code>declaring_class_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7851
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7852
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7853
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7854
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7855
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7856
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7857
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7858
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7859
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7860
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7861
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7862
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7863
	  <jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7864
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7865
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7866
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7867
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7868
	<param id="declaring_class_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7869
	  <outptr><jclass/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7870
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7871
	      On return, points to the declaring class
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7872
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7873
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7874
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7875
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7876
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7877
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7878
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7879
    <function id="GetMethodModifiers" phase="start" num="66">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7880
      <synopsis>Get Method Modifiers</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7881
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7882
	For the method indicated by <code>method</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7883
	return the access flags via <code>modifiers_ptr</code>.
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  7884
	Access flags are defined in <vmspec chapter="4"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7885
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7886
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7887
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7888
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7889
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7890
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7891
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7892
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7893
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7894
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7895
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7896
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7897
	  <jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7898
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7899
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7900
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7901
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7902
	<param id="modifiers_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7903
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7904
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7905
	    On return, points to the access flags.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7906
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7907
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7908
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7909
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7910
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7911
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7912
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7913
    <function id="GetMaxLocals" phase="start" num="68">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7914
      <synopsis>Get Max Locals</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7915
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7916
	  For the method indicated by <code>method</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7917
	  return the number of local variable slots used by the method,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7918
	  including the local variables used to pass parameters to the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7919
	  method on its invocation. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7920
	  <p/>
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  7921
	  See <code>max_locals</code> in <vmspec chapter="4.7.3"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7922
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7923
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7924
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7925
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7926
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7927
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7928
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7929
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7930
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7931
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7932
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7933
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7934
	  <jmethodID class="klass" native="error"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7935
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7936
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7937
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7938
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7939
	<param id="max_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7940
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7941
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7942
	    On return, points to the maximum number of local slots
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7943
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7944
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7945
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7946
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7947
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7948
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7949
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7950
    <function id="GetArgumentsSize" phase="start" num="69">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7951
      <synopsis>Get Arguments Size</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7952
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7953
	For the method indicated by <code>method</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7954
	return via <code>max_ptr</code> the number of local variable slots used
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7955
	by the method's arguments.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7956
	Note that two-word arguments use two slots.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7957
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7958
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7959
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7960
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7961
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7962
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7963
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7964
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7965
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7966
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7967
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7968
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7969
	  <jmethodID class="klass" native="error"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7970
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7971
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7972
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7973
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7974
	<param id="size_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7975
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7976
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7977
	    On return, points to the number of argument slots
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7978
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7979
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7980
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7981
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7982
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7983
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7984
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7985
    <function id="GetLineNumberTable" phase="start" num="70">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7986
      <synopsis>Get Line Number Table</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7987
      <typedef id="jvmtiLineNumberEntry" label="Line number table entry">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7988
	<field id="start_location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7989
	  <jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7990
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7991
	    the <datalink id="jlocation"></datalink> where the line begins
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7992
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7993
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7994
	<field id="line_number">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7995
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7996
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7997
	    the line number
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7998
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  7999
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8000
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8001
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8002
	For the method indicated by <code>method</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8003
	return a table of source line number entries. The size of the table is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8004
	returned via <code>entry_count_ptr</code> and the table itself is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8005
	returned via <code>table_ptr</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8006
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8007
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8008
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8009
	<required id="can_get_line_numbers"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8010
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8011
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8012
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8013
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8014
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8015
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8016
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8017
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8018
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8019
	  <jmethodID class="klass" native="error"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8020
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8021
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8022
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8023
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8024
	<param id="entry_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8025
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8026
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8027
	    On return, points to the number of entries in the table
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8028
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8029
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8030
	<param id="table_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8031
	  <allocbuf outcount="entry_count_ptr"><struct>jvmtiLineNumberEntry</struct></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8032
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8033
	    On return, points to the line number table pointer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8034
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8035
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8036
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8037
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8038
	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8039
	  Class information does not include line numbers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8040
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8041
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8042
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8043
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8044
    <function id="GetMethodLocation" phase="start" num="71">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8045
      <synopsis>Get Method Location</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8046
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8047
	For the method indicated by <code>method</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8048
	return the beginning and ending addresses through
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8049
	<code>start_location_ptr</code> and <code>end_location_ptr</code>. In a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8050
	conventional byte code indexing scheme, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8051
	<code>start_location_ptr</code> will always point to zero
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8052
	and <code>end_location_ptr</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8053
	will always point to the byte code count minus one. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8054
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8055
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8056
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8057
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8058
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8059
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8060
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8061
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8062
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8063
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8064
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8065
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8066
	  <jmethodID class="klass" native="error"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8067
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8068
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8069
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8070
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8071
	<param id="start_location_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8072
	  <outptr><jlocation/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8073
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8074
	    On return, points to the first location, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8075
	    <code>-1</code> if location information is not available.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8076
	    If the information is available and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8077
	    <functionlink id="GetJLocationFormat"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8078
	    returns <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8079
	    then this will always be zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8080
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8081
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8082
	<param id="end_location_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8083
	  <outptr><jlocation/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8084
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8085
	    On return, points to the last location,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8086
	    or <code>-1</code> if location information is not available.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8087
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8088
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8089
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8090
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8091
	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8092
	  Class information does not include method sizes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8093
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8094
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8095
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8096
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8097
    <function id="GetLocalVariableTable" num="72">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8098
      <synopsis>Get Local Variable Table</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8099
      <typedef id="jvmtiLocalVariableEntry" label="Local variable table entry">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8100
	<field id="start_location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8101
	  <jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8102
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8103
	    The code array index where the local variable is first valid
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8104
            (that is, where it must have a value).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8105
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8106
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8107
	<field id="length">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8108
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8109
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8110
            The length of the valid section for this local variable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8111
	    The last code array index where the local variable is valid 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8112
            is <code>start_location + length</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8113
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8114
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8115
	<field id="name">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8116
	  <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8117
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8118
	    The local variable name, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8119
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8120
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8121
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8122
	<field id="signature">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8123
	  <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8124
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8125
	    The local variable's type signature, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8126
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8127
	    The signature format is the same as that defined in
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
  8128
	    <vmspec chapter="4.3.2"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8129
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8130
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8131
	<field id="generic_signature">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8132
	  <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8133
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8134
	    The local variable's generic signature, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8135
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8136
            The value of this field will be <code>NULL</code> for any local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8137
            variable which does not have a generic type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8138
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8139
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8140
	<field id="slot">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8141
	  <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8142
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8143
	    The local variable's slot.  See <internallink id="local">Local Variables</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8144
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8145
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8146
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8147
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8148
	Return local variable information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8149
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8150
      <origin>jvmdiClone</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8151
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8152
	<required id="can_access_local_variables"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8153
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8154
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8155
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8156
	  <jmethodID native="error"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8157
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8158
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8159
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8160
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8161
	<param id="entry_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8162
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8163
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8164
	    On return, points to the number of entries in the table
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8165
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8166
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8167
	<param id="table_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8168
	  <allocbuf outcount="entry_count_ptr"><struct>jvmtiLocalVariableEntry</struct></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8169
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8170
	    On return, points to an array of local variable table entries.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8171
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8172
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8173
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8174
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8175
	<error id="JVMTI_ERROR_ABSENT_INFORMATION">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8176
	  Class information does not include local variable
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8177
	  information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8178
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8179
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8180
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8181
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8182
    <function id="GetBytecodes" phase="start" num="75">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8183
      <synopsis>Get Bytecodes</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8184
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8185
	For the method indicated by <code>method</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8186
	return the byte codes that implement the method. The number of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8187
	bytecodes is returned via <code>bytecode_count_ptr</code>. The byte codes
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8188
	themselves are returned via <code>bytecodes_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8189
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8190
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8191
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8192
	<required id="can_get_bytecodes"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8193
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8194
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8195
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8196
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8197
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8198
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8199
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8200
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8201
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8202
	  <jmethodID class="klass" native="error"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8203
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8204
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8205
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8206
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8207
	<param id="bytecode_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8208
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8209
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8210
	    On return, points to the length of the byte code array
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8211
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8212
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8213
	<param id="bytecodes_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8214
	  <allocbuf outcount="bytecode_count_ptr"><uchar/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8215
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8216
	    On return, points to the pointer to the byte code array
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8217
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8218
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8219
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8220
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8221
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8222
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8223
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8224
    <function id="IsMethodNative" phase="start" num="76">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8225
      <synopsis>Is Method Native</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8226
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8227
	For the method indicated by <code>method</code>, return a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8228
	value indicating whether the method is native via <code>is_native_ptr</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8229
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8230
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8231
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8232
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8233
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8234
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8235
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8236
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8237
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8238
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8239
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8240
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8241
	  <jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8242
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8243
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8244
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8245
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8246
	<param id="is_native_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8247
	  <outptr><jboolean/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8248
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8249
	    On return, points to the boolean result of this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8250
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8251
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8252
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8253
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8254
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8255
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8256
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8257
    <function id="IsMethodSynthetic" phase="start" num="77">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8258
      <synopsis>Is Method Synthetic</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8259
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8260
	For the method indicated by <code>method</code>, return a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8261
	value indicating whether the method is synthetic via <code>is_synthetic_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8262
	Synthetic methods are generated by the compiler but not present in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8263
	original source code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8264
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8265
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8266
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8267
        <required id="can_get_synthetic_attribute"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8268
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8269
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8270
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8271
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8272
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8273
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8274
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8275
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8276
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8277
	  <jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8278
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8279
	      The method to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8280
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8281
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8282
	<param id="is_synthetic_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8283
	  <outptr><jboolean/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8284
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8285
	    On return, points to the boolean result of this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8286
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8287
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8288
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8289
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8290
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8291
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8292
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8293
    <function id="IsMethodObsolete" phase="start" num="91">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8294
      <synopsis>Is Method Obsolete</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8295
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8296
        Determine if a method ID refers to an
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8297
        <internallink id="obsoleteMethods">obsolete</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8298
        method version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8299
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8300
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8301
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8302
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8303
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8304
	<param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8305
	  <jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8306
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8307
	      The class to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8308
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8309
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8310
	<param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8311
	  <jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8312
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8313
	      The method ID to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8314
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8315
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8316
	<param id="is_obsolete_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8317
	  <outptr><jboolean/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8318
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8319
	    On return, points to the boolean result of this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8320
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8321
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8322
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8323
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8324
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8325
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8326
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8327
    <function id="SetNativeMethodPrefix" jkernel="yes" phase="any" num="73" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8328
      <synopsis>Set Native Method Prefix</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8329
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8330
	This function modifies the failure handling of
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8331
        native method resolution by allowing retry
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8332
        with a prefix applied to the name.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8333
        When used with the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8334
        <eventlink id="ClassFileLoadHook">ClassFileLoadHook
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8335
        event</eventlink>, it enables native methods to be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8336
        <internallink id="bci">instrumented</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8337
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8338
        Since native methods cannot be directly instrumented
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8339
        (they have no bytecodes), they must be wrapped with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8340
        a non-native method which can be instrumented.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8341
        For example, if we had:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8342
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8343
native boolean foo(int x);</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8344
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8345
        We could transform the class file (with the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8346
        ClassFileLoadHook event) so that this becomes:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8347
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8348
boolean foo(int x) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8349
  <i>... record entry to foo ...</i>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8350
  return wrapped_foo(x);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8351
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8352
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8353
native boolean wrapped_foo(int x);</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8354
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8355
        Where foo becomes a wrapper for the actual native method
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8356
        with the appended prefix "wrapped_".  Note that
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8357
        "wrapped_" would be a poor choice of prefix since it
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8358
        might conceivably form the name of an existing method
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8359
        thus something like "$$$MyAgentWrapped$$$_" would be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8360
        better but would make these examples less readable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8361
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8362
        The wrapper will allow data to be collected on the native
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8363
        method call, but now the problem becomes linking up the  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8364
        wrapped method with the native implementation.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8365
        That is, the method <code>wrapped_foo</code> needs to be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8366
        resolved to the native implementation of <code>foo</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8367
        which might be:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8368
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8369
Java_somePackage_someClass_foo(JNIEnv* env, jint x)</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8370
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8371
        This function allows the prefix to be specified and the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8372
        proper resolution to occur.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8373
        Specifically, when the standard resolution fails, the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8374
        resolution is retried taking the prefix into consideration.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8375
        There are two ways that resolution occurs, explicit
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8376
        resolution with the JNI function <code>RegisterNatives</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8377
        and the normal automatic resolution.  For 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8378
        <code>RegisterNatives</code>, the VM will attempt this 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8379
        association:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8380
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8381
method(foo) -> nativeImplementation(foo)</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8382
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8383
        When this fails, the resolution will be retried with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8384
        the specified prefix prepended to the method name, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8385
        yielding the correct resolution:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8386
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8387
method(wrapped_foo) -> nativeImplementation(foo)</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8388
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8389
        For automatic resolution, the VM will attempt:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8390
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8391
method(wrapped_foo) -> nativeImplementation(wrapped_foo)</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8392
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8393
        When this fails, the resolution will be retried with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8394
        the specified prefix deleted from the implementation name, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8395
        yielding the correct resolution:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8396
        <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8397
method(wrapped_foo) -> nativeImplementation(foo)</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8398
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8399
        Note that since the prefix is only used when standard
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8400
        resolution fails, native methods can be wrapped selectively.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8401
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8402
        Since each <jvmti/> environment is independent and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8403
        can do its own transformation of the bytecodes, more 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8404
        than one layer of wrappers may be applied. Thus each
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8405
        environment needs its own prefix.  Since transformations
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8406
        are applied in order, the prefixes, if applied, will
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8407
        be applied in the same order.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8408
        The order of transformation application is described in
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8409
        the <eventlink id="ClassFileLoadHook"/> event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8410
        Thus if three environments applied
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8411
        wrappers, <code>foo</code> might become 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8412
        <code>$env3_$env2_$env1_foo</code>.  But if, say,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8413
        the second environment did not apply a wrapper to
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8414
        <code>foo</code> it would be just 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8415
        <code>$env3_$env1_foo</code>.  To be able to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8416
        efficiently determine the sequence of prefixes,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8417
        an intermediate prefix is only applied if its non-native
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8418
        wrapper exists.  Thus, in the last example, even though 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8419
        <code>$env1_foo</code> is not a native method, the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8420
        <code>$env1_</code> prefix is applied since 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8421
        <code>$env1_foo</code> exists.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8422
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8423
        Since the prefixes are used at resolution time
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8424
        and since resolution may be arbitrarily delayed, a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8425
        native method prefix must remain set as long as there 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8426
        are corresponding prefixed native methods.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8427
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8428
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8429
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8430
	<required id="can_set_native_method_prefix"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8431
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8432
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8433
	<param id="prefix">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8434
	  <inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8435
	    <char/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8436
	    <nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8437
	      any existing prefix in this environment is cancelled
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8438
	    </nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8439
	  </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8440
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8441
	    The prefix to apply, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8442
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8443
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8444
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8445
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8446
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8447
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8448
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8449
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8450
    <function id="SetNativeMethodPrefixes" jkernel="yes" phase="any" num="74" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8451
      <synopsis>Set Native Method Prefixes</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8452
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8453
	 For a normal agent, <functionlink id="SetNativeMethodPrefix"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8454
         will provide all needed native method prefixing.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8455
         For a meta-agent that performs multiple independent class
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8456
         file transformations (for example as a proxy for another
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8457
         layer of agents) this function allows each transformation
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8458
         to have its own prefix.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8459
         The prefixes are applied in the order supplied and are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8460
         processed in the same manor as described for the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8461
         application of prefixes from multiple <jvmti/> environments
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8462
         in <functionlink id="SetNativeMethodPrefix"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8463
         <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8464
         Any previous prefixes are replaced.  Thus, calling this
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8465
         function with a <paramlink id="prefix_count"/> of <code>0</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8466
         disables prefixing in this environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8467
         <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8468
         <functionlink id="SetNativeMethodPrefix"/> and this function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8469
         are the two ways to set the prefixes.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8470
         Calling <code>SetNativeMethodPrefix</code> with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8471
         a prefix is the same as calling this function with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8472
         <paramlink id="prefix_count"/> of <code>1</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8473
         Calling <code>SetNativeMethodPrefix</code> with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8474
         <code>NULL</code> is the same as calling this function with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8475
         <paramlink id="prefix_count"/> of <code>0</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8476
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8477
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8478
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8479
	<required id="can_set_native_method_prefix"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8480
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8481
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8482
	<param id="prefix_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8483
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8484
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8485
	      The number of prefixes to apply.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8486
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8487
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8488
	<param id="prefixes">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8489
	  <agentbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8490
            <char/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8491
          </agentbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8492
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8493
	    The prefixes to apply for this environment, each encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8494
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8495
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8496
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8497
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8498
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8499
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8500
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8501
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8502
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8503
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8504
  <category id="RawMonitors" label="Raw Monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8505
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8506
    <function id="CreateRawMonitor" phase="onload" callbacksafe="safe" num="31">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8507
      <synopsis>Create Raw Monitor</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8508
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8509
	Create a raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8510
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8511
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8512
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8513
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8514
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8515
	<param id="name">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8516
	  <inbuf><char/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8517
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8518
	    A name to identify the monitor, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8519
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8520
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8521
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8522
	<param id="monitor_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8523
	  <outptr><jrawMonitorID/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8524
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8525
	    On return, points to the created monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8526
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8527
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8528
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8529
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8530
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8531
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8532
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8533
    <function id="DestroyRawMonitor" phase="onload" callbacksafe="safe" num="32">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8534
      <synopsis>Destroy Raw Monitor</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8535
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8536
	Destroy the raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8537
        If the monitor being destroyed has been entered by this thread, it will be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8538
        exited before it is destroyed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8539
        If the monitor being destroyed has been entered by another thread,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8540
        an error will be returned and the monitor will not be destroyed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8541
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8542
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8543
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8544
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8545
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8546
	<param id="monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8547
	  <jrawMonitorID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8548
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8549
	    The monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8550
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8551
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8552
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8553
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8554
	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8555
	  Not monitor owner
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8556
	</error>        
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8557
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8558
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8559
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8560
    <function id="RawMonitorEnter" phase="any" callbacksafe="safe" impl="innative notrace" num="33">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8561
      <synopsis>Raw Monitor Enter</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8562
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8563
	Gain exclusive ownership of a raw monitor.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8564
        The same thread may enter a monitor more then once.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8565
        The thread must
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8566
        <functionlink id="RawMonitorExit">exit</functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8567
        the monitor the same number of times as it is entered.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8568
        If a monitor is entered during <code>OnLoad</code> (before attached threads exist)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8569
	and has not exited when attached threads come into existence, the enter
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8570
	is considered to have occurred on the main thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8571
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8572
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8573
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8574
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8575
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8576
	<param id="monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8577
	  <jrawMonitorID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8578
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8579
	    The monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8580
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8581
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8582
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8583
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8584
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8585
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8586
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8587
    <function id="RawMonitorExit" phase="any" callbacksafe="safe" impl="innative notrace" num="34">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8588
      <synopsis>Raw Monitor Exit</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8589
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8590
	Release exclusive ownership of a raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8591
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8592
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8593
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8594
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8595
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8596
	<param id="monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8597
	  <jrawMonitorID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8598
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8599
	    The monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8600
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8601
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8602
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8603
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8604
	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8605
	  Not monitor owner
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8606
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8607
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8608
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8609
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8610
    <function id="RawMonitorWait" phase="any" callbacksafe="safe" impl="innative notrace" num="35">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8611
      <synopsis>Raw Monitor Wait</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8612
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8613
        Wait for notification of the raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8614
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8615
        Causes the current thread to wait until either another thread calls 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8616
        <functionlink id="RawMonitorNotify"/> or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8617
        <functionlink id="RawMonitorNotifyAll"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8618
        for the specified raw monitor, or the specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8619
        <paramlink id="millis">timeout</paramlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8620
        has elapsed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8621
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8622
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8623
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8624
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8625
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8626
	<param id="monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8627
	  <jrawMonitorID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8628
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8629
	    The monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8630
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8631
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8632
	<param id="millis">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8633
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8634
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8635
	    The timeout, in milliseconds.  If the timeout is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8636
	    zero, then real time is not taken into consideration
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8637
	    and the thread simply waits until notified.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8638
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8639
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8640
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8641
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8642
	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8643
	  Not monitor owner
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8644
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8645
	<error id="JVMTI_ERROR_INTERRUPT"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8646
	  Wait was interrupted, try again
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8647
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8648
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8649
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8650
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8651
    <function id="RawMonitorNotify" phase="any" callbacksafe="safe" impl="notrace" num="36">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8652
      <synopsis>Raw Monitor Notify</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8653
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8654
	Notify a single thread waiting on the raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8655
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8656
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8657
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8658
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8659
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8660
	<param id="monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8661
	  <jrawMonitorID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8662
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8663
	    The monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8664
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8665
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8666
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8667
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8668
	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8669
	  Not monitor owner
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8670
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8671
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8672
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8673
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8674
    <function id="RawMonitorNotifyAll" phase="any" callbacksafe="safe" impl="notrace" num="37">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8675
      <synopsis>Raw Monitor Notify All</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8676
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8677
	Notify all threads waiting on the raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8678
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8679
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8680
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8681
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8682
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8683
	<param id="monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8684
	  <jrawMonitorID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8685
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8686
	    The monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8687
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8688
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8689
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8690
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8691
	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8692
	  Not monitor owner
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8693
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8694
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8695
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8696
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8697
   <elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8698
    <function id="GetRawMonitorUse" num="118">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8699
      <synopsis>Get Raw Monitor Use</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8700
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8701
        The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8702
        are filled in with information about usage of the raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8703
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8704
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8705
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8706
        <required id="can_get_raw_monitor_usage"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8707
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8708
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8709
        <param id="monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8710
	  <jrawMonitorID/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8711
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8712
	    the raw monitor to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8713
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8714
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8715
        <param id="info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8716
	  <outptr><struct>jvmtiMonitorUsage</struct></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8717
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8718
	    On return, filled with monitor information for the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8719
	    specified raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8720
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8721
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8722
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8723
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8724
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8725
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8726
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8727
    <function id="GetRawMonitors" num="119">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8728
      <synopsis>Get Raw Monitors</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8729
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8730
        Return the list of raw monitors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8731
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8732
        Note: details about each monitor can be examined with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8733
        <functionlink id="GetRawMonitorUse"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8734
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8735
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8736
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8737
        <required id="can_get_raw_monitor_usage"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8738
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8739
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8740
        <param id="monitorCnt">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8741
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8742
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8743
	    On return, pointer to the number 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8744
	    of monitors returned in <code>monitors_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8745
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8746
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8747
        <param id="monitors_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8748
	  <allocbuf outcount="monitorCnt"><jrawMonitorID/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8749
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8750
	    On return, pointer to the monitor list.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8751
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8752
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8753
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8754
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8755
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8756
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8757
    </elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8758
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8759
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8760
  <category id="jniIntercept" label="JNI Function Interception">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8761
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8762
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8763
      Provides the ability to intercept and resend 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8764
      Java Native Interface (JNI) function calls
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8765
      by manipulating the JNI function table.
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
  8766
      See <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html">JNI
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8767
	Functions</externallink> in the <i>Java Native Interface Specification</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8768
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8769
      The following example illustrates intercepting the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8770
      <code>NewGlobalRef</code> JNI call in order to count reference
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8771
      creation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8772
      <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8773
JNIEnv original_jni_Functions;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8774
JNIEnv redirected_jni_Functions;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8775
int my_global_ref_count = 0;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8776
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8777
jobject
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8778
MyNewGlobalRef(JNIEnv *jni_env, jobject lobj) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8779
   ++my_global_ref_count;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8780
   return originalJNIFunctions-&gt;NewGlobalRef(env, lobj);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8781
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8782
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8783
void
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8784
myInit() {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8785
   jvmtiError err;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8786
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8787
   err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;original_jni_Functions);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8788
   if (err != JVMTI_ERROR_NONE) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8789
      die();
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8790
   }
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8791
   err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;redirected_jni_Functions);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8792
   if (err != JVMTI_ERROR_NONE) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8793
      die();
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8794
   }
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8795
   redirectedJNIFunctions-&gt;NewGlobalRef = MyNewGlobalRef;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8796
      err = (*jvmti_env)-&gt;SetJNIFunctionTable(jvmti_env, redirected_jni_Functions);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8797
   if (err != JVMTI_ERROR_NONE) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8798
      die();
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8799
   }
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8800
}
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8801
      </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8802
      Sometime after <code>myInit</code> is called the user's JNI
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8803
      code is executed which makes the call to create a new global
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8804
      reference.  Instead of going to the normal JNI implementation
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8805
      the call goes to <code>myNewGlobalRef</code>.  Note that a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8806
      copy of the original function table is kept so that the normal
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8807
      JNI function can be called after the data is collected.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8808
      Note also that any JNI functions which are not overwritten
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8809
      will behave normally.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8810
      <todo>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8811
	check that the example compiles and executes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8812
      </todo>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8813
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8814
    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8815
    <function id="SetJNIFunctionTable" phase="start" num="120">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8816
      <synopsis>Set JNI Function Table</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8817
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8818
        Set the JNI function table 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8819
        in all current and future JNI environments.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8820
        As a result, all future JNI calls are directed to the specified functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8821
        Use <functionlink id="GetJNIFunctionTable"></functionlink> to get the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8822
        function table to pass to this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8823
        For this function to take effect the the updated table entries must be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8824
        used by the JNI clients.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8825
        Since the table is defined <code>const</code> some compilers may optimize
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8826
        away the access to the table, thus preventing this function from taking 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8827
        effect.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8828
        The table is copied--changes to the local copy of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8829
        table have no effect.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8830
        This function affects only the function table, all other aspects of the environment are
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8831
        unaffected.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8832
        See the examples <internallink id="jniIntercept">above</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8833
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8834
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8835
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8836
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8837
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8838
        <param id="function_table">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8839
	  <inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8840
	    <struct>jniNativeInterface</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8841
	  </inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8842
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8843
	    Points to the new JNI function table.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8844
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8845
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8846
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8847
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8848
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8849
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8850
    
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8851
    <function id="GetJNIFunctionTable" phase="start" num="121">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8852
      <synopsis>Get JNI Function Table</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8853
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8854
        Get the JNI function table.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8855
        The JNI function table is copied into allocated memory.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8856
        If <functionlink id="SetJNIFunctionTable"></functionlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8857
        has been called, the modified (not the original) function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8858
        table is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8859
        Only the function table is copied, no other aspects of the environment 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8860
        are copied.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8861
        See the examples <internallink id="jniIntercept">above</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8862
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8863
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8864
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8865
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8866
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8867
        <param id="function_table">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8868
	  <allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8869
	    <struct>jniNativeInterface</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8870
	  </allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8871
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8872
	    On return, <code>*function_table</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8873
	    points a newly allocated copy of the JNI function table.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8874
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8875
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8876
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8877
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8878
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8879
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8880
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8881
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8882
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8883
  <category id="eventManagement" label="Event Management">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8884
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8885
    <function id="SetEventCallbacks" jkernel="yes" phase="onload" num="122">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8886
      <synopsis>Set Event Callbacks</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8887
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8888
        Set the functions to be called for each event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8889
        The callbacks are specified by supplying a replacement function table.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8890
        The function table is copied--changes to the local copy of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8891
        table have no effect.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8892
        This is an atomic action, all callbacks are set at once.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8893
        No events are sent before this function is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8894
        When an entry is <code>NULL</code> or when the event is beyond 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8895
        <paramlink id="size_of_callbacks"></paramlink> no event is sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8896
        Details on events are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8897
        described <internallink id="EventSection">later</internallink> in this document.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8898
        An event must be enabled and have a callback in order to be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8899
        sent--the order in which this function and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8900
        <functionlink id="SetEventNotificationMode"></functionlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8901
        are called does not affect the result.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8902
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8903
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8904
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8905
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8906
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8907
        <param id="callbacks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8908
	  <inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8909
	    <struct>jvmtiEventCallbacks</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8910
	    <nullok>remove the existing callbacks</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8911
	  </inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8912
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8913
	    The new event callbacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8914
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8915
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8916
        <param id="size_of_callbacks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8917
	  <jint min="0"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8918
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8919
	    <code>sizeof(jvmtiEventCallbacks)</code>--for version
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8920
	    compatibility.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8921
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8922
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8923
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8924
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8925
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8926
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8927
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8928
    <function id="SetEventNotificationMode" jkernel="yes" phase="onload" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8929
      <synopsis>Set Event Notification Mode</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8930
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8931
	Control the generation of events. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8932
	<constants id="jvmtiEventMode" label="Event Enable/Disable" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8933
	  <constant id="JVMTI_ENABLE" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8934
	    If <paramlink id="mode"></paramlink> is <code>JVMTI_ENABLE</code>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8935
	    the event <paramlink id="event_type"></paramlink> will be enabled
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8936
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8937
	  <constant id="JVMTI_DISABLE" num="0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8938
	    If <paramlink id="mode"></paramlink> is <code>JVMTI_DISABLE</code>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8939
	    the event <paramlink id="event_type"></paramlink> will be disabled
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8940
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8941
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8942
	If <code>thread</code> is <code>NULL</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8943
	the event is enabled or disabled globally; otherwise, it is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8944
	enabled or disabled for a particular thread. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8945
	An event is generated for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8946
	a particular thread if it is enabled either at the thread or global
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8947
	levels. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8948
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8949
	See <internallink id="EventIndex">below</internallink> for information on specific events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8950
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8951
	The following events cannot be controlled at the thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8952
	level through this function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8953
	<ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8954
	  <li><eventlink id="VMInit"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8955
	  <li><eventlink id="VMStart"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8956
	  <li><eventlink id="VMDeath"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8957
	  <li><eventlink id="ThreadStart"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8958
	  <li><eventlink id="CompiledMethodLoad"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8959
	  <li><eventlink id="CompiledMethodUnload"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8960
	  <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8961
	  <li><eventlink id="DataDumpRequest"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8962
	</ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8963
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8964
	Initially, no events are enabled at either the thread level 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8965
	or the global level.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8966
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8967
        Any needed capabilities (see Event Enabling Capabilities below) must be possessed
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8968
        before calling this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8969
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8970
	Details on events are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8971
	described <internallink id="EventSection">below</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8972
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8973
      <origin>jvmdiClone</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8974
      <eventcapabilities></eventcapabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8975
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8976
	<param id="mode">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8977
	  <enum>jvmtiEventMode</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8978
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8979
	    <code>JVMTI_ENABLE</code> or <code>JVMTI_DISABLE</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8980
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8981
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8982
	<param id="event_type">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8983
	  <enum>jvmtiEvent</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8984
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8985
	    the event to control
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8986
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8987
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8988
	<param id="event_thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8989
	  <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8990
	    <jthread impl="noconvert"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8991
	    <nullok>event is controlled at the global level</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8992
	  </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8993
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8994
	      The thread to control
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8995
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8996
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8997
        <param id="...">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8998
          <varargs/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  8999
            <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9000
              for future expansion
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9001
            </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9002
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9003
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9004
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9005
        <error id="JVMTI_ERROR_INVALID_THREAD">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9006
          <paramlink id="event_thread"/> is non-<code>NULL</code> and is not a valid thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9007
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9008
        <error id="JVMTI_ERROR_THREAD_NOT_ALIVE">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9009
          <paramlink id="event_thread"/> is non-<code>NULL</code> and is not live (has not been started or is now dead).
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9010
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9011
	<error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9012
	  thread level control was attempted on events which do not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9013
          permit thread level control.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9014
	</error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9015
        <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9016
          The Required Event Enabling Capability is not possessed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9017
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9018
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9019
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9020
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9021
    <function id="GenerateEvents" num="123">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9022
      <synopsis>Generate Events</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9023
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9024
        Generate events to represent the current state of the VM.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9025
        For example, if <paramlink id="event_type"/> is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9026
        <code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9027
        a <eventlink id="CompiledMethodLoad"></eventlink> event will be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9028
        sent for each currently compiled method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9029
        Methods that were loaded and now have been unloaded are not sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9030
        The history of what events have previously been sent does not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9031
        effect what events are sent by this function--for example, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9032
        all currently compiled methods
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9033
        will be sent each time this function is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9034
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9035
	This function is useful when
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9036
        events may have been missed due to the agent attaching after program
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9037
	execution begins; this function generates the missed events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9038
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9039
	Attempts to execute Java programming language code or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9040
	JNI functions may be paused until this function returns -
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9041
	so neither should be called from the thread sending the event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9042
	This function returns only after the missed events have been 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9043
        sent, processed and have returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9044
	The event may be sent on a different thread than the thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9045
	on which the event occurred.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9046
	The callback for the event must be set with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9047
        <functionlink id="SetEventCallbacks"></functionlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9048
	and the event must be enabled with
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9049
        <functionlink id="SetEventNotificationMode"></functionlink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9050
	or the events will not occur.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9051
	If the VM no longer has the information to generate some or
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9052
        all of the requested events, the events are simply not sent -
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9053
        no error is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9054
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9055
	Only the following events are supported:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9056
	<ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9057
	  <li><eventlink id="CompiledMethodLoad"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9058
	  <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9059
	</ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9060
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9061
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9062
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9063
	<capability id="can_generate_compiled_method_load_events"></capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9064
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9065
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9066
	<param id="event_type">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9067
	  <enum>jvmtiEvent</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9068
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9069
	    The type of event to generate.  Must be one of these:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9070
	    <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9071
	      <li><eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9072
	      <li><eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9073
	    </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9074
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9075
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9076
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9077
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9078
        <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9079
          <paramlink id="event_type"/> is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9080
	  <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9081
	  and <fieldlink id="can_generate_compiled_method_load_events" struct="jvmtiCapabilities"></fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9082
	  is <code>false</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9083
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9084
        <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9085
          <paramlink id="event_type"/> is other than
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9086
	  <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9087
	  or <eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9088
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9089
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9090
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9091
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9092
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9093
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9094
    <category id="extension" label="Extension Mechanism">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9095
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9096
      <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9097
	These functions
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9098
	allow a <jvmti/> implementation to provide functions and events
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9099
	beyond those defined in this specification.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9100
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9101
	Both extension functions and extension events have parameters
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9102
	each of which has a 'type' and 'kind' chosen from the following tables:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9103
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9104
	<constants id="jvmtiParamTypes" label="Extension Function/Event Parameter Types" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9105
	  <constant id="JVMTI_TYPE_JBYTE" num="101">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9106
	    Java programming language primitive type - <code>byte</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9107
	    JNI type <code>jbyte</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9108
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9109
	  <constant id="JVMTI_TYPE_JCHAR" num="102">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9110
	    Java programming language primitive type - <code>char</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9111
	    JNI type <code>jchar</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9112
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9113
	  <constant id="JVMTI_TYPE_JSHORT" num="103">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9114
	    Java programming language primitive type - <code>short</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9115
	    JNI type <code>jshort</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9116
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9117
	  <constant id="JVMTI_TYPE_JINT" num="104">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9118
	    Java programming language primitive type - <code>int</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9119
	    JNI type <datalink id="jint"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9120
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9121
	  <constant id="JVMTI_TYPE_JLONG" num="105">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9122
	    Java programming language primitive type - <code>long</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9123
	    JNI type <datalink id="jlong"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9124
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9125
	  <constant id="JVMTI_TYPE_JFLOAT" num="106">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9126
	    Java programming language primitive type - <code>float</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9127
	    JNI type <datalink id="jfloat"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9128
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9129
	  <constant id="JVMTI_TYPE_JDOUBLE" num="107">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9130
	    Java programming language primitive type - <code>double</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9131
	    JNI type <datalink id="jdouble"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9132
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9133
	  <constant id="JVMTI_TYPE_JBOOLEAN" num="108">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9134
	    Java programming language primitive type - <code>boolean</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9135
	    JNI type <datalink id="jboolean"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9136
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9137
	  <constant id="JVMTI_TYPE_JOBJECT" num="109">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9138
	    Java programming language object type - <code>java.lang.Object</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9139
	    JNI type <datalink id="jobject"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9140
	    Returned values are JNI local references and must be managed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9141
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9142
	  <constant id="JVMTI_TYPE_JTHREAD" num="110">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9143
	    Java programming language object type - <code>java.lang.Thread</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9144
	    <jvmti/> type <datalink id="jthread"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9145
	    Returned values are JNI local references and must be managed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9146
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9147
	  <constant id="JVMTI_TYPE_JCLASS" num="111">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9148
	    Java programming language object type - <code>java.lang.Class</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9149
	    JNI type <datalink id="jclass"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9150
	    Returned values are JNI local references and must be managed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9151
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9152
	  <constant id="JVMTI_TYPE_JVALUE" num="112">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9153
	    Union of all Java programming language primitive and object types - 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9154
	    JNI type <datalink id="jvalue"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9155
	    Returned values which represent object types are JNI local references and must be managed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9156
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9157
	  <constant id="JVMTI_TYPE_JFIELDID" num="113">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9158
	    Java programming language field identifier - 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9159
	    JNI type <datalink id="jfieldID"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9160
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9161
	  <constant id="JVMTI_TYPE_JMETHODID" num="114">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9162
	    Java programming language method identifier - 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9163
	    JNI type <datalink id="jmethodID"></datalink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9164
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9165
	  <constant id="JVMTI_TYPE_CCHAR" num="115">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9166
	    C programming language type - <code>char</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9167
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9168
	  <constant id="JVMTI_TYPE_CVOID" num="116">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9169
	    C programming language type - <code>void</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9170
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9171
	  <constant id="JVMTI_TYPE_JNIENV" num="117">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9172
	    JNI environment - <code>JNIEnv</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9173
            Should be used with the correct <datalink id="jvmtiParamKind"/> to make it a pointer type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9174
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9175
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9176
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9177
	<constants id="jvmtiParamKind" label="Extension Function/Event Parameter Kinds" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9178
	  <constant id="JVMTI_KIND_IN" num="91">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9179
	    Ingoing argument - <code>foo</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9180
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9181
	  <constant id="JVMTI_KIND_IN_PTR" num="92">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9182
	    Ingoing pointer argument - <code>const foo*</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9183
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9184
	  <constant id="JVMTI_KIND_IN_BUF" num="93">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9185
	    Ingoing array argument - <code>const foo*</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9186
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9187
	  <constant id="JVMTI_KIND_ALLOC_BUF" num="94">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9188
	    Outgoing allocated array argument -  <code>foo**</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9189
	    Free with <code>Deallocate</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9190
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9191
	  <constant id="JVMTI_KIND_ALLOC_ALLOC_BUF" num="95">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9192
	    Outgoing allocated array of allocated arrays argument - <code>foo***</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9193
	    Free with <code>Deallocate</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9194
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9195
	  <constant id="JVMTI_KIND_OUT" num="96">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9196
	    Outgoing argument - <code>foo*</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9197
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9198
	  <constant id="JVMTI_KIND_OUT_BUF" num="97">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9199
	    Outgoing array argument (pre-allocated by agent) - <code>foo*</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9200
	    Do not <code>Deallocate</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9201
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9202
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9203
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9204
      </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9205
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9206
      <typedef id="jvmtiParamInfo" label="Extension Function/Event Parameter Info">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9207
	<field id="name">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9208
	  <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9209
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9210
	      The parameter name, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9211
	      <internallink id="mUTF">modified UTF-8</internallink> string
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9212
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9213
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9214
	<field id="kind">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9215
	  <enum>jvmtiParamKind</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9216
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9217
	    The kind of the parameter - type modifiers
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9218
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9219
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9220
	<field id="base_type">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9221
	  <enum>jvmtiParamTypes</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9222
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9223
	    The base type of the parameter -  modified by <code>kind</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9224
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9225
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9226
	<field id="null_ok">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9227
	  <jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9228
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9229
	      Is a <code>NULL</code> argument permitted? Applies only to pointer and object types.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9230
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9231
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9232
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9233
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9234
      <callback id="jvmtiExtensionFunction">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9235
	<enum>jvmtiError</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9236
	  <synopsis>Extension Function</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9237
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9238
	  This is the implementation-specific extension function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9239
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9240
	<parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9241
	  <param id="jvmti_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9242
	    <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9243
	      <struct>jvmtiEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9244
	    </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9245
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9246
	      The <jvmti/> environment is the only fixed parameter for extension functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9247
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9248
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9249
	  <param id="...">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9250
	    <varargs/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9251
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9252
		The extension function-specific parameters
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9253
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9254
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9255
	</parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9256
      </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9257
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9258
      <function id="GetExtensionFunctions" phase="onload" num="124">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9259
	<synopsis>Get Extension Functions</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9260
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9261
	<typedef id="jvmtiExtensionFunctionInfo" label="Extension Function Info">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9262
	  <field id="func">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9263
            <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9264
              <struct>jvmtiExtensionFunction</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9265
            </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9266
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9267
	      The actual function to call
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9268
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9269
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9270
	  <field id="id">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9271
	    <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9272
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9273
		The identifier for the extension function, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9274
	        <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9275
		Uses package name conventions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9276
		For example, <code>com.sun.hotspot.bar</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9277
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9278
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9279
	  <field id="short_description">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9280
	    <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9281
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9282
		A one sentence description of the function, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9283
	        <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9284
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9285
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9286
	  <field id="param_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9287
	    <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9288
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9289
		The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9290
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9291
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9292
	  <field id="params">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9293
	    <allocfieldbuf outcount="param_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9294
	      <struct>jvmtiParamInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9295
	    </allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9296
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9297
	      Array of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9298
	      <fieldlink id="param_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9299
	      parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9300
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9301
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9302
	  <field id="error_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9303
	    <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9304
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9305
		The number of possible error returns (excluding universal errors)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9306
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9307
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9308
	  <field id="errors">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9309
	    <allocfieldbuf outcount="error_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9310
	      <enum>jvmtiError</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9311
	    </allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9312
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9313
	      Array of <fieldlink id="error_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9314
	      possible errors
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9315
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9316
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9317
	</typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9318
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9319
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9320
	  Returns the set of extension functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9321
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9322
	<origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9323
	<capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9324
	</capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9325
	<parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9326
	  <param id="extension_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9327
	    <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9328
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9329
		On return, points to the number of extension functions
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9330
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9331
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9332
	  <param id="extensions">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9333
	    <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionFunctionInfo</struct></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9334
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9335
	      Returns an array of extension function info, one per function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9336
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9337
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9338
	</parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9339
	<errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9340
	</errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9341
      </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9342
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9343
      <function id="GetExtensionEvents" phase="onload" num="125">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9344
	<synopsis>Get Extension Events</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9345
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9346
	<typedef id="jvmtiExtensionEventInfo" label="Extension Event Info">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9347
	  <field id="extension_event_index">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9348
	    <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9349
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9350
	      The identifying index of the event
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9351
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9352
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9353
	  <field id="id">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9354
	    <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9355
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9356
		The identifier for the extension event, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9357
                <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9358
		Uses package name conventions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9359
		For example, <code>com.sun.hotspot.bar</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9360
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9361
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9362
	  <field id="short_description">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9363
	    <allocfieldbuf><char/></allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9364
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9365
		A one sentence description of the event, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9366
                <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9367
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9368
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9369
	  <field id="param_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9370
	    <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9371
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9372
		The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9373
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9374
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9375
	  <field id="params">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9376
	    <allocfieldbuf outcount="param_count">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9377
	      <struct>jvmtiParamInfo</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9378
	    </allocfieldbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9379
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9380
	      Array of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9381
	      <fieldlink id="param_count" struct="jvmtiExtensionEventInfo"></fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9382
	      parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9383
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9384
	  </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9385
	</typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9386
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9387
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9388
	  Returns the set of extension events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9389
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9390
	<origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9391
	<capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9392
	</capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9393
	<parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9394
	  <param id="extension_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9395
	    <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9396
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9397
		On return, points to the number of extension events
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9398
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9399
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9400
	  <param id="extensions">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9401
	    <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionEventInfo</struct></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9402
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9403
	      Returns an array of extension event info, one per event
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9404
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9405
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9406
	</parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9407
	<errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9408
	</errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9409
      </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9410
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9411
      <callback id="jvmtiExtensionEvent">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9412
	<void/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9413
	  <synopsis>Extension Event</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9414
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9415
	  This is the implementation-specific event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9416
          The event handler is set with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9417
          <functionlink id="SetExtensionEventCallback"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9418
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9419
          Event handlers for extension events must be declared varargs to match this definition.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9420
          Failure to do so could result in calling convention mismatch and undefined behavior
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9421
          on some platforms.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9422
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9423
          For example, if the <code>jvmtiParamInfo</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9424
          returned by <functionlink id="GetExtensionEvents"/> indicates that
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9425
          there is a <code>jint</code> parameter, the event handler should be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9426
          declared:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9427
<example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9428
    void JNICALL myHandler(jvmtiEnv* jvmti_env, jint myInt, ...)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9429
</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9430
          Note the terminal "<code>...</code>" which indicates varargs.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9431
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9432
	<parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9433
	  <param id="jvmti_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9434
	    <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9435
	      <struct>jvmtiEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9436
	    </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9437
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9438
	      The <jvmti/> environment is the only fixed parameter for extension events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9439
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9440
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9441
	  <param id="...">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9442
	    <varargs/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9443
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9444
		The extension event-specific parameters
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9445
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9446
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9447
	</parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9448
      </callback>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9449
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9450
      <function id="SetExtensionEventCallback" phase="onload" num="126">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9451
	<synopsis>Set Extension Event Callback</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9452
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9453
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9454
	  Sets the callback function for an extension event and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9455
	  enables the event. Or, if the callback is <code>NULL</code>, disables
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9456
	  the event.  Note that unlike standard events, setting
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9457
	  the callback and enabling the event are a single operation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9458
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9459
	<origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9460
	<capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9461
	</capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9462
	<parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9463
	  <param id="extension_event_index">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9464
	    <jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9465
	      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9466
		Identifies which callback to set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9467
		This index is the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9468
		<fieldlink id="extension_event_index" struct="jvmtiExtensionEventInfo"></fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9469
		field of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9470
		<datalink id="jvmtiExtensionEventInfo"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9471
	      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9472
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9473
	  <param id="callback">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9474
	    <ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9475
	      <struct>jvmtiExtensionEvent</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9476
	      <nullok>disable the event</nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9477
	    </ptrtype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9478
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9479
	      If <code>callback</code> is non-<code>NULL</code>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9480
	      set <code>callback</code> to be the event callback function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9481
	      and enable the event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9482
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9483
	  </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9484
	</parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9485
	<errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9486
        <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9487
            <paramlink id="extension_event_index"/> is not an
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9488
            <fieldlink id="extension_event_index" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9489
                       struct="jvmtiExtensionEventInfo"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9490
            returned by 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9491
            <functionlink id="GetExtensionEvents"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9492
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9493
	</errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9494
      </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9495
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9496
    </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9497
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9498
  <category id="capability" label="Capability">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9499
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9500
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9501
      The capabilities functions allow you to change the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9502
      functionality available to <jvmti/>--that is, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9503
      which <jvmti/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9504
      functions can be called, what events can be generated,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9505
      and what functionality these events and functions can
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9506
      provide.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9507
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9508
        The "Capabilities" section of each function and event describe which 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9509
        capabilities, if any, they are associated with. "Required Functionality"
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9510
        means it is available for use and no capabilities must be added to use it.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9511
        "Optional Functionality" means the agent must possess the capability
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9512
        before it can be used.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9513
        To possess a capability, the agent must
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9514
        <functionlink id="AddCapabilities">add the capability</functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9515
        "Optional Features" describe capabilities which,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9516
        if added, extend the feature set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9517
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9518
        The potentially available capabilities of each <jvmti/> implementation are different.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9519
        Depending on the implementation, a capability:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9520
        <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9521
          <li>may never be added</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9522
          <li>may be added in either the <code>OnLoad</code> or live phase in any environment</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9523
          <li>may be added only during the <code>OnLoad</code> phase</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9524
          <li>may be possessed by only one environment at a time</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9525
          <li>may be possessed by only one environment at a time, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9526
              and only during the <code>OnLoad</code> phase</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9527
          <li>and so on ...</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9528
        </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9529
      Frequently, the addition of a capability may incur a cost in execution speed, start up
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9530
      time, and/or memory footprint.  Note that the overhead of using a capability
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9531
      is completely different than the overhead of possessing a capability.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9532
      Take single stepping as an example. When single stepping is on (that
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9533
      is, when the event is enabled and thus actively sending events) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9534
      the overhead of sending and processing an event 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9535
      on each instruction is huge in any implementation. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9536
      However, the overhead of possessing the capability may be small or large, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9537
      depending on the implementation.  Also, when and if a capability is potentially
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9538
      available depends on the implementation.  Some examples:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9539
      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9540
	<li>One VM might perform all execution by compiling bytecodes into 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9541
	  native code and be unable to generate single step instructions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9542
	  In this implementation the capability can not be added.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9543
	<li>Another VM may be able to switch execution to a single stepping
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9544
	  interpreter at any time.  In this implementation, having the capability has no 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9545
	  overhead and could be added at any time.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9546
	<li>Yet another VM might be able to choose a bytecode compiling or single stepping capable interpreted
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9547
	  execution engine at start up, but be unable to switch between them.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9548
	  In this implementation the capability would need to be added 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9549
          during the <code>OnLoad</code> phase (before bytecode
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9550
	  execution begins) and would have a large impact on execution speed 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9551
	  even if single stepping was never used.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9552
	<li>Still another VM might be able to add an "is single stepping on" check
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9553
	  into compiled bytecodes or a generated interpreter.  Again in this implementation
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9554
	  the capability would need to be added during the <code>OnLoad</code> phase but the overhead (a test
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9555
	  and branch on each instruction) would be considerably less.</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9556
      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9557
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9558
      Each <jvmti/> <internallink id="environments">environment</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9559
      has its own set of capabilities.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9560
      Initially, that set is empty.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9561
      Any desired capability must be added.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9562
      If possible, capabilities should be added during the <code>OnLoad</code> phase.  For most 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9563
      virtual machines certain capabilities require special set up for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9564
      the virtual machine and this set up must happen
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9565
      during the <code>OnLoad</code> phase, before the virtual machine begins execution. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9566
      Once a capability is added, it can
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9567
      only be removed if explicitly relinquished by the environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9568
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9569
      The agent can, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9570
      <functionlink id="GetPotentialCapabilities">determine what
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9571
	capabilities this VM can potentially provide</functionlink>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9572
      <functionlink id="AddCapabilities">add the capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9573
	to be used</functionlink>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9574
      <functionlink id="RelinquishCapabilities">release capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9575
	which are no longer needed</functionlink>, and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9576
      <functionlink id="GetCapabilities">examine the currently available 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9577
	capabilities</functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9578
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9579
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9580
    <intro id="capabilityExamples" label="Capability Examples">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9581
      For example, a freshly started agent (in the <code>OnLoad</code> function)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9582
      wants to enable all possible capabilities.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9583
      Note that, in general, this is not advisable as the agent may suffer
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9584
      a performance penalty for functionality it is not using.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9585
      The code might look like this in C:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9586
      <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9587
	jvmtiCapabilities capa;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9588
	jvmtiError err;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9589
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9590
	err = (*jvmti)-&gt;GetPotentialCapabilities(jvmti, &amp;capa);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9591
	if (err == JVMTI_ERROR_NONE) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9592
	   err = (*jvmti)-&gt;AddCapabilities(jvmti, &amp;capa);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9593
      </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9594
      For example, if an  agent wants to check if it can get
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9595
      the bytecodes of a method (that is, it wants to check 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9596
      if it previously added this capability and has not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9597
      relinquished it), the code might 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9598
      look like this in C:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9599
      <example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9600
	jvmtiCapabilities capa;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9601
	jvmtiError err;
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9602
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9603
	err = (*jvmti)-&gt;GetCapabilities(jvmti, &amp;capa);
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9604
	if (err == JVMTI_ERROR_NONE) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9605
   	   if (capa.can_get_bytecodes) { ... } } 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9606
      </example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9607
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9608
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9609
    <capabilitiestypedef id="jvmtiCapabilities" label="The Capabilities Structure">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9610
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9611
        The functions in this category use this capabilities structure 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9612
        which contains boolean flags corresponding to each capability:
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9613
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9614
      <capabilityfield id="can_tag_objects">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9615
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9616
	  Can set and get tags, as described in the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9617
          <internallink id="Heap">Heap category</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9618
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9619
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9620
      <capabilityfield id="can_generate_field_modification_events">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9621
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9622
	  Can set watchpoints on field modification -
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9623
          <functionlink id="SetFieldModificationWatch"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9624
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9625
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9626
      <capabilityfield id="can_generate_field_access_events">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9627
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9628
	  Can set watchpoints on field access -
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9629
	  <functionlink id="SetFieldAccessWatch"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9630
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9631
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9632
      <capabilityfield id="can_get_bytecodes">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9633
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9634
	  Can get bytecodes of a method <functionlink id="GetBytecodes"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9635
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9636
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9637
      <capabilityfield id="can_get_synthetic_attribute">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9638
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9639
	  Can test if a field or method is synthetic - 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9640
          <functionlink id="IsFieldSynthetic"></functionlink> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9641
          <functionlink id="IsMethodSynthetic"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9642
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9643
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9644
      <capabilityfield id="can_get_owned_monitor_info">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9645
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9646
	  Can get information about ownership of monitors - 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9647
          <functionlink id="GetOwnedMonitorInfo"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9648
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9649
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9650
      <capabilityfield id="can_get_current_contended_monitor">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9651
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9652
	  Can <functionlink id="GetCurrentContendedMonitor"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9653
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9654
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9655
      <capabilityfield id="can_get_monitor_info">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9656
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9657
        Can <functionlink id="GetObjectMonitorUsage"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9658
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9659
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9660
      <capabilityfield id="can_pop_frame">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9661
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9662
	  Can pop frames off the stack - <functionlink id="PopFrame"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9663
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9664
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9665
      <capabilityfield id="can_redefine_classes">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9666
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9667
	  Can redefine classes with <functionlink id="RedefineClasses"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9668
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9669
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9670
      <capabilityfield id="can_signal_thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9671
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9672
	  Can send stop or interrupt to threads
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9673
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9674
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9675
      <capabilityfield id="can_get_source_file_name">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9676
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9677
	  Can get the source file name of a class
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9678
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9679
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9680
      <capabilityfield id="can_get_line_numbers">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9681
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9682
	  Can get the line number table of a method
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9683
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9684
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9685
      <capabilityfield id="can_get_source_debug_extension">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9686
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9687
	  Can get the source debug extension of a class
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9688
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9689
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9690
      <capabilityfield id="can_access_local_variables">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9691
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9692
	  Can set and get local variables
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9693
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9694
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9695
      <capabilityfield id="can_maintain_original_method_order">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9696
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9697
	  Can return methods in the order they occur in the class file
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9698
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9699
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9700
      <capabilityfield id="can_generate_single_step_events">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9701
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9702
	  Can get <eventlink id="SingleStep">single step</eventlink> events
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9703
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9704
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9705
      <capabilityfield id="can_generate_exception_events">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9706
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9707
	  Can get <eventlink id="Exception">exception thrown</eventlink> and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9708
            <eventlink id="ExceptionCatch">exception catch</eventlink> events
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9709
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9710
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9711
      <capabilityfield id="can_generate_frame_pop_events">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9712
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9713
	  Can <functionlink id="NotifyFramePop">set</functionlink> and thus get 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9714
            <eventlink id="FramePop"></eventlink> events
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9715
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9716
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9717
      <capabilityfield id="can_generate_breakpoint_events">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9718
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9719
	  Can <functionlink id="SetBreakpoint">set</functionlink> and thus get 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9720
            <eventlink id="Breakpoint"></eventlink> events
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9721
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9722
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9723
      <capabilityfield id="can_suspend">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9724
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9725
	  Can suspend and resume threads
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9726
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9727
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9728
      <capabilityfield id="can_redefine_any_class">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9729
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9730
          Can modify (retransform or redefine) any non-primitive non-array class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9731
          See <functionlink id="IsModifiableClass"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9732
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9733
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9734
      <capabilityfield id="can_get_current_thread_cpu_time">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9735
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9736
	  Can <functionlink id="GetCurrentThreadCpuTime">get</functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9737
	  current thread CPU time
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9738
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9739
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9740
      <capabilityfield id="can_get_thread_cpu_time">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9741
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9742
	  Can <functionlink id="GetThreadCpuTime">get</functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9743
	  thread CPU time
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9744
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9745
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9746
      <capabilityfield id="can_generate_method_entry_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9747
		       disp1="can_generate" disp2="_method_entry_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9748
		       >
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9749
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9750
	  Can generate method entry events on entering a method
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9751
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9752
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9753
      <capabilityfield id="can_generate_method_exit_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9754
		       disp1="can_generate" disp2="_method_exit_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9755
		       >
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9756
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9757
	  Can generate method exit events on leaving a method
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9758
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9759
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9760
      <capabilityfield id="can_generate_all_class_hook_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9761
		       disp1="can_generate" disp2="_all_class_hook_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9762
		       >
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9763
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9764
	  Can generate ClassFileLoadHook events for every loaded class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9765
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9766
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9767
      <capabilityfield id="can_generate_compiled_method_load_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9768
		       disp1="can_generate" disp2="_compiled_method_load_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9769
		       >
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9770
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9771
	  Can generate events when a method is compiled or unloaded
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9772
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9773
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9774
      <capabilityfield id="can_generate_monitor_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9775
		       disp1="can_generate" disp2="_monitor_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9776
		       >
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9777
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9778
	  Can generate events on monitor activity
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9779
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9780
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9781
      <capabilityfield id="can_generate_vm_object_alloc_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9782
		       disp1="can_generate" disp2="_vm_object_alloc_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9783
		       >
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9784
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9785
	  Can generate events on VM allocation of an object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9786
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9787
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9788
      <capabilityfield id="can_generate_native_method_bind_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9789
		       disp1="can_generate" disp2="_native_method_bind_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9790
		       >
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9791
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9792
	  Can generate events when a native method is bound to its
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9793
	  implementation
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9794
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9795
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9796
      <capabilityfield id="can_generate_garbage_collection_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9797
		       disp1="can_generate" disp2="_garbage_collection_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9798
		       >
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9799
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9800
	  Can generate events when garbage collection begins or ends
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9801
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9802
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9803
      <capabilityfield id="can_generate_object_free_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9804
		       disp1="can_generate" disp2="_object_free_events" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9805
		       >
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9806
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9807
	  Can generate events when the garbage collector frees an object
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9808
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9809
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9810
      <capabilityfield id="can_force_early_return" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9811
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9812
	  Can return early from a method, as described in the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9813
          <internallink id="ForceEarlyReturn">Force Early Return category</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9814
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9815
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9816
      <capabilityfield id="can_get_owned_monitor_stack_depth_info" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9817
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9818
	  Can get information about owned monitors with stack depth -
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9819
          <functionlink id="GetOwnedMonitorStackDepthInfo"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9820
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9821
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9822
      <capabilityfield id="can_get_constant_pool" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9823
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9824
	  Can get the constant pool of a class -
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9825
          <functionlink id="GetConstantPool"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9826
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9827
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9828
      <capabilityfield id="can_set_native_method_prefix" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9829
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9830
	  Can set prefix to be applied when native method cannot be resolved -
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9831
          <functionlink id="SetNativeMethodPrefix"/> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9832
          <functionlink id="SetNativeMethodPrefixes"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9833
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9834
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9835
      <capabilityfield id="can_retransform_classes" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9836
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9837
	  Can retransform classes with <functionlink id="RetransformClasses"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9838
          In addition to the restrictions imposed by the specific 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9839
          implementation on this capability (see the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9840
          <internallink id="capability">Capability</internallink> section),
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9841
          this capability must be set before the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9842
          <eventlink id="ClassFileLoadHook"/> event is enabled for the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9843
          first time in this environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9844
          An environment that possesses this capability at the time that 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9845
          <code>ClassFileLoadHook</code> is enabled for the first time is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9846
          said to be <i>retransformation capable</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9847
          An environment that does not possess this capability at the time that 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9848
          <code>ClassFileLoadHook</code> is enabled for the first time is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9849
          said to be <i>retransformation incapable</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9850
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9851
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9852
      <capabilityfield id="can_retransform_any_class" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9853
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9854
          <functionlink id="RetransformClasses"/> can be called on any class 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9855
          (<fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9856
          must also be set)
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9857
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9858
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9859
      <capabilityfield id="can_generate_resource_exhaustion_heap_events" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9860
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9861
          Can generate events when the VM is unable to allocate memory from 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9862
          the <tm>Java</tm> platform heap.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9863
          See <eventlink id="ResourceExhausted"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9864
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9865
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9866
      <capabilityfield id="can_generate_resource_exhaustion_threads_events" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9867
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9868
          Can generate events when the VM is unable to create a thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9869
          See <eventlink id="ResourceExhausted"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9870
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9871
      </capabilityfield>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9872
    </capabilitiestypedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9873
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9874
    <function id="GetPotentialCapabilities" jkernel="yes" phase="onload" num="140">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9875
      <synopsis>Get Potential Capabilities</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9876
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9877
        Returns via <paramlink id="capabilities_ptr"></paramlink> the <jvmti/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9878
        features that can potentially be possessed by this environment
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9879
	at this time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9880
	The returned capabilities differ from the complete set of capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9881
	implemented by the VM in two cases: another environment possesses 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9882
	capabilities that can only be possessed by one environment, or the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9883
	current <functionlink id="GetPhase">phase</functionlink> is live,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9884
	and certain capabilities can only be added during the <code>OnLoad</code> phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9885
        The <functionlink id="AddCapabilities"></functionlink> function
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9886
        may be used to set any or all or these capabilities.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9887
        Currently possessed capabilities are included.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9888
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9889
        Typically this function is used in the <code>OnLoad</code> function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9890
        Some virtual machines may allow a limited set of capabilities to be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9891
        added in the live phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9892
        In this case, the set of potentially available capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9893
        will likely differ from the <code>OnLoad</code> phase set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9894
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9895
        See the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9896
        <internallink id="capabilityExamples">Capability Examples</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9897
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9898
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9899
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9900
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9901
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9902
        <param id="capabilities_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9903
	  <outptr><struct>jvmtiCapabilities</struct></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9904
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9905
	    On return, points to the <jvmti/> capabilities that may be added.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9906
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9907
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9908
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9909
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9910
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9911
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9912
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9913
    <elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9914
    <function id="EstimateCostOfCapabilities" phase="onload" num="141">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9915
      <synopsis>Estimate Cost Of Capabilities</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9916
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9917
	<issue>There is strong opposition to this function.  The concern is
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9918
	  that it would be difficult or impossible to provide meaningful
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9919
	  numbers, as the amount of impact is conditional on many factors
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9920
	  that a single number could not represent.  There is doubt that
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9921
	  conditional implementations would be used or are even a good idea.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9922
	  The thought is that release documentation for the implementation
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9923
	  would be the best means of exposing this information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9924
	  Unless new arguments are presented, I intend to remove this 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9925
	  function in the next revision.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9926
	</issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9927
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9928
        Return via the <paramlink id="time_impact_ptr"></paramlink> and
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9929
        <paramlink id="space_impact_ptr"></paramlink> an estimate of the impact
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9930
        of adding the capabilities pointed to by
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9931
        <paramlink id="capabilities_ptr"></paramlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9932
        The returned estimates are in percentage of additional overhead, thus
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9933
        a time impact of 100 mean the application might run
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9934
        at half the speed.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9935
        The estimates are very rough approximations and are not guaranteed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9936
        Note also, that the estimates are of the impact of having the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9937
        capability available--when and if it is used the impact may be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9938
        much greater.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9939
        Estimates can be for a single capability or for a set of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9940
        capabilities.  Note that the costs are not necessarily additive,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9941
        adding support for one capability might make another available 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9942
        for free or conversely having two capabilities at once may 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9943
        have multiplicative impact.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9944
        Estimates are relative to the current set of capabilities -
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9945
        that is, how much more impact given the currently possessed capabilities.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9946
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9947
        Typically this function is used in the OnLoad function,
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9948
        some virtual machines may allow a limited set of capabilities to be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9949
        added in the live phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9950
        In this case, the set of potentially available capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9951
        will likely differ from the OnLoad phase set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9952
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9953
        See the
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9954
        <internallink id="capabilityExamples">Capability Examples</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9955
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9956
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9957
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9958
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9959
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9960
        <param id="capabilities_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9961
	  <inptr><struct>jvmtiCapabilities</struct></inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9962
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9963
	    points to the <jvmti/> capabilities to evaluate.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9964
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9965
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9966
        <param id="time_impact_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9967
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9968
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9969
	    On return, points to the estimated percentage increase in
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9970
	    run time if this capability was added.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9971
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9972
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9973
        <param id="space_impact_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9974
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9975
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9976
	    On return, points to the estimated percentage increase in
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9977
	    memory space used if this capability was added.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9978
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9979
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9980
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9981
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9982
        <error id="JVMTI_ERROR_NOT_AVAILABLE"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9983
          The desired capabilities are not even potentially available.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9984
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9985
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9986
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9987
    </elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9988
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9989
    <function id="AddCapabilities" jkernel="yes" phase="onload" num="142">
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9990
      <synopsis>Add Capabilities</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9991
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9992
        Set new capabilities by adding the capabilities 
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9993
        whose values are set to one (<code>1</code>) in
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9994
        <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9995
        All previous capabilities are retained.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9996
        Typically this function is used in the <code>OnLoad</code> function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9997
        Some virtual machines may allow a limited set of capabilities to be
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9998
        added in the live phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
  9999
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10000
        See the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10001
        <internallink id="capabilityExamples">Capability Examples</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10002
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10003
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10004
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10005
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10006
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10007
        <param id="capabilities_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10008
	  <inptr><struct>jvmtiCapabilities</struct></inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10009
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10010
	    Points to the <jvmti/> capabilities to add.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10011
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10012
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10013
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10014
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10015
        <error id="JVMTI_ERROR_NOT_AVAILABLE"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10016
          The desired capabilities are not even potentially available.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10017
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10018
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10019
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10020
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10021
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10022
    <function id="RelinquishCapabilities" phase="onload" num="143">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10023
      <synopsis>Relinquish Capabilities</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10024
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10025
        Relinquish the capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10026
        whose values are set to one (<code>1</code>) in
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10027
        <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10028
	Some implementations may allow only one environment to have a capability
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10029
	(see the <internallink id="capability">capability introduction</internallink>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10030
	This function releases capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10031
	so that they may be used by other agents.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10032
        All other capabilities are retained.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10033
        The capability will no longer be present in <functionlink id="GetCapabilities"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10034
	Attempting to relinquish a capability that the agent does not possess is not an error.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10035
          <issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10036
            It is possible for the agent to be actively using capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10037
            which are being relinquished.  For example, a thread is currently
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10038
            suspended and can_suspend is being relinquished or an event is currently
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10039
            enabled and can_generate_whatever is being relinquished.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10040
            There are three possible ways we could spec this:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10041
            <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10042
              <li>relinquish automatically releases them</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10043
              <li>relinquish checks and returns some error code if held</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10044
              <li>it is the agent's responsibility and it is not checked</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10045
            </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10046
            One of these should be chosen.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10047
          </issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10048
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10049
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10050
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10051
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10052
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10053
        <param id="capabilities_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10054
	  <inptr><struct>jvmtiCapabilities</struct></inptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10055
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10056
	    Points to the <jvmti/> capabilities to relinquish.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10057
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10058
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10059
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10060
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10061
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10062
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10063
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10064
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10065
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10066
    <function id="GetCapabilities" jkernel="yes" phase="any" num="89">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10067
      <synopsis>Get Capabilities</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10068
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10069
          Returns via <paramlink id="capabilities_ptr"></paramlink> the optional <jvmti/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10070
          features which this environment currently possesses.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10071
          Each possessed capability is indicated by a one (<code>1</code>) in the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10072
          corresponding field of the <internallink id="jvmtiCapabilities">capabilities
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10073
          structure</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10074
          An environment does not possess a capability unless it has been successfully added with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10075
          <functionlink id="AddCapabilities"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10076
          An environment only loses possession of a capability if it has been relinquished with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10077
          <functionlink id="RelinquishCapabilities"/>. Thus, this function returns the net result
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10078
          of the <code>AddCapabilities</code> and <code>RelinquishCapabilities</code> calls which
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10079
          have been made.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10080
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10081
          See the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10082
          <internallink id="capabilityExamples">Capability Examples</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10083
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10084
      <origin>jvmdiClone</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10085
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10086
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10087
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10088
        <param id="capabilities_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10089
	  <outptr><struct>jvmtiCapabilities</struct></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10090
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10091
	    On return, points to the <jvmti/> capabilities.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10092
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10093
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10094
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10095
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10096
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10097
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10098
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10099
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10100
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10101
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10102
  <category id="timers" label="Timers">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10103
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10104
      <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10105
	These functions provide timing information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10106
	The resolution at which the time is updated is not specified. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10107
	They provides nanosecond precision, but not necessarily nanosecond accuracy. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10108
	Details about the timers, such as their maximum values, can be accessed with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10109
	the timer information functions.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10110
      </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10111
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10112
      <typedef id="jvmtiTimerInfo" label="Timer Info">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10113
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10114
          The information function for each timer returns this data structure.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10115
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10116
	<field id="max_value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10117
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10118
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10119
	      The maximum value the timer can reach.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10120
	      After this value is reached the timer wraps back to zero.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10121
              This is an unsigned value.  If tested or printed as a jlong (signed value)
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10122
              it may appear to be a negative number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10123
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10124
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10125
	<field id="may_skip_forward">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10126
	  <jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10127
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10128
	    If true, the timer can be externally adjusted and as a result skip forward.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10129
	    If false, the timer value will never increase faster than real time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10130
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10131
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10132
	<field id="may_skip_backward">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10133
	  <jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10134
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10135
	    If true, the timer can be externally adjusted and as a result skip backward.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10136
	    If false, the timer value will be monotonically increasing.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10137
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10138
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10139
	<field id="kind">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10140
	  <enum>jvmtiTimerKind</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10141
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10142
	    The kind of timer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10143
            On a platform that does not distinguish between user and system time, <datalink 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10144
                 id="JVMTI_TIMER_TOTAL_CPU"><code>JVMTI_TIMER_TOTAL_CPU</code></datalink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10145
            is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10146
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10147
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10148
	<field id="reserved1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10149
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10150
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10151
	      Reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10152
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10153
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10154
	<field id="reserved2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10155
	  <jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10156
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10157
	      Reserved for future use.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10158
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10159
	</field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10160
      </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10161
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10162
      <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10163
	Where the timer kind is --
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10164
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10165
        <constants id="jvmtiTimerKind" label="Timer Kinds" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10166
          <constant id="JVMTI_TIMER_USER_CPU" num="30">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10167
            CPU time that a thread is in user mode.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10168
          </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10169
          <constant id="JVMTI_TIMER_TOTAL_CPU" num="31">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10170
            CPU time that a thread is in user or system mode.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10171
          </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10172
          <constant id="JVMTI_TIMER_ELAPSED" num="32">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10173
            Elapsed time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10174
          </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10175
        </constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10176
      </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10177
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10178
    <function id="GetCurrentThreadCpuTimerInfo" callbacksafe="safe"  impl="innative notrace" phase="start" num="134">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10179
      <synopsis>Get Current Thread CPU Timer Information</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10180
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10181
	Get information about the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10182
        <functionlink id="GetCurrentThreadCpuTime"/> timer. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10183
	The fields of the <datalink id="jvmtiTimerInfo"/> structure 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10184
	are filled in with details about the timer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10185
        This information is specific to the platform and the implementation of
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10186
        <functionlink id="GetCurrentThreadCpuTime"/> and thus 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10187
        does not vary by thread nor does it vary
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10188
        during a particular invocation of the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10189
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10190
        Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10191
        and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10192
        returned by <code>GetCurrentThreadCpuTimerInfo</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10193
        and <functionlink id="GetThreadCpuTimerInfo"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10194
        may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10195
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10196
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10197
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10198
	<required id="can_get_current_thread_cpu_time">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10199
	    Can get current thread CPU time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10200
	</required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10201
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10202
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10203
	<param id="info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10204
	  <outptr><struct>jvmtiTimerInfo</struct></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10205
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10206
	    On return, filled with information describing the time
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10207
	    returned by <functionlink id="GetCurrentThreadCpuTime"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10208
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10209
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10210
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10211
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10212
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10213
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10214
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10215
    <function id="GetCurrentThreadCpuTime" callbacksafe="safe" impl="innative notrace" phase="start" num="135">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10216
      <synopsis>Get Current Thread CPU Time</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10217
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10218
            Return the CPU time utilized by the current thread.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10219
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10220
            Note that the <functionlink id="GetThreadCpuTime"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10221
            function provides CPU time for any thread, including
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10222
            the current thread. <code>GetCurrentThreadCpuTime</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10223
            exists to support platforms which cannot
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10224
            supply CPU time for threads other than the current 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10225
            thread or which have more accurate information for
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10226
            the current thread (see 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10227
            <functionlink id="GetCurrentThreadCpuTimerInfo"/> vs
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10228
            <functionlink id="GetThreadCpuTimerInfo"/>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10229
            On many platforms this call will be equivalent to:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10230
<example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10231
  GetThreadCpuTime(env, NULL, nanos_ptr)
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10232
</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10233
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10234
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10235
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10236
	<required id="can_get_current_thread_cpu_time">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10237
	    Can get current thread CPU time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10238
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10239
	    If this capability is enabled after threads have started, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10240
	    the implementation may choose any time up
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10241
	    to and including the time that the capability is enabled 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10242
	    as the point where CPU time collection starts.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10243
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10244
            This capability must be potentially available on any 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10245
            platform where 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10246
            <internallink id="jvmtiCapabilities.can_get_thread_cpu_time"><code>can_get_thread_cpu_time</code></internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10247
            is potentially available.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10248
	</required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10249
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10250
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10251
        <param id="nanos_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10252
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10253
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10254
	    On return, points to the CPU time used by this thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10255
	    in nanoseconds.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10256
            This is an unsigned value.  If tested or printed as a jlong (signed value)
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10257
            it may appear to be a negative number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10258
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10259
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10260
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10261
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10262
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10263
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10264
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10265
    <function id="GetThreadCpuTimerInfo" num="136">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10266
      <synopsis>Get Thread CPU Timer Information</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10267
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10268
	Get information about the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10269
        <functionlink id="GetThreadCpuTime"/> timer. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10270
	The fields of the <datalink id="jvmtiTimerInfo"/> structure 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10271
	are filled in with details about the timer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10272
        This information is specific to the platform and the implementation of
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10273
        <functionlink id="GetThreadCpuTime"/> and thus 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10274
        does not vary by thread nor does it vary
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10275
        during a particular invocation of the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10276
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10277
        Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10278
        and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10279
        returned by <functionlink id="GetCurrentThreadCpuTimerInfo"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10280
        and <code>GetThreadCpuTimerInfo</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10281
        may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10282
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10283
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10284
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10285
	<required id="can_get_thread_cpu_time">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10286
	    Can get thread CPU time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10287
	</required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10288
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10289
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10290
	<param id="info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10291
	  <outptr><struct>jvmtiTimerInfo</struct></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10292
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10293
	    On return, filled with information describing the time
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10294
	    returned by <functionlink id="GetThreadCpuTime"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10295
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10296
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10297
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10298
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10299
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10300
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10301
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10302
    <function id="GetThreadCpuTime" num="137">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10303
      <synopsis>Get Thread CPU Time</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10304
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10305
          Return the CPU time utilized by the specified thread. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10306
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10307
	  Get information about this timer with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10308
          <functionlink id="GetThreadCpuTimerInfo"/>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10309
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10310
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10311
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10312
	<required id="can_get_thread_cpu_time">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10313
	    Can get thread CPU time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10314
            <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10315
	    If this capability is enabled after threads have started, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10316
	    the implementation may choose any time up
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10317
	    to and including the time that the capability is enabled 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10318
	    as the point where CPU time collection starts.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10319
	</required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10320
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10321
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10322
	<param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10323
	  <jthread null="current"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10324
	    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10325
	      The thread to query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10326
	    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10327
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10328
        <param id="nanos_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10329
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10330
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10331
	    On return, points to the CPU time used by the specified thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10332
	    in nanoseconds.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10333
            This is an unsigned value.  If tested or printed as a jlong (signed value)
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10334
            it may appear to be a negative number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10335
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10336
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10337
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10338
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10339
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10340
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10341
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10342
    <function id="GetTimerInfo" phase="any" callbacksafe="safe" num="138">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10343
      <synopsis>Get Timer Information</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10344
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10345
	Get information about the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10346
        <functionlink id="GetTime"/> timer. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10347
	The fields of the <datalink id="jvmtiTimerInfo"/> structure 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10348
	are filled in with details about the timer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10349
        This information will not change during a particular invocation of the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10350
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10351
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10352
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10353
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10354
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10355
	<param id="info_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10356
	  <outptr><struct>jvmtiTimerInfo</struct></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10357
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10358
	    On return, filled with information describing the time
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10359
	    returned by <functionlink id="GetTime"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10360
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10361
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10362
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10363
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10364
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10365
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10366
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10367
    <function id="GetTime" phase="any" callbacksafe="safe" num="139">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10368
      <synopsis>Get Time</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10369
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10370
          Return the current value of the system timer, in nanoseconds. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10371
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10372
          The value returned represents nanoseconds since some fixed but
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10373
          arbitrary time (perhaps in the future, so values may be
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10374
          negative).  This function provides nanosecond precision, but not
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10375
          necessarily nanosecond accuracy. No guarantees are made about
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10376
          how frequently values change.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10377
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10378
	  Get information about this timer with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10379
          <functionlink id="GetTimerInfo"/>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10380
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10381
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10382
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10383
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10384
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10385
        <param id="nanos_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10386
	  <outptr><jlong/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10387
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10388
	    On return, points to the time in nanoseconds.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10389
            This is an unsigned value.  If tested or printed as a jlong (signed value)
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10390
            it may appear to be a negative number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10391
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10392
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10393
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10394
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10395
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10396
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10397
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10398
    <function id="GetAvailableProcessors" phase="any" num="144">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10399
      <synopsis>Get Available Processors</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10400
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10401
          Returns the number of processors available to the Java virtual machine.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10402
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10403
          This value may change during a particular invocation of the virtual machine. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10404
          Applications that are sensitive to the number of available processors should
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10405
          therefore occasionally poll this property.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10406
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10407
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10408
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10409
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10410
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10411
        <param id="processor_count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10412
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10413
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10414
	    On return, points to the maximum number of processors available to the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10415
            virtual machine; never smaller than one.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10416
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10417
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10418
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10419
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10420
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10421
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10422
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10423
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10424
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10425
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10426
  <category id="classLoaderSearch" label="Class Loader Search">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10427
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10428
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10429
      These functions allow the agent to add to the locations that a class loader searches for a class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10430
      This is useful for installing instrumentation under the correct class loader.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10431
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10432
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10433
    <function id="AddToBootstrapClassLoaderSearch" jkernel="yes" phase="onload" num="149">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10434
      <synopsis>Add To Bootstrap Class Loader Search</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10435
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10436
          This function can be used to cause instrumentation classes to be defined by the 
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
 10437
          bootstrap class loader. See <vmspec chapter="5.3.1"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10438
          After the bootstrap
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10439
	  class loader unsuccessfully searches for a class, the specified platform-dependent 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10440
	  search path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10441
	  the <paramlink id="segment"/>. This function may be called multiple times to add multiple segments, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10442
	  the segments will be searched in the order that this function was called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10443
	  <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10444
	  In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10445
	  search path segment to be searched after the bootstrap class loader unsuccessfully searches
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10446
	  for a class. The segment is typically a directory or JAR file.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10447
	  <p/>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10448
	  In the live phase the <paramlink id="segment"/> may be used to specify any platform-dependent
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 10449
	  path to a <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html">
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10450
	  JAR file</externallink>. The agent should take care that the JAR file does not
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10451
          contain any classes or resources other than those to be defined by the bootstrap
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10452
          class loader for the purposes of instrumentation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10453
          <p/>
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
 10454
          <vmspec/> specifies that a subsequent attempt to resolve a symbolic
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10455
          reference that the Java virtual machine has previously unsuccessfully attempted
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10456
          to resolve always fails with the same error that was thrown as a result of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10457
          initial resolution attempt. Consequently, if the JAR file contains an entry
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10458
          that corresponds to a class for which the Java virtual machine has
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10459
          unsuccessfully attempted to resolve a reference, then subsequent attempts to
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10460
          resolve that reference will fail with the same error as the initial attempt.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10461
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10462
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10463
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10464
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10465
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10466
        <param id="segment">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10467
	  <inbuf><char/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10468
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10469
	    The platform-dependent search path segment, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10470
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10471
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10472
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10473
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10474
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10475
        <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">   
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10476
          <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10477
           existing JAR file is an invalid path.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10478
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10479
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10480
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10481
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10482
    <function id="AddToSystemClassLoaderSearch" jkernel="yes" phase="onload" num="151" since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10483
      <synopsis>Add To System Class Loader Search</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10484
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10485
	  This function can be used to cause instrumentation classes to be
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
 10486
	  defined by the system class loader. See <vmspec chapter="5.3.2"/>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10487
	  After the class loader unsuccessfully searches for a class, the specified platform-dependent search 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10488
	  path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10489
	  <paramlink id="segment"/>. This function may be called multiple times to add multiple segments, the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10490
	  segments will be searched in the order that this function was called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10491
	  <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10492
	  In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10493
	  search path segment to be searched after the system class loader unsuccessfully searches
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10494
	  for a class. The segment is typically a directory or JAR file.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10495
	  <p/>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10496
	  In the live phase the <paramlink id="segment"/> is a platform-dependent path to a <externallink 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 10497
	  id="http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html">JAR file</externallink> to be
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10498
	  searched after the system class loader unsuccessfully searches for a class. The agent should
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10499
          take care that the JAR file does not contain any classes or resources other than those to be
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10500
          defined by the system class loader for the purposes of instrumentation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10501
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10502
	  In the live phase the system class loader supports adding a JAR file to be searched if
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10503
          the system class loader implements a method name <code>appendToClassPathForInstrumentation</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10504
	  which takes a single parameter of type <code>java.lang.String</code>. The method is not required 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10505
	  to have <code>public</code> access. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10506
	  <p/>
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
 10507
          <vmspec/> specifies that a subsequent attempt to resolve a symbolic
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10508
          reference that the Java virtual machine has previously unsuccessfully attempted
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10509
          to resolve always fails with the same error that was thrown as a result of the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10510
          initial resolution attempt. Consequently, if the JAR file contains an entry
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10511
          that corresponds to a class for which the Java virtual machine has
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10512
          unsuccessfully attempted to resolve a reference, then subsequent attempts to
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10513
          resolve that reference will fail with the same error as the initial attempt.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10514
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10515
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10516
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10517
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10518
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10519
        <param id="segment">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10520
          <inbuf><char/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10521
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10522
            The platform-dependent search path segment, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10523
            <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10524
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10525
        </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10526
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10527
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10528
	<error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10529
          <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10530
           existing JAR file is an invalid path.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10531
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10532
	<error id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10533
	  Operation not supported by the system class loader.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10534
	</error>                                                                                         
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10535
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10536
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10537
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10538
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10539
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10540
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10541
  <category id="props" label="System Properties">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10542
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10543
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10544
      These functions get and set system properties.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10545
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10546
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10547
    <function id="GetSystemProperties" phase="onload" num="130">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10548
      <synopsis>Get System Properties</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10549
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10550
        The list of VM system property keys which may be used with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10551
	<functionlink id="GetSystemProperty"/> is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10552
        It is strongly recommended that virtual machines provide the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10553
        following property keys:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10554
        <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10555
          <li><code>java.vm.vendor</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10556
          <li><code>java.vm.version</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10557
          <li><code>java.vm.name</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10558
          <li><code>java.vm.info</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10559
          <li><code>java.library.path</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10560
          <li><code>java.class.path</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10561
        </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10562
        Provides access to system properties defined by and used
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10563
        by the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10564
        Properties set on the command-line are included.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10565
	This allows getting and setting of these properties 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10566
        before the VM even begins executing bytecodes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10567
	Since this is a VM view of system properties, the set of available 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10568
        properties will usually be different than that
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10569
	in <code>java.lang.System.getProperties</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10570
        JNI method invocation may be used to access 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10571
        <code>java.lang.System.getProperties</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10572
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10573
        The set of properties may grow during execution.	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10574
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10575
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10576
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10577
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10578
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10579
        <param id="count_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10580
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10581
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10582
	    On return, points to the number of property keys returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10583
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10584
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10585
        <param id="property_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10586
	  <allocallocbuf outcount="count_ptr"><char/></allocallocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10587
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10588
	    On return, points to an array of property keys, encoded as 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10589
	    <internallink id="mUTF">modified UTF-8</internallink> strings.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10590
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10591
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10592
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10593
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10594
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10595
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10596
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10597
    <function id="GetSystemProperty" phase="onload" num="131">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10598
      <synopsis>Get System Property</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10599
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10600
        Return a VM system property value given the property key.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10601
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10602
	The function <functionlink id="GetSystemProperties"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10603
	returns the set of property keys which may be used.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10604
        The properties which can be retrieved may grow during
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10605
	execution.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10606
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10607
	Since this is a VM view of system properties, the values 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10608
        of properties may differ from that returned by 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10609
	<code>java.lang.System.getProperty(String)</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10610
        A typical VM might copy the values of the VM system 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10611
        properties into the <code>Properties</code> held by
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10612
	<code>java.lang.System</code> during the initialization
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10613
        of that class. Thereafter any changes to the VM system
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10614
        properties (with <functionlink id="SetSystemProperty"/>) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10615
        or the <code>java.lang.System</code> system properties
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10616
        (with <code>java.lang.System.setProperty(String,String)</code>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10617
        would cause the values to diverge.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10618
        JNI method invocation may be used to access 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10619
        <code>java.lang.System.getProperty(String)</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10620
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10621
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10622
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10623
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10624
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10625
        <param id="property">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10626
	  <inbuf><char/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10627
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10628
	    The key of the property to retrieve, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10629
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10630
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10631
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10632
        <param id="value_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10633
	  <allocbuf><char/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10634
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10635
	    On return, points to the property value, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10636
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10637
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10638
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10639
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10640
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10641
        <error id="JVMTI_ERROR_NOT_AVAILABLE"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10642
          This property is not available.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10643
	  Use <functionlink id="GetSystemProperties"/> to find available properties.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10644
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10645
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10646
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10647
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10648
    <function id="SetSystemProperty" phase="onloadOnly" num="132">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10649
      <synopsis>Set System Property</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10650
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10651
        Set a VM system property value.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10652
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10653
	The function <functionlink id="GetSystemProperties"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10654
	returns the set of property keys, some of these may be settable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10655
        See <functionlink id="GetSystemProperty"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10656
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10657
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10658
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10659
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10660
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10661
        <param id="property">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10662
	  <inbuf><char/></inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10663
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10664
	    The key of the property, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10665
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10666
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10667
	</param>
7724
a92d706dbdd5 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 7444
diff changeset
 10668
        <param id="value_ptr">
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10669
	  <inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10670
	    <char/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10671
	    <nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10672
	      do not set the value, but return <errorlink id="JVMTI_ERROR_NOT_AVAILABLE"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10673
	      if the property is not writeable
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10674
	    </nullok>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10675
	  </inbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10676
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10677
	    The property value to set, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10678
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10679
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10680
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10681
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10682
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10683
        <error id="JVMTI_ERROR_NOT_AVAILABLE"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10684
          This property is not available or is not writeable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10685
        </error>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10686
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10687
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10688
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10689
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10690
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10691
  <category id="general" label="General">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10692
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10693
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10694
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10695
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10696
    <function id="GetPhase" jkernel="yes" phase="any" num="133">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10697
      <synopsis>Get Phase</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10698
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10699
          Return the current phase of VM execution.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10700
          The phases proceed in sequence:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10701
          <constants id="jvmtiPhase" label="Phases of execution" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10702
            <constant id="JVMTI_PHASE_ONLOAD" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10703
              <code>OnLoad</code> phase: while in the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10704
              <internallink id="onload"><code>Agent_OnLoad</code></internallink> function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10705
            </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10706
            <constant id="JVMTI_PHASE_PRIMORDIAL" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10707
              Primordial phase: between return from <code>Agent_OnLoad</code> and the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10708
              <code>VMStart</code> event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10709
            </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10710
            <constant id="JVMTI_PHASE_START" num="6">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10711
              Start phase: when the <eventlink id="VMStart"><code>VMStart</code></eventlink> event 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10712
              is sent and until the <code>VMInit</code> event is sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10713
            </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10714
            <constant id="JVMTI_PHASE_LIVE" num="4">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10715
              Live phase: when the <eventlink id="VMInit"><code>VMInit</code></eventlink> event is sent
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10716
              and until the <eventlink id="VMDeath"></eventlink> event returns.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10717
            </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10718
            <constant id="JVMTI_PHASE_DEAD" num="8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10719
              Dead phase: after the <eventlink id="VMDeath"></eventlink> event returns or after
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10720
              start-up failure.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10721
            </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10722
          </constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10723
          In the case of start-up failure the VM will proceed directly to the dead
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10724
          phase skipping intermediate phases and neither a <code>VMInit</code> nor
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10725
          <code>VMDeath</code> event will be sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10726
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10727
          Most <jvmti/> functions operate only in the live phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10728
          The following functions operate in either the <code>OnLoad</code> or live phases:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10729
          <functionphaselist phase="onload"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10730
          The following functions operate in only the <code>OnLoad</code> phase:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10731
          <functionphaselist phase="onloadOnly"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10732
          The following functions operate in the start or live phases:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10733
          <functionphaselist phase="start"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10734
          The following functions operate in any phase:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10735
          <functionphaselist phase="any"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10736
          JNI functions (except the Invocation API) must only be used in the start or live phases.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10737
          <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10738
          Most <jvmti/> events are sent only in the live phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10739
          The following events operate in others phases:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10740
          <eventphaselist phase="start"/>          
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10741
          <eventphaselist phase="any"/>          
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10742
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10743
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10744
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10745
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10746
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10747
        <param id="phase_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10748
	  <outptr><enum>jvmtiPhase</enum></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10749
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10750
	    On return, points to the phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10751
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10752
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10753
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10754
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10755
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10756
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10757
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10758
    <function id="DisposeEnvironment" jkernel="yes" phase="any" num="127">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10759
      <synopsis>Dispose Environment</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10760
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10761
        Shutdown a <jvmti/> connection created with JNI <code>GetEnv</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10762
        (see <internallink id="environments"><jvmti/> Environments</internallink>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10763
        Dispose of any resources held by the environment.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10764
        <issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10765
	    What resources are reclaimed? What is undone?
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10766
	    Breakpoints,watchpoints removed?
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10767
	</issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10768
        Threads suspended by this environment are not resumed by this call,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10769
        this must be done explicitly by the agent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10770
        Memory allocated by this environment via calls to <jvmti/> functions
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10771
        is not released, this can be done explicitly by the agent
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10772
        by calling <functionlink id="Deallocate"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10773
        Raw monitors created by this environment are not destroyed, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10774
        this can be done explicitly by the agent
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10775
        by calling <functionlink id="DestroyRawMonitor"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10776
        The state of threads waiting on raw monitors created by this environment
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10777
        are not affected.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10778
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10779
        Any <functionlink id="SetNativeMethodPrefix">native method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10780
        prefixes</functionlink> for this environment will be unset;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10781
        the agent must remove any prefixed native methods before
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10782
        dispose is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10783
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10784
        Any <internallink id="capability">capabilities</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10785
        held by this environment are relinquished.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10786
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10787
        Events enabled by this environment will no longer be sent, however
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10788
        event handlers currently running will continue to run.  Caution must
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10789
        be exercised in the design of event handlers whose environment may
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10790
        be disposed and thus become invalid during their execution.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10791
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10792
        This environment may not be used after this call.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10793
        This call returns to the caller.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10794
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10795
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10796
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10797
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10798
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10799
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10800
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10801
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10802
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10803
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10804
    <function id="SetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="148">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10805
      <synopsis>Set Environment Local Storage</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10806
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10807
	The VM stores a pointer value associated with each environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10808
	This pointer value is called <i>environment-local storage</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10809
        This value is <code>NULL</code> unless set with this function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10810
	Agents can allocate memory in which they store environment specific
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10811
        information. By setting environment-local storage it can then be
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10812
	accessed with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10813
	<functionlink id="GetEnvironmentLocalStorage"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10814
	<p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10815
        Called by the agent to set the value of the <jvmti/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10816
        environment-local storage. <jvmti/> supplies to the agent a pointer-size
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10817
        environment-local storage that can be used to record per-environment
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10818
        information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10819
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10820
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10821
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10822
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10823
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10824
        <param id="data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10825
	  <inbuf> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10826
	    <void/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10827
	    <nullok>value is set to <code>NULL</code></nullok> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10828
	  </inbuf> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10829
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10830
	    The value to be entered into the environment-local storage.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10831
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10832
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10833
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10834
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10835
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10836
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10837
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10838
    <function id="GetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="147">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10839
      <synopsis>Get Environment Local Storage</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10840
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10841
        Called by the agent to get the value of the <jvmti/> environment-local
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10842
        storage. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10843
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10844
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10845
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10846
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10847
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10848
        <param id="data_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10849
	  <agentbuf><void/></agentbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10850
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10851
	    Pointer through which the value of the environment local 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10852
	    storage is returned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10853
	    If environment-local storage has not been set with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10854
	    <functionlink id="SetEnvironmentLocalStorage"></functionlink> returned 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10855
	    pointer is <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10856
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10857
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10858
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10859
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10860
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10861
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10862
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10863
    <function id="GetVersionNumber" jkernel="yes" phase="any" num="88">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10864
      <synopsis>Get Version Number</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10865
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10866
        Return the <jvmti/> version via <code>version_ptr</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10867
        The return value is the version identifier. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10868
        The version identifier includes major, minor and micro
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10869
        version as well as the interface type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10870
	<constants id="jvmtiVersionInterfaceTypes" label="Version Interface Types" kind="bits">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10871
	  <constant id="JVMTI_VERSION_INTERFACE_JNI" num="0x00000000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10872
	    Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for JNI.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10873
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10874
	  <constant id="JVMTI_VERSION_INTERFACE_JVMTI" num="0x30000000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10875
	    Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for <jvmti/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10876
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10877
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10878
	<constants id="jvmtiVersionMasks" label="Version Masks" kind="bits">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10879
	  <constant id="JVMTI_VERSION_MASK_INTERFACE_TYPE" num="0x70000000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10880
	    Mask to extract interface type.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10881
	    The value of the version returned by this function masked with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10882
	    <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> is always
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10883
            <code>JVMTI_VERSION_INTERFACE_JVMTI</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10884
            since this is a <jvmti/> function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10885
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10886
	  <constant id="JVMTI_VERSION_MASK_MAJOR" num="0x0FFF0000">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10887
	    Mask to extract major version number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10888
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10889
	  <constant id="JVMTI_VERSION_MASK_MINOR" num="0x0000FF00">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10890
	    Mask to extract minor version number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10891
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10892
	  <constant id="JVMTI_VERSION_MASK_MICRO" num="0x000000FF">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10893
	    Mask to extract micro version number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10894
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10895
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10896
	<constants id="jvmtiVersionShifts" label="Version Shifts" kind="bits">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10897
	  <constant id="JVMTI_VERSION_SHIFT_MAJOR" num="16">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10898
	    Shift to extract major version number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10899
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10900
	  <constant id="JVMTI_VERSION_SHIFT_MINOR" num="8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10901
	    Shift to extract minor version number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10902
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10903
	  <constant id="JVMTI_VERSION_SHIFT_MICRO" num="0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10904
	    Shift to extract micro version number.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10905
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10906
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10907
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10908
      <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10909
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10910
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10911
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10912
        <param id="version_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10913
	  <outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10914
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10915
	    On return, points to the <jvmti/> version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10916
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10917
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10918
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10919
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10920
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10921
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10922
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10923
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10924
    <function id="GetErrorName" phase="any" num="128">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10925
      <synopsis>Get Error Name</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10926
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10927
        Return the symbolic name for an 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10928
          <internallink id="ErrorSection">error code</internallink>.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10929
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10930
	For example 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10931
        <code>GetErrorName(env, JVMTI_ERROR_NONE, &amp;err_name)</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10932
        would return in <code>err_name</code> the string
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10933
        <code>"JVMTI_ERROR_NONE"</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10934
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10935
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10936
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10937
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10938
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10939
        <param id="error">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10940
	  <enum>jvmtiError</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10941
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10942
	    The error code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10943
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10944
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10945
        <param id="name_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10946
	  <allocbuf><char/></allocbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10947
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10948
	    On return, points to the error name.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10949
            The name is encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10950
	    <internallink id="mUTF">modified UTF-8</internallink> string,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10951
            but is restricted to the ASCII subset.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10952
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10953
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10954
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10955
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10956
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10957
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10958
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10959
    <function id="SetVerboseFlag" phase="any" num="150">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10960
      <synopsis>Set Verbose Flag</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10961
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10962
	<constants id="jvmtiVerboseFlag" label="Verbose Flag Enumeration" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10963
	  <constant id="JVMTI_VERBOSE_OTHER" num="0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10964
	    Verbose output other than the below.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10965
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10966
	  <constant id="JVMTI_VERBOSE_GC" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10967
	    Verbose garbage collector output, like that specified with <code>-verbose:gc</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10968
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10969
	  <constant id="JVMTI_VERBOSE_CLASS" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10970
	    Verbose class loading output, like that specified with <code>-verbose:class</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10971
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10972
	  <constant id="JVMTI_VERBOSE_JNI" num="4">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10973
	    Verbose JNI output, like that specified with <code>-verbose:jni</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10974
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10975
        </constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10976
	Control verbose output.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10977
	This is the output which typically is sent to <code>stderr</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10978
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10979
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10980
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10981
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10982
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10983
        <param id="flag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10984
	  <enum>jvmtiVerboseFlag</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10985
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10986
	    Which verbose flag to set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10987
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10988
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10989
        <param id="value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10990
	  <jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10991
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10992
	    New value of the flag.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10993
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10994
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10995
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10996
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10997
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10998
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 10999
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11000
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11001
    <function id="GetJLocationFormat" phase="any" num="129">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11002
      <synopsis>Get JLocation Format</synopsis>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11003
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11004
        Although the greatest functionality is achieved with location information
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11005
        referencing the virtual machine bytecode index, the definition of
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11006
        <code>jlocation</code> has intentionally been left unconstrained to allow VM 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11007
        implementations that do not have this information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11008
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11009
        This function describes the representation of <code>jlocation</code> used in this VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11010
        If the returned format is <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11011
        <code>jlocation</code>s can
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11012
        be used as in indices into the array returned by
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11013
        <functionlink id="GetBytecodes"></functionlink>.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11014
	<constants id="jvmtiJlocationFormat" label="JLocation Format Enumeration" kind="enum">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11015
	  <constant id="JVMTI_JLOCATION_JVMBCI" num="1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11016
	    <code>jlocation</code> values represent virtual machine 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11017
	    bytecode indices--that is, offsets into the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11018
	    virtual machine code for a method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11019
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11020
	  <constant id="JVMTI_JLOCATION_MACHINEPC" num="2">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11021
	    <code>jlocation</code> values represent native machine
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11022
	    program counter values.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11023
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11024
	  <constant id="JVMTI_JLOCATION_OTHER" num="0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11025
	    <code>jlocation</code> values have some other representation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11026
	  </constant>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11027
	</constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11028
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11029
      <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11030
      <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11031
      </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11032
      <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11033
        <param id="format_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11034
	  <outptr><enum>jvmtiJlocationFormat</enum></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11035
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11036
	    On return, points to the format identifier for <code>jlocation</code> values.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11037
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11038
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11039
      </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11040
      <errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11041
      </errors>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11042
    </function>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11043
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11044
  </category>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11045
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11046
</functionsection>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11047
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11048
<errorsection label="Error Reference">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11049
  <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11050
    Every <jvmti/> function returns a <b><code>jvmtiError</code></b> error code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11051
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11052
    It is the responsibility of the agent to call <jvmti/> functions with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11053
    valid parameters and in the proper context (calling thread is attached,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11054
    phase is correct, etc.).  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11055
    Detecting some error conditions may be difficult, inefficient, or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11056
    impossible for an implementation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11057
    The errors listed in 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11058
    <internallink id="reqerrors">Function Specific Required Errors</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11059
    must be detected by the implementation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11060
    All other errors represent the recommended response to the error
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11061
    condition. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11062
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11063
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11064
  <errorcategory id="universal-error" label="Universal Errors">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11065
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11066
      The following errors may be returned by any function
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11067
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11068
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11069
    <errorid id="JVMTI_ERROR_NONE" num="0">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11070
      No error has occurred.  This is the error code that is returned
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11071
      on successful completion of the function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11072
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11073
    <errorid id="JVMTI_ERROR_NULL_POINTER" num="100">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11074
      Pointer is unexpectedly <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11075
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11076
    <errorid id="JVMTI_ERROR_OUT_OF_MEMORY" num="110">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11077
      The function attempted to allocate memory and no more memory was 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11078
      available for allocation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11079
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11080
    <errorid id="JVMTI_ERROR_ACCESS_DENIED" num="111">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11081
      The desired functionality has not been enabled in this virtual machine.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11082
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11083
    <errorid id="JVMTI_ERROR_UNATTACHED_THREAD" num="115">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11084
      The thread being used to call this function is not attached
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11085
      to the virtual machine.  Calls must be made from attached threads.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11086
      See <code>AttachCurrentThread</code> in the JNI invocation API.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11087
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11088
    <errorid id="JVMTI_ERROR_INVALID_ENVIRONMENT" num="116">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11089
      The <jvmti/> environment provided is no longer connected or is
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11090
      not an environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11091
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11092
    <errorid id="JVMTI_ERROR_WRONG_PHASE" num="112">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11093
      The desired functionality is not available in the current
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11094
        <functionlink id="GetPhase">phase</functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11095
      Always returned if the virtual machine has completed running.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11096
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11097
    <errorid id="JVMTI_ERROR_INTERNAL" num="113">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11098
      An unexpected internal error has occurred.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11099
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11100
  </errorcategory>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11101
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11102
  <errorcategory id="reqerrors" label="Function Specific Required Errors">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11103
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11104
      The following errors are returned by some <jvmti/> functions and must
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11105
      be returned by the implementation when the condition occurs.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11106
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11107
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11108
    <errorid id="JVMTI_ERROR_INVALID_PRIORITY" num="12">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11109
      Invalid priority.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11110
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11111
    <errorid id="JVMTI_ERROR_THREAD_NOT_SUSPENDED" num="13">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11112
      Thread was not suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11113
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11114
    <errorid id="JVMTI_ERROR_THREAD_SUSPENDED" num="14">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11115
      Thread already suspended.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11116
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11117
    <errorid id="JVMTI_ERROR_THREAD_NOT_ALIVE" num="15">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11118
      This operation requires the thread to be alive--that is,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11119
      it must be started and not yet have died.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11120
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11121
    <errorid id="JVMTI_ERROR_CLASS_NOT_PREPARED" num="22">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11122
      The class has been loaded but not yet prepared.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11123
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11124
    <errorid id="JVMTI_ERROR_NO_MORE_FRAMES" num="31">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11125
      There are no Java programming language or JNI stack frames at the specified depth.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11126
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11127
    <errorid id="JVMTI_ERROR_OPAQUE_FRAME" num="32">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11128
      Information about the frame is not available (e.g. for native frames).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11129
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11130
    <errorid id="JVMTI_ERROR_DUPLICATE" num="40">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11131
      Item already set.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11132
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11133
    <errorid id="JVMTI_ERROR_NOT_FOUND" num="41">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11134
      Desired element (e.g. field or breakpoint) not found
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11135
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11136
    <errorid id="JVMTI_ERROR_NOT_MONITOR_OWNER" num="51">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11137
      This thread doesn't own the raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11138
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11139
    <errorid id="JVMTI_ERROR_INTERRUPT" num="52">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11140
      The call has been interrupted before completion.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11141
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11142
    <errorid id="JVMTI_ERROR_UNMODIFIABLE_CLASS" num="79">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11143
      The class cannot be modified.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11144
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11145
    <errorid id="JVMTI_ERROR_NOT_AVAILABLE" num="98">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11146
      The functionality is not available in this virtual machine.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11147
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11148
    <errorid id="JVMTI_ERROR_ABSENT_INFORMATION" num="101">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11149
      The requested information is not available.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11150
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11151
    <errorid id="JVMTI_ERROR_INVALID_EVENT_TYPE" num="102">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11152
      The specified event type ID is not recognized.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11153
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11154
    <errorid id="JVMTI_ERROR_NATIVE_METHOD" num="104">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11155
      The requested information is not available for native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11156
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11157
    <errorid id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED" num="106">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11158
      The class loader does not support this operation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11159
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11160
  </errorcategory>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11161
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11162
  <errorcategory id="function-specific-errors" label="Function Specific Agent Errors">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11163
    <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11164
      The following errors are returned by some <jvmti/> functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11165
      They are returned in the event of invalid parameters passed by the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11166
      agent or usage in an invalid context.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11167
      An implementation is not required to detect these errors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11168
    </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11169
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11170
    <errorid id="JVMTI_ERROR_INVALID_THREAD" num="10">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11171
      The passed thread is not a valid thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11172
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11173
    <errorid id="JVMTI_ERROR_INVALID_FIELDID" num="25">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11174
      Invalid field.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11175
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11176
    <errorid id="JVMTI_ERROR_INVALID_METHODID" num="23">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11177
      Invalid method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11178
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11179
    <errorid id="JVMTI_ERROR_INVALID_LOCATION" num="24">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11180
      Invalid location.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11181
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11182
    <errorid id="JVMTI_ERROR_INVALID_OBJECT" num="20">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11183
      Invalid object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11184
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11185
    <errorid id="JVMTI_ERROR_INVALID_CLASS" num="21">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11186
      Invalid class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11187
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11188
    <errorid id="JVMTI_ERROR_TYPE_MISMATCH" num="34">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11189
      The variable is not an appropriate type for the function used.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11190
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11191
    <errorid id="JVMTI_ERROR_INVALID_SLOT" num="35">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11192
      Invalid slot.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11193
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11194
    <errorid id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY" num="99">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11195
      The capability being used is false in this environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11196
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11197
    <errorid id="JVMTI_ERROR_INVALID_THREAD_GROUP" num="11">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11198
      Thread group invalid.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11199
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11200
    <errorid id="JVMTI_ERROR_INVALID_MONITOR" num="50">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11201
      Invalid raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11202
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11203
    <errorid id="JVMTI_ERROR_ILLEGAL_ARGUMENT" num="103">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11204
      Illegal argument.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11205
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11206
    <errorid id="JVMTI_ERROR_INVALID_TYPESTATE" num="65">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11207
      The state of the thread has been modified, and is now inconsistent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11208
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11209
    <errorid id="JVMTI_ERROR_UNSUPPORTED_VERSION" num="68">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11210
      A new class file has a version number not supported by this VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11211
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11212
    <errorid id="JVMTI_ERROR_INVALID_CLASS_FORMAT" num="60">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11213
      A new class file is malformed (the VM would return a <code>ClassFormatError</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11214
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11215
    <errorid id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION" num="61">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11216
      The new class file definitions would lead to a circular
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11217
      definition (the VM would return a <code>ClassCircularityError</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11218
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11219
    <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED" num="63">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11220
      A new class file would require adding a method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11221
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11222
    <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED" num="64">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11223
      A new class version changes a field.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11224
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11225
    <errorid id="JVMTI_ERROR_FAILS_VERIFICATION" num="62">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11226
      The class bytes fail verification.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11227
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11228
    <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED" num="66">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11229
      A direct superclass is different for the new class
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11230
      version, or the set of directly implemented
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11231
      interfaces is different.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11232
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11233
    <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED" num="67">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11234
      A new class version does not declare a method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11235
      declared in the old class version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11236
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11237
    <errorid id="JVMTI_ERROR_NAMES_DONT_MATCH" num="69">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11238
      The class name defined in the new class file is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11239
      different from the name in the old class object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11240
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11241
    <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED" num="70">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11242
      A new class version has different modifiers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11243
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11244
    <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED" num="71">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11245
      A method in the new class version has different modifiers
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11246
      than its counterpart in the old class version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11247
    </errorid>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11248
  </errorcategory>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11249
</errorsection>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11250
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11251
<eventsection label="Events">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11252
  <intro label="Handling Events" id="eventIntro">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11253
    Agents can be informed of many events that occur in application
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11254
    programs.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11255
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11256
    To handle events, designate a set of callback functions with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11257
    <functionlink id="SetEventCallbacks"></functionlink>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11258
    For each event the corresponding callback function will be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11259
    called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11260
    Arguments to the callback function provide additional
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11261
    information about the event. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11262
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11263
    The callback function is usually called from within an application 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11264
    thread. The <jvmti/> implementation does not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11265
    queue events in any way. This means
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11266
    that event callback functions must be written 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11267
    carefully. Here are some general guidelines. See 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11268
    the individual event descriptions for further
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11269
    suggestions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11270
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11271
    <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11272
      <li>Any exception thrown during the execution of an event callback can 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11273
	overwrite any current pending exception in the current application thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11274
	Care must be taken to preserve a pending exception
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11275
	when an event callback makes a JNI call that might generate an exception.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11276
      </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11277
      <li>Event callback functions must be re-entrant. The <jvmti/> implementation does
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11278
	not queue events. If an agent needs to process events one at a time, it 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11279
	can use a raw monitor inside the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11280
	event callback functions to serialize event processing.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11281
      </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11282
      <li>Event callback functions that execute JNI's FindClass function to load
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11283
        classes need to note that FindClass locates the class loader associated 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11284
        with the current native method. For the purposes of class loading, an
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11285
        event callback that includes a JNI environment as a parameter to the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11286
        callback will treated as if it is a native call, where the native method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11287
        is in the class of the event thread's current frame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11288
      </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11289
    </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11290
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11291
    Some <jvmti/> events identify objects with JNI references. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11292
    All references 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11293
    in <jvmti/> events are JNI local references and will become invalid
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11294
    after the event callback returns.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11295
    Unless stated otherwise, memory referenced by pointers sent in event
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11296
    callbacks may not be referenced after the event callback returns.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11297
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11298
    Except where stated otherwise, events are delivered on the thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11299
    that caused the event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11300
    Events are sent at the time they occur.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11301
    The specification for each event includes the set of
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11302
    <functionlink id="GetPhase">phases</functionlink> in which it can be sent;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11303
    if an event triggering activity occurs during another phase, no event 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11304
    is sent. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11305
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11306
    A thread that generates an event does not change its execution status
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11307
    (for example, the event does not cause the thread to be suspended).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11308
    If an agent wishes the event to result in suspension, then the agent
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11309
    is responsible for explicitly suspending the thread with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11310
    <functionlink id="SuspendThread"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11311
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11312
    If an event is enabled in multiple environments, the event will be sent
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11313
    to each agent in the order that the environments were created.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11314
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11315
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11316
  <intro label="Enabling Events" id="enablingevents">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11317
    All events are initially disabled.  In order to receive any
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11318
    event:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11319
      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11320
	<li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11321
	  If the event requires a capability, that capability must
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11322
	  be added with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11323
	  <functionlink id="AddCapabilities"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11324
	</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11325
	<li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11326
	  A callback for the event must be set with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11327
	  <functionlink id="SetEventCallbacks"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11328
	</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11329
	<li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11330
	  The event must be enabled with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11331
	  <functionlink id="SetEventNotificationMode"></functionlink>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11332
	</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11333
      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11334
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11335
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11336
  <intro label="Multiple Co-located Events" id="eventorder">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11337
    In many situations it is possible for multiple events to occur 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11338
    at the same location in one thread. When this happens, all the events 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11339
    are reported through the event callbacks in the order specified in this section.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11340
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11341
    If the current location is at the entry point of a method, the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11342
    <eventlink id="MethodEntry"></eventlink> event is reported before
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11343
    any other event at the current location in the same thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11344
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11345
    If an exception catch has been detected at the current location,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11346
    either because it is the beginning of a catch clause or a native method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11347
    that cleared a pending exception has returned, the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11348
    <code>exceptionCatch</code> event is reported before
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11349
    any other event at the current location in the same thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11350
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11351
    If a <code>singleStep</code> event or 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11352
    <code>breakpoint</code> event is triggered at the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11353
    current location, the event is defined to occur 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11354
    immediately before the code at the current location is executed. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11355
    These events are reported before any events which are triggered 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11356
    by the execution of code at the current location in the same 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11357
    thread (specifically: 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11358
    <code>exception</code>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11359
    <code>fieldAccess</code>, and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11360
    <code>fieldModification</code>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11361
    If both a step and breakpoint event are triggered for the same thread and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11362
    location, the step event is reported before the breakpoint event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11363
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11364
    If the current location is the exit point of a method (that is, the last
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11365
    location before returning to the caller), the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11366
    <eventlink id="MethodExit"></eventlink> event and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11367
    the <eventlink id="FramePop"></eventlink> event (if requested)
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11368
    are reported after all other events at the current location in the same
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11369
    thread. There is no specified ordering of these two events 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11370
    with respect to each other.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11371
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11372
    Co-located events can be triggered during the processing of some other
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11373
    event by the agent at the same location in the same thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11374
    If such an event, of type <i>y</i>, is triggered during the processing of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11375
    an event of type <i>x</i>, and if <i>x</i> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11376
    precedes <i>y</i> in the ordering specified above, the co-located event 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11377
    <i>y</i> is reported for the current thread and location. If <i>x</i> does not precede
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11378
    <i>y</i>, <i>y</i> is not reported for the current thread and location.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11379
    For example, if a breakpoint is set at the current location 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11380
    during the processing of <eventlink id="SingleStep"></eventlink>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11381
    that breakpoint will be reported before the thread moves off the current 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11382
    location.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11383
    <p/>The following events are never considered to be co-located with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11384
    other events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11385
    <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11386
      <li><eventlink id="VMStart"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11387
      <li><eventlink id="VMInit"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11388
      <li><eventlink id="VMDeath"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11389
      <li><eventlink id="ThreadStart"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11390
      <li><eventlink id="ThreadEnd"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11391
      <li><eventlink id="ClassLoad"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11392
      <li><eventlink id="ClassPrepare"></eventlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11393
    </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11394
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11395
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11396
  <intro label="Event Callbacks" id="jvmtiEventCallbacks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11397
      The event callback structure below is used to specify the handler function
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11398
      for events.  It is set with the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11399
      <functionlink id="SetEventCallbacks"></functionlink> function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11400
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11401
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11402
  <event label="Single Step"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11403
	 id="SingleStep" const="JVMTI_EVENT_SINGLE_STEP" filtered="thread" num="60">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11404
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11405
      Single step events allow the agent to trace thread execution
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11406
      at the finest granularity allowed by the VM. A single step event is
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11407
      generated whenever a thread reaches a new location. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11408
      Typically, single step events represent the completion of one VM 
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
 11409
      instruction as defined in <vmspec/>. However, some implementations 
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11410
      may define locations differently. In any case the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11411
      <code>method</code> and <code>location</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11412
      parameters  uniquely identify the current location and allow
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11413
      the mapping to source file and line number when that information is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11414
      available.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11415
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11416
      No single step events are generated from within native methods.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11417
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11418
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11419
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11420
      <required id="can_generate_single_step_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11421
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11422
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11423
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11424
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11425
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11426
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11427
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11428
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11429
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11430
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11431
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11432
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11433
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11434
	    Thread about to execution a new instruction
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11435
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11436
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11437
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11438
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11439
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11440
	    Class of the method about to execute a new instruction
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11441
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11442
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11443
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11444
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11445
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11446
	    Method about to execute a new instruction
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11447
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11448
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11449
      <param id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11450
	<jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11451
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11452
	  Location of the new instruction
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11453
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11454
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11455
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11456
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11457
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11458
  <event label="Breakpoint"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11459
	 id="Breakpoint" const="JVMTI_EVENT_BREAKPOINT" filtered="thread" num="62">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11460
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11461
      Breakpoint events are generated whenever a thread reaches a location
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11462
      designated as a breakpoint with <functionlink id="SetBreakpoint"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11463
      The <code>method</code> and <code>location</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11464
      parameters uniquely identify the current location and allow
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11465
      the mapping to source file and line number when that information is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11466
      available.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11467
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11468
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11469
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11470
      <required id="can_generate_breakpoint_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11471
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11472
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11473
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11474
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11475
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11476
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11477
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11478
            The JNI environment of the event (current) thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11479
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11480
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11481
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11482
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11483
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11484
	    Thread that hit the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11485
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11486
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11487
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11488
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11489
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11490
	    Class of the method that hit the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11491
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11492
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11493
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11494
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11495
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11496
	    Method that hit the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11497
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11498
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11499
      <param id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11500
	<jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11501
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11502
	  location of the breakpoint
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11503
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11504
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11505
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11506
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11507
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11508
  <event label="Field Access"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11509
	 id="FieldAccess" const="JVMTI_EVENT_FIELD_ACCESS" filtered="thread" num="63">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11510
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11511
      Field access events are generated whenever a thread accesses
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11512
      a field that was designated as a watchpoint 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11513
      with <functionlink id="SetFieldAccessWatch"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11514
      The <code>method</code> and <code>location</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11515
      parameters uniquely identify the current location and allow
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11516
      the mapping to source file and line number when that information is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11517
      available. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11518
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11519
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11520
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11521
      <required id="can_generate_field_access_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11522
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11523
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11524
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11525
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11526
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11527
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11528
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11529
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11530
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11531
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11532
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11533
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11534
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11535
	    Thread accessing the field
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11536
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11537
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11538
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11539
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11540
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11541
	    Class of the method where the access is occurring
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11542
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11543
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11544
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11545
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11546
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11547
	    Method where the access is occurring
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11548
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11549
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11550
      <param id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11551
	<jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11552
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11553
	  Location where the access is occurring
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11554
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11555
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11556
      <param id="field_klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11557
	<jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11558
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11559
	    Class of the field being accessed
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11560
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11561
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11562
      <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11563
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11564
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11565
	    Object with the field being accessed if the field is an
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11566
	    instance field; <code>NULL</code> otherwise
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11567
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11568
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11569
      <param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11570
	<jfieldID class="field_klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11571
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11572
	    Field being accessed
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11573
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11574
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11575
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11576
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11577
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11578
  <event label="Field Modification"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11579
	 id="FieldModification" const="JVMTI_EVENT_FIELD_MODIFICATION" filtered="thread" num="64">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11580
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11581
      Field modification events are generated whenever a thread modifies
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11582
      a field that was designated as a watchpoint 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11583
      with <functionlink id="SetFieldModificationWatch"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11584
      The <code>method</code> and <code>location</code> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11585
      parameters uniquely identify the current location and allow
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11586
      the mapping to source file and line number when that information is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11587
      available. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11588
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11589
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11590
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11591
      <required id="can_generate_field_modification_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11592
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11593
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11594
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11595
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11596
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11597
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11598
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11599
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11600
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11601
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11602
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11603
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11604
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11605
	    Thread modifying the field
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11606
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11607
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11608
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11609
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11610
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11611
	    Class of the method where the modification is occurring
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11612
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11613
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11614
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11615
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11616
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11617
	    Method where the modification is occurring
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11618
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11619
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11620
      <param id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11621
	<jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11622
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11623
	  Location where the modification is occurring
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11624
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11625
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11626
      <param id="field_klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11627
	<jclass field="field"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11628
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11629
	    Class of the field being modified
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11630
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11631
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11632
      <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11633
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11634
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11635
	    Object with the field being modified if the field is an
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11636
	    instance field; <code>NULL</code> otherwise
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11637
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11638
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11639
      <param id="field">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11640
	<jfieldID class="field_klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11641
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11642
	    Field being modified
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11643
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11644
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11645
      <param id="signature_type">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11646
	<char/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11647
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11648
	  Signature type of the new value
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11649
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11650
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11651
      <param id="new_value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11652
	<jvalue/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11653
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11654
	  The new value
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11655
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11656
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11657
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11658
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11659
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11660
  <event label="Frame Pop"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11661
	 id="FramePop" const="JVMTI_EVENT_FRAME_POP" filtered="thread" num="61">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11662
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11663
      Frame pop events are generated upon exit from a single method 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11664
      in a single frame as specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11665
      in a call to <functionlink id="NotifyFramePop"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11666
      This is true whether termination is caused by
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11667
      executing its return instruction
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11668
      or by throwing an exception to its caller 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11669
      (see <paramlink id="was_popped_by_exception"></paramlink>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11670
      However, frame pops caused by the <functionlink id="PopFrame"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11671
      function are not reported.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11672
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11673
      The location reported by <functionlink id="GetFrameLocation"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11674
      identifies the executable location in the returning method, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11675
      immediately prior to the return. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11676
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11677
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11678
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11679
      <required id="can_generate_frame_pop_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11680
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11681
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11682
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11683
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11684
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11685
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11686
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11687
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11688
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11689
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11690
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11691
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11692
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11693
	    Thread that is popping the frame
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11694
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11695
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11696
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11697
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11698
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11699
	    Class of the method being popped
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11700
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11701
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11702
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11703
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11704
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11705
	    Method being popped
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11706
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11707
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11708
      <param id="was_popped_by_exception">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11709
	<jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11710
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11711
	  True if frame was popped by a thrown exception.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11712
	  False if method exited through its return instruction.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11713
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11714
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11715
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11716
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11717
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11718
  <event label="Method Entry"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11719
	 id="MethodEntry" const="JVMTI_EVENT_METHOD_ENTRY" filtered="thread" num="65">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11720
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11721
      Method entry events are generated upon entry of Java 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11722
      programming language methods (including native methods).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11723
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11724
      The location reported by <functionlink id="GetFrameLocation"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11725
      identifies the initial executable location in
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11726
      the method. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11727
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11728
      Enabling method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11729
      entry or exit events will significantly degrade performance on many platforms and is thus
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11730
      not advised for performance critical usage (such as profiling).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11731
      <internallink id="bci">Bytecode instrumentation</internallink> should be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11732
      used in these cases.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11733
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11734
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11735
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11736
      <required id="can_generate_method_entry_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11737
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11738
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11739
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11740
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11741
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11742
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11743
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11744
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11745
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11746
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11747
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11748
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11749
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11750
	    Thread entering the method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11751
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11752
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11753
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11754
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11755
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11756
	    Class of the method being entered
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11757
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11758
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11759
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11760
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11761
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11762
	    Method being entered
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11763
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11764
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11765
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11766
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11767
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11768
  <event label="Method Exit"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11769
	 id="MethodExit" const="JVMTI_EVENT_METHOD_EXIT" filtered="thread" num="66">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11770
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11771
      Method exit events are generated upon exit from Java 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11772
      programming language methods (including native methods).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11773
      This is true whether termination is caused by
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11774
      executing its return instruction
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11775
      or by throwing an exception to its caller 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11776
      (see <paramlink id="was_popped_by_exception"></paramlink>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11777
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11778
      The <code>method</code> field uniquely identifies the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11779
      method being entered or exited. The <code>frame</code> field provides 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11780
      access to the stack frame for the method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11781
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11782
      The location reported by <functionlink id="GetFrameLocation"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11783
      identifies the executable location in the returning method 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11784
      immediately prior to the return. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11785
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11786
        Enabling method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11787
	entry or exit events will significantly degrade performance on many platforms and is thus
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11788
	not advised for performance critical usage (such as profiling).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11789
        <internallink id="bci">Bytecode instrumentation</internallink> should be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11790
        used in these cases.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11791
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11792
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11793
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11794
      <required id="can_generate_method_exit_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11795
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11796
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11797
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11798
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11799
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11800
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11801
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11802
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11803
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11804
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11805
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11806
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11807
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11808
	    Thread exiting the method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11809
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11810
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11811
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11812
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11813
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11814
	    Class of the method being exited
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11815
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11816
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11817
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11818
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11819
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11820
	    Method being exited
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11821
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11822
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11823
      <param id="was_popped_by_exception">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11824
	<jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11825
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11826
	  True if frame was popped by a thrown exception.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11827
	  False if method exited through its return instruction.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11828
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11829
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11830
      <param id="return_value">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11831
	<jvalue/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11832
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11833
	  The return value of the method being exited.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11834
	  Undefined and should not be used if 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11835
	  <paramlink id="was_popped_by_exception"></paramlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11836
	  is true.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11837
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11838
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11839
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11840
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11841
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11842
  <event label="Native Method Bind" phase="any"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11843
	 id="NativeMethodBind" const="JVMTI_EVENT_NATIVE_METHOD_BIND" num="67">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11844
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11845
      A Native Method Bind event is sent when a VM binds a 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11846
      Java programming language native method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11847
      to the address of a function that implements the native method. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11848
      This will occur when the native method is called for the first time
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11849
      and also occurs when the JNI function <code>RegisterNatives</code> is called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11850
      This event allows the bind to be redirected to an agent-specified
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11851
      proxy function. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11852
      This event is not sent when the native method is unbound.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11853
      Typically, this proxy function will need to be specific to a 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11854
      particular method or, to handle the general case, automatically
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11855
      generated assembly code, since after instrumentation code is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11856
      executed the function at the original binding 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11857
      address will usually be invoked.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11858
      The original binding can be restored or the redirection changed
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11859
      by use of the JNI function <code>RegisterNatives</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11860
      Some events may be sent during the primordial phase, JNI and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11861
      most of <jvmti/> cannot be used at this time but the method and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11862
      address can be saved for use later.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11863
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11864
    <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11865
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11866
      <required id="can_generate_native_method_bind_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11867
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11868
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11869
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11870
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11871
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11872
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11873
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11874
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11875
	    Will be <code>NULL</code> if sent during the primordial 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11876
            <functionlink id="GetPhase">phase</functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11877
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11878
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11879
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11880
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11881
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11882
	    Thread requesting the bind
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11883
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11884
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11885
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11886
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11887
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11888
	    Class of the method being bound
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11889
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11890
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11891
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11892
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11893
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11894
	    Native method being bound
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11895
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11896
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11897
      <param id="address">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11898
	<outptr><void/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11899
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11900
	  The address the VM is about to bind to--that is, the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11901
	  address of the implementation of the native method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11902
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11903
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11904
      <param id="new_address_ptr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11905
        <agentbuf><void/></agentbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11906
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11907
	  if the referenced address is changed (that is, if
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11908
	  <code>*new_address_ptr</code> is set), the binding
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11909
	  will instead be made to the supplied address.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11910
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11911
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11912
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11913
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11914
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11915
  <event label="Exception"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11916
	 id="Exception" const="JVMTI_EVENT_EXCEPTION" filtered="thread" num="58">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11917
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11918
      Exception events are generated whenever an exception is first detected
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11919
      in a Java programming language method. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11920
      Where "exception" means any <code>java.lang.Throwable</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11921
      The exception may have been thrown by a Java programming language or native
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11922
      method, but in the case of native methods, the event is not generated
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11923
      until the exception is first seen by a Java programming language method. If an exception is
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11924
      set and cleared in a native method (and thus is never visible to Java programming language code),
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11925
      no exception event is generated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11926
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11927
      The <code>method</code> and <code>location</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11928
      parameters  uniquely identify the current location 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11929
      (where the exception was detected) and allow
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11930
      the mapping to source file and line number when that information is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11931
      available. The <code>exception</code> field identifies the thrown
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11932
      exception object. The <code>catch_method</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11933
      and <code>catch_location</code> identify the location of the catch clause,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11934
      if any, that handles the thrown exception. If there is no such catch clause,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11935
      each field is set to 0. There is no guarantee that the thread will ever
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11936
      reach this catch clause. If there are native methods on the call stack
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11937
      between the throw location and the catch clause, the exception may 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11938
      be reset by one of those native methods.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11939
      Similarly, exceptions that are reported as uncaught (<code>catch_klass</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11940
      et al. set to 0) may in fact be caught by native code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11941
      Agents can check for these occurrences by monitoring 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11942
      <eventlink id="ExceptionCatch"></eventlink> events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11943
      Note that finally clauses are implemented as catch and re-throw. Therefore they
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11944
      will be reported in the catch location.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11945
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11946
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11947
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11948
      <required id="can_generate_exception_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11949
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11950
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11951
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11952
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11953
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11954
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11955
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11956
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11957
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11958
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11959
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11960
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11961
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11962
	    Thread generating the exception
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11963
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11964
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11965
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11966
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11967
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11968
	    Class generating the exception
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11969
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11970
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11971
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11972
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11973
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11974
	    Method generating the exception
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11975
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11976
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11977
      <param id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11978
	<jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11979
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11980
	  Location where exception occurred
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11981
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11982
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11983
      <param id="exception">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11984
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11985
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11986
	    The exception being thrown
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11987
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11988
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11989
      <param id="catch_klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11990
	<jclass method="catch_method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11991
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11992
	    Class that will catch the exception, or <code>NULL</code> if no known catch
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11993
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11994
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11995
      <param id="catch_method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11996
	<jmethodID class="catch_klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11997
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11998
	    Method that will catch the exception, or <code>NULL</code> if no known catch
489c9b5090e2 Initial load
duke
parents:
diff changeset
 11999
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12000
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12001
      <param id="catch_location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12002
	<jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12003
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12004
	  location which will catch the exception or zero if no known catch
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12005
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12006
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12007
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12008
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12009
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12010
  <event label="Exception Catch"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12011
	 id="ExceptionCatch" const="JVMTI_EVENT_EXCEPTION_CATCH" filtered="thread" num="59">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12012
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12013
      Exception catch events are generated whenever a thrown exception is caught.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12014
      Where "exception" means any <code>java.lang.Throwable</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12015
      If the exception is caught in a Java programming language method, the event is generated
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12016
      when the catch clause is reached. If the exception is caught in a native
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12017
      method, the event is generated as soon as control is returned to a Java programming language 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12018
      method. Exception catch events are generated for any exception for which
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12019
      a throw was detected in a Java programming language method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12020
      Note that finally clauses are implemented as catch and re-throw. Therefore they
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12021
      will generate exception catch events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12022
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12023
      The <code>method</code> and <code>location</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12024
      parameters uniquely identify the current location 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12025
      and allow the mapping to source file and line number when that information is 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12026
      available. For exceptions caught in a Java programming language method, the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12027
      <code>exception</code> object identifies the exception object. Exceptions
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12028
      caught in native methods are not necessarily available by the time the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12029
      exception catch is reported, so the <code>exception</code> field is set
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12030
      to <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12031
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12032
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12033
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12034
      <required id="can_generate_exception_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12035
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12036
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12037
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12038
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12039
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12040
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12041
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12042
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12043
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12044
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12045
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12046
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12047
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12048
	    Thread catching the exception
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12049
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12050
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12051
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12052
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12053
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12054
	    Class catching the exception
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12055
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12056
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12057
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12058
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12059
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12060
	    Method catching the exception
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12061
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12062
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12063
      <param id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12064
	<jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12065
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12066
	  Location where exception is being caught
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12067
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12068
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12069
      <param id="exception">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12070
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12071
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12072
	    Exception being caught
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12073
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12074
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12075
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12076
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12077
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12078
  <event label="Thread Start"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12079
	 id="ThreadStart" const="JVMTI_EVENT_THREAD_START" num="52" phase="start">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12080
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12081
      Thread start events are generated by a new thread before its initial
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12082
      method executes. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12083
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12084
      A thread may be listed in the array returned by
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12085
      <functionlink id="GetAllThreads"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12086
      before its thread start event is generated. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12087
      It is possible for other events to be generated
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12088
      on a thread before its thread start event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12089
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12090
      The event is sent on the newly started <paramlink id="thread"></paramlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12091
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12092
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12093
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12094
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12095
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12096
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12097
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12098
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12099
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12100
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12101
            The JNI environment of the event (current) thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12102
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12103
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12104
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12105
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12106
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12107
	    Thread starting
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12108
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12109
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12110
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12111
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12112
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12113
  <event label="Thread End"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12114
	 id="ThreadEnd" const="JVMTI_EVENT_THREAD_END" filtered="thread" num="53" phase="start"> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12115
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12116
      Thread end events are generated by a terminating thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12117
      after its initial method has finished execution. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12118
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12119
      A thread may be listed in the array returned by
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12120
      <functionlink id="GetAllThreads"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12121
      after its thread end event is generated. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12122
      No events are generated on a thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12123
      after its thread end event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12124
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12125
      The event is sent on the dying <paramlink id="thread"></paramlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12126
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12127
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12128
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12129
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12130
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12131
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12132
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12133
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12134
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12135
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12136
            The JNI environment of the event (current) thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12137
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12138
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12139
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12140
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12141
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12142
	    Thread ending
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12143
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12144
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12145
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12146
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12147
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12148
  <event label="Class Load"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12149
	 id="ClassLoad" const="JVMTI_EVENT_CLASS_LOAD" filtered="thread" phase="start" num="55">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12150
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12151
      A class load event is generated when a class is first loaded. The order
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12152
      of class load events generated by a particular thread are guaranteed
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12153
      to match the order of class loading within that thread. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12154
      Array class creation does not generate a class load event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12155
      The creation of a primitive class (for example, java.lang.Integer.TYPE) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12156
      does not generate a class load event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12157
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12158
      This event is sent at an early stage in loading the class. As
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12159
      a result the class should be used carefully.  Note, for example,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12160
      that methods and fields are not yet loaded, so queries for methods,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12161
      fields, subclasses, and so on will not give correct results. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12162
      See "Loading of Classes and Interfaces" in the <i>Java Language
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12163
      Specification</i>.  For most
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12164
      purposes the <eventlink id="ClassPrepare"></eventlink> event will
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12165
      be more useful.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12166
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12167
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12168
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12169
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12170
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12171
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12172
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12173
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12174
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12175
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12176
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12177
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12178
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12179
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12180
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12181
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12182
	    Thread loading the class
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12183
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12184
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12185
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12186
	<jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12187
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12188
	    Class being loaded
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12189
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12190
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12191
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12192
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12193
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12194
  <elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12195
  <event label="Class Unload"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12196
	 id="ClassUnload" const="JVMTI_EVENT_CLASS_UNLOAD" num="57">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12197
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12198
      A class unload event is generated when the class is about to be unloaded.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12199
      Class unload events take place during garbage collection and must be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12200
      handled extremely carefully. The garbage collector holds many locks
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12201
      and has suspended all other threads, so the event handler cannot depend
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12202
      on the ability to acquire any locks. The class unload event handler should
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12203
      do as little as possible, perhaps by queuing information to be processed
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12204
      later.  In particular, the <code>jclass</code> should be used only in
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12205
      the JNI function <code>isSameObject</code> or in the following <jvmti/> functions:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12206
      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12207
	<li><functionlink id="GetClassSignature"></functionlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12208
	<li><functionlink id="GetSourceFileName"></functionlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12209
	<li><functionlink id="IsInterface"></functionlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12210
	<li><functionlink id="IsArrayClass"></functionlink></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12211
      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12212
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12213
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12214
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12215
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12216
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12217
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12218
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12219
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12220
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12221
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12222
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12223
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12224
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12225
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12226
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12227
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12228
	    Thread generating the class unload
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12229
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12230
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12231
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12232
	<jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12233
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12234
	    Class being unloaded
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12235
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12236
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12237
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12238
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12239
  </elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12240
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12241
  <event label="Class Prepare"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12242
	 id="ClassPrepare" const="JVMTI_EVENT_CLASS_PREPARE" filtered="thread" phase="start" num="56">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12243
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12244
      A class prepare event is generated when class preparation is complete.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12245
      At this point, class fields, methods, and implemented interfaces are 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12246
      available, and no code from the class has been executed. Since array 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12247
      classes never have fields or methods, class prepare events are not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12248
      generated for them. Class prepare events are not generated for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12249
      primitive classes (for example, <code>java.lang.Integer.TYPE</code>). 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12250
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12251
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12252
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12253
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12254
    <parameters> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12255
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12256
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12257
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12258
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12259
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12260
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12261
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12262
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12263
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12264
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12265
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12266
	    Thread generating the class prepare
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12267
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12268
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12269
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12270
	<jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12271
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12272
	    Class being prepared
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12273
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12274
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12275
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12276
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12277
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12278
  <event label="Class File Load Hook" phase="any"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12279
	 id="ClassFileLoadHook" const="JVMTI_EVENT_CLASS_FILE_LOAD_HOOK" num="54">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12280
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12281
      This event is sent when the VM obtains class file data,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12282
      but before it constructs
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12283
      the in-memory representation for that class. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12284
      This event is also sent when the class is being modified by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12285
      <functionlink id="RetransformClasses"/> function or
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12286
      the <functionlink id="RedefineClasses"/> function,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12287
      called in any <jvmti/> environment.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12288
      The agent can instrument
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12289
      the existing class file data sent by the VM to include profiling/debugging hooks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12290
      See the description of 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12291
      <internallink id="bci">bytecode instrumentation</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12292
      for usage information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12293
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12294
    This event may be sent before the VM is initialized (the primordial 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12295
    <functionlink id="GetPhase">phase</functionlink>). During this time
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12296
    no VM resources should be created.  Some classes might not be compatible
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12297
    with the function (eg. ROMized classes) and this event will not be
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12298
    generated for these classes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12299
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12300
    The agent must allocate the space for the modified 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12301
    class file data buffer
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12302
    using the memory allocation function 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12303
    <functionlink id="Allocate"></functionlink> because the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12304
    VM is responsible for freeing the new class file data buffer
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12305
    using <functionlink id="Deallocate"></functionlink>.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12306
    Note that <functionlink id="Allocate"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12307
    is permitted during the primordial phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12308
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12309
    If the agent wishes to modify the class file, it must set 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12310
    <code>new_class_data</code> to point
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12311
    to the newly instrumented class file data buffer and set
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12312
    <code>new_class_data_len</code> to the length of that 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12313
    buffer before returning
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12314
    from this call.  If no modification is desired, the agent simply
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12315
    does not set <code>new_class_data</code>.  If multiple agents
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12316
    have enabled this event the results are chained. That is, if
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12317
    <code>new_class_data</code> has been set, it becomes the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12318
    <code>class_data</code> for the next agent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12319
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12320
    The order that this event is sent to each environment differs
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12321
    from other events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12322
    This event is sent to environments in the following order:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12323
    <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12324
      <li><fieldlink id="can_retransform_classes"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12325
                     struct="jvmtiCapabilities">retransformation
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12326
                                                incapable</fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12327
          environments, in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12328
          order in which they were created
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12329
      </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12330
      <li><fieldlink id="can_retransform_classes"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12331
                     struct="jvmtiCapabilities">retransformation
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12332
                                                capable</fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12333
          environments, in the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12334
          order in which they were created
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12335
      </li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12336
    </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12337
    When triggered by <functionlink id="RetransformClasses"/>,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12338
    this event is sent only to <fieldlink id="can_retransform_classes"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12339
                     struct="jvmtiCapabilities">retransformation
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12340
                                                capable</fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12341
    environments.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12342
  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12343
  <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12344
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12345
      <capability id="can_generate_all_class_hook_events"></capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12346
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12347
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12348
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12349
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12350
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12351
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12352
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12353
            The JNI environment of the event (current) thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12354
	    Will be <code>NULL</code> if sent during the primordial 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12355
            <functionlink id="GetPhase">phase</functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12356
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12357
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12358
      <param id="class_being_redefined">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12359
	<jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12360
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12361
	  The class being
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12362
          <functionlink id="RedefineClasses">redefined</functionlink> or
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12363
          <functionlink id="RetransformClasses">retransformed</functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12364
          <code>NULL</code> if sent by class load.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12365
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12366
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12367
      <param id="loader">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12368
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12369
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12370
	    The class loader loading the class.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12371
            <code>NULL</code> if the bootstrap class loader.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12372
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12373
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12374
      <param id="name">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12375
	<vmbuf><char/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12376
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12377
            Name of class being loaded as a VM internal qualified name
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12378
            (for example, "java/util/List"), encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12379
	    <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12380
            Note: if the class is defined with a <code>NULL</code> name or
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12381
            without a name specified, <code>name</code> will be <code>NULL</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12382
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12383
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12384
      <param id="protection_domain">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12385
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12386
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12387
	  The <code>ProtectionDomain</code> of the class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12388
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12389
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12390
      <param id="class_data_len">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12391
	<jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12392
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12393
	  Length of current class file data buffer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12394
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12395
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12396
      <param id="class_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12397
	<vmbuf><uchar/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12398
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12399
	  Pointer to the current class file data buffer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12400
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12401
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12402
      <param id="new_class_data_len">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12403
	<outptr><jint/></outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12404
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12405
	  Pointer to the length of the new class file data buffer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12406
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12407
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12408
      <param id="new_class_data">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12409
        <agentbuf incount="new_class_data_len"><uchar/></agentbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12410
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12411
	  Pointer to the pointer to the instrumented class file data buffer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12412
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12413
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12414
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12415
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12416
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12417
  <event label="VM Start Event"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12418
	 id="VMStart" const="JVMTI_EVENT_VM_START" num="57" phase="start">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12419
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12420
      The VM initialization event signals the start of the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12421
      At this time JNI is live but the VM is not yet fully initialized.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12422
      Once this event is generated, the agent is free to call any JNI function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12423
      This event signals the beginning of the start phase, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12424
      <jvmti/> functions permitted in the start phase may be called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12425
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12426
      In the case of VM start-up failure, this event will not be sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12427
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12428
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12429
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12430
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12431
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12432
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12433
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12434
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12435
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12436
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12437
            The JNI environment of the event (current) thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12438
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12439
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12440
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12441
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12442
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12443
  <event label="VM Initialization Event"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12444
	 id="VMInit" const="JVMTI_EVENT_VM_INIT" num="50">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12445
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12446
      The VM initialization event signals the completion of VM initialization. Once
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12447
      this event is generated, the agent is free to call any JNI or <jvmti/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12448
      function. The VM initialization event can be preceded by or can be concurrent
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12449
      with other events, but
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12450
      the preceding events should be handled carefully, if at all, because the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12451
      VM has not completed its initialization. The thread start event for the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12452
      main application thread is guaranteed not to occur until after the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12453
      handler for the VM initialization event returns.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12454
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12455
      In the case of VM start-up failure, this event will not be sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12456
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12457
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12458
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12459
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12460
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12461
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12462
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12463
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12464
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12465
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12466
            The JNI environment of the event (current) thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12467
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12468
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12469
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12470
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12471
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12472
	    The initial thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12473
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12474
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12475
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12476
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12477
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12478
  <event label="VM Death Event"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12479
	 id="VMDeath" const="JVMTI_EVENT_VM_DEATH" num="51">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12480
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12481
      The VM death event notifies the agent of the termination of the VM. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12482
      No events will occur after the VMDeath event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12483
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12484
      In the case of VM start-up failure, this event will not be sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12485
      Note that <internallink id="onunload">Agent_OnUnload</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12486
      will still be called in these cases.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12487
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12488
    <origin>jvmdi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12489
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12490
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12491
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12492
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12493
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12494
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12495
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12496
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12497
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12498
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12499
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12500
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12501
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12502
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12503
  <event label="Compiled Method Load"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12504
	 id="CompiledMethodLoad" const="JVMTI_EVENT_COMPILED_METHOD_LOAD" num="68">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12505
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12506
      Sent when a method is compiled and loaded into memory by the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12507
      If it is unloaded, the <eventlink id="CompiledMethodUnload"/> event is sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12508
      If it is moved, the <eventlink id="CompiledMethodUnload"/> event is sent,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12509
      followed by a new <code>CompiledMethodLoad</code> event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12510
      Note that a single method may have multiple compiled forms, and that
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12511
      this event will be sent for each form.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12512
      Note also that several methods may be inlined into a single 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12513
      address range, and that this event will be sent for each method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12514
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12515
      These events can be sent after their initial occurrence with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12516
      <functionlink id="GenerateEvents"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12517
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12518
    <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12519
    <typedef id="jvmtiAddrLocationMap" label="Native address to location entry">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12520
      <field id="start_address">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12521
	<vmbuf><void/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12522
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12523
	  Starting native address of code corresponding to a location
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12524
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12525
      </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12526
      <field id="location">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12527
	<jlocation/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12528
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12529
	  Corresponding location. See 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12530
	  <functionlink id="GetJLocationFormat"></functionlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12531
	  for the meaning of location.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12532
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12533
      </field>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12534
    </typedef>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12535
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12536
      <required id="can_generate_compiled_method_load_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12537
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12538
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12539
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12540
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12541
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12542
	    Class of the method being compiled and loaded
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12543
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12544
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12545
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12546
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12547
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12548
	    Method being compiled and loaded
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12549
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12550
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12551
      <param id="code_size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12552
	<jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12553
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12554
	  Size of compiled code
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12555
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12556
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12557
      <param id="code_addr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12558
	<vmbuf><void/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12559
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12560
	  Address where compiled method code is loaded
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12561
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12562
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12563
      <param id="map_length">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12564
	<jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12565
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12566
	  Number of <typelink id="jvmtiAddrLocationMap"></typelink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12567
	  entries in the address map.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12568
	  Zero if mapping information cannot be supplied.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12569
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12570
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12571
      <param id="map">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12572
	<vmbuf><struct>jvmtiAddrLocationMap</struct></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12573
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12574
	  Map from native addresses to location.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12575
	  The native address range of each entry is from 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12576
	  <fieldlink id="start_address" struct="jvmtiAddrLocationMap"></fieldlink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12577
	  to <code>start_address-1</code> of the next entry.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12578
	  <code>NULL</code> if mapping information cannot be supplied.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12579
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12580
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12581
      <param id="compile_info">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12582
	<vmbuf><void/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12583
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12584
	  VM-specific compilation information.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12585
	  The referenced compile information is managed by the VM
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12586
	  and must not depend on the agent for collection.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12587
	  A VM implementation defines the content and lifetime 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12588
	  of the information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12589
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12590
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12591
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12592
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12593
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12594
  <event label="Compiled Method Unload"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12595
	 id="CompiledMethodUnload" const="JVMTI_EVENT_COMPILED_METHOD_UNLOAD" num="69">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12596
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12597
      Sent when a compiled method is unloaded from memory.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12598
      This event might not be sent on the thread which performed the unload.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12599
      This event may be sent sometime after the unload occurs, but 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12600
      will be sent before the memory is reused
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12601
      by a newly generated compiled method. This event may be sent after 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12602
      the class is unloaded.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12603
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12604
    <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12605
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12606
      <required id="can_generate_compiled_method_load_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12607
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12608
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12609
      <param id="klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12610
	<jclass method="method"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12611
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12612
	    Class of the compiled method being unloaded.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12613
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12614
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12615
      <param id="method">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12616
	<jmethodID class="klass"/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12617
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12618
	    Compiled method being unloaded.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12619
	    For identification of the compiled method only -- the class 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12620
	    may be unloaded and therefore the method should not be used
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12621
	    as an argument to further JNI or <jvmti/> functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12622
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12623
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12624
      <param id="code_addr">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12625
	<vmbuf><void/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12626
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12627
	  Address where compiled method code was loaded.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12628
          For identification of the compiled method only -- 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12629
          the space may have been reclaimed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12630
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12631
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12632
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12633
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12634
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12635
  <event label="Dynamic Code Generated" phase="any"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12636
	 id="DynamicCodeGenerated" const="JVMTI_EVENT_DYNAMIC_CODE_GENERATED" num="70">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12637
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12638
      Sent when a component of the virtual machine is generated dynamically.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12639
      This does not correspond to Java programming language code that is
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12640
      compiled--see <eventlink id="CompiledMethodLoad"></eventlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12641
      This is for native code--for example, an interpreter that is generated
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12642
      differently depending on command-line options.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12643
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12644
      Note that this event has no controlling capability.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12645
      If a VM cannot generate these events, it simply does not send any.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12646
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12647
      These events can be sent after their initial occurrence with
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12648
      <functionlink id="GenerateEvents"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12649
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12650
    <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12651
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12652
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12653
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12654
      <param id="name">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12655
	<vmbuf><char/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12656
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12657
	  Name of the code, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12658
	  <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12659
          Intended for display to an end-user.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12660
          The name might not be unique.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12661
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12662
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12663
      <param id="address">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12664
	<vmbuf><void/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12665
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12666
	  Native address of the code
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12667
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12668
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12669
      <param id="length">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12670
	<jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12671
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12672
	  Length in bytes of the code
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12673
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12674
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12675
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12676
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12677
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12678
  <event label="Data Dump Request"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12679
	 id="DataDumpRequest" const="JVMTI_EVENT_DATA_DUMP_REQUEST" num="71">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12680
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12681
      Sent by the VM to request the agent to dump its data.  This
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12682
      is just a hint and the agent need not react to this event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12683
      This is useful for processing command-line signals from users.  For
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12684
      example, in the Java 2 SDK a CTRL-Break on Win32 and a CTRL-\ on Solaris
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12685
      causes the VM to send this event to the agent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12686
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12687
    <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12688
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12689
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12690
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12691
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12692
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12693
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12694
  <event label="Monitor Contended Enter"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12695
	 id="MonitorContendedEnter" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTER" filtered="thread" num="75">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12696
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12697
      Sent when a thread is attempting to enter a Java programming language
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12698
      monitor already acquired by another thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12699
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12700
    <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12701
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12702
      <required id="can_generate_monitor_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12703
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12704
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12705
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12706
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12707
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12708
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12709
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12710
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12711
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12712
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12713
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12714
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12715
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12716
	    JNI local reference to the thread 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12717
	    attempting to enter the monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12718
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12719
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12720
      <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12721
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12722
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12723
	    JNI local reference to the monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12724
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12725
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12726
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12727
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12728
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12729
  <event label="Monitor Contended Entered"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12730
	 id="MonitorContendedEntered" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTERED" filtered="thread" num="76">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12731
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12732
      Sent when a thread enters a Java programming language
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12733
      monitor after waiting for it to be released by another thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12734
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12735
    <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12736
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12737
      <required id="can_generate_monitor_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12738
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12739
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12740
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12741
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12742
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12743
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12744
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12745
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12746
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12747
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12748
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12749
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12750
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12751
	    JNI local reference to the thread entering
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12752
	    the monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12753
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12754
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12755
      <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12756
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12757
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12758
	    JNI local reference to the monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12759
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12760
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12761
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12762
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12763
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12764
  <event label="Monitor Wait"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12765
	 id="MonitorWait" const="JVMTI_EVENT_MONITOR_WAIT" filtered="thread" num="73">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12766
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12767
      Sent when a thread is about to wait on an object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12768
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12769
    <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12770
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12771
      <required id="can_generate_monitor_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12772
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12773
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12774
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12775
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12776
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12777
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12778
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12779
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12780
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12781
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12782
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12783
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12784
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12785
	    JNI local reference to the thread about to wait
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12786
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12787
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12788
      <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12789
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12790
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12791
	    JNI local reference to the monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12792
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12793
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12794
      <param id="timeout">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12795
	<jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12796
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12797
	  The number of milliseconds the thread will wait
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12798
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12799
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12800
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12801
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12802
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12803
  <event label="Monitor Waited"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12804
	 id="MonitorWaited" const="JVMTI_EVENT_MONITOR_WAITED" filtered="thread" num="74">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12805
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12806
      Sent when a thread finishes waiting on an object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12807
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12808
    <origin>jvmpi</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12809
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12810
      <required id="can_generate_monitor_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12811
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12812
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12813
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12814
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12815
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12816
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12817
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12818
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12819
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12820
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12821
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12822
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12823
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12824
	    JNI local reference to the thread that was finished waiting
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12825
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12826
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12827
      <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12828
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12829
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12830
	    JNI local reference to the monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12831
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12832
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12833
      <param id="timed_out">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12834
	<jboolean/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12835
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12836
	  True if the monitor timed out
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12837
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12838
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12839
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12840
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12841
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12842
  <event label="Resource Exhausted"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12843
	 id="ResourceExhausted" const="JVMTI_EVENT_RESOURCE_EXHAUSTED" num="80"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12844
         since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12845
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12846
      Sent when a VM resource needed by a running application has been exhausted.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12847
      Except as required by the optional capabilities, the set of resources 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12848
      which report exhaustion is implementation dependent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12849
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12850
      The following bit flags define the properties of the resource exhaustion:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12851
      <constants id="jvmtiResourceExhaustionFlags" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12852
                 label="Resource Exhaustion Flags" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12853
                 kind="bits" 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12854
                 since="1.1">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12855
        <constant id="JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR" num="0x0001">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12856
          After this event returns, the VM will throw a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12857
          <code>java.lang.OutOfMemoryError</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12858
        </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12859
        <constant id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP" num="0x0002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12860
	  The VM was unable to allocate memory from the <tm>Java</tm> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12861
          platform <i>heap</i>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12862
          The <i>heap</i> is the runtime
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12863
          data area from which memory for all class instances and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12864
          arrays are allocated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12865
        </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12866
        <constant id="JVMTI_RESOURCE_EXHAUSTED_THREADS" num="0x0004">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12867
	  The VM was unable to create a thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12868
        </constant>	  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12869
      </constants>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12870
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12871
    <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12872
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12873
      <capability id="can_generate_resource_exhaustion_heap_events">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12874
        Can generate events when the VM is unable to allocate memory from the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12875
        <internallink id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP">heap</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12876
      </capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12877
      <capability id="can_generate_resource_exhaustion_threads_events">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12878
        Can generate events when the VM is unable to 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12879
        <internallink id="JVMTI_RESOURCE_EXHAUSTED_THREADS">create
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12880
        a thread</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12881
      </capability>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12882
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12883
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12884
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12885
        <outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12886
          <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12887
        </outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12888
          <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12889
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12890
          </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12891
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12892
      <param id="flags">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12893
	<jint/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12894
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12895
	  Flags defining the properties of the of resource exhaustion
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12896
	  as specified by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12897
          <internallink id="jvmtiResourceExhaustionFlags">Resource 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12898
          Exhaustion Flags</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12899
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12900
	</param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12901
      <param id="reserved">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12902
	<vmbuf><void/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12903
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12904
	  Reserved.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12905
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12906
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12907
      <param id="description">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12908
	<vmbuf><char/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12909
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12910
	  Description of the resource exhaustion, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12911
	  <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12912
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12913
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12914
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12915
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12916
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12917
  <event label="VM Object Allocation"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12918
	 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12919
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12920
      Sent when a method causes the virtual machine to allocate an 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12921
      Object visible to Java programming language code and the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12922
      allocation is not detectable by other intrumentation mechanisms.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12923
      Generally object allocation should be detected by instrumenting
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12924
      the bytecodes of allocating methods.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12925
      Object allocation generated in native code by JNI function
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12926
      calls should be detected using 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12927
      <internallink id="jniIntercept">JNI function interception</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12928
      Some methods might not have associated bytecodes and are not 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12929
      native methods, they instead are executed directly by the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12930
      VM. These methods should send this event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12931
      Virtual machines which are incapable of bytecode instrumentation
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12932
      for some or all of their methods can send this event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12933
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12934
      Typical examples where this event might be sent:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12935
      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12936
        <li>Reflection -- for example, <code>java.lang.Class.newInstance()</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12937
        <li>Methods not represented by bytecodes -- for example, VM intrinsics and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12938
            J2ME preloaded classes</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12939
      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12940
      Cases where this event would not be generated:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12941
      <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12942
        <li>Allocation due to bytecodes -- for example, the <code>new</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12943
            and <code>newarray</code> VM instructions</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12944
        <li>Allocation due to JNI function calls -- for example,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12945
            <code>AllocObject</code></li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12946
        <li>Allocations during VM initialization</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12947
        <li>VM internal objects</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12948
      </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12949
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12950
    <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12951
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12952
      <required id="can_generate_vm_object_alloc_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12953
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12954
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12955
      <param id="jni_env">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12956
	<outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12957
	  <struct>JNIEnv</struct>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12958
	</outptr>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12959
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12960
            The JNI environment of the event (current) thread
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12961
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12962
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12963
      <param id="thread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12964
	<jthread/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12965
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12966
	    Thread allocating the object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12967
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12968
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12969
      <param id="object">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12970
	<jobject/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12971
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12972
	    JNI local reference to the object that was allocated
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12973
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12974
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12975
      <param id="object_klass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12976
	<jclass/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12977
	  <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12978
	    JNI local reference to the class of the object
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12979
	  </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12980
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12981
      <param id="size">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12982
	<jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12983
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12984
	    Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12985
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12986
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12987
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12988
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12989
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12990
  <event label="Object Free"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12991
	 id="ObjectFree" const="JVMTI_EVENT_OBJECT_FREE" num="83">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12992
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12993
      An Object Free event is sent when the garbage collector frees an object.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12994
      Events are only sent for tagged objects--see
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12995
      <internallink id="Heap">heap functions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12996
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12997
      The event handler must not use JNI functions and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12998
      must not use <jvmti/> functions except those which
489c9b5090e2 Initial load
duke
parents:
diff changeset
 12999
      specifically allow such use (see the raw monitor, memory management,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13000
      and environment local storage functions).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13001
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13002
    <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13003
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13004
      <required id="can_generate_object_free_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13005
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13006
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13007
      <param id="tag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13008
	<jlong/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13009
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13010
	  The freed object's tag
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13011
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13012
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13013
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13014
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13015
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13016
  <event label="Garbage Collection Start"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13017
	 id="GarbageCollectionStart" const="JVMTI_EVENT_GARBAGE_COLLECTION_START" num="81">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13018
    <description>
7896
08aadd7aa3ee 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 7724
diff changeset
 13019
      A Garbage Collection Start event is sent when a 
08aadd7aa3ee 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 7724
diff changeset
 13020
      garbage collection pause begins.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13021
      Only stop-the-world collections are reported--that is, collections during
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13022
      which all threads cease to modify the state of the Java virtual machine.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13023
      This means that some collectors will never generate these events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13024
      This event is sent while the VM is still stopped, thus
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13025
      the event handler must not use JNI functions and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13026
      must not use <jvmti/> functions except those which
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13027
      specifically allow such use (see the raw monitor, memory management,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13028
      and environment local storage functions).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13029
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13030
      This event is always sent as a matched pair with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13031
      <eventlink id="GarbageCollectionFinish"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13032
      (assuming both events are enabled) and no garbage collection
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13033
      events will occur between them.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13034
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13035
    <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13036
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13037
      <required id="can_generate_garbage_collection_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13038
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13039
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13040
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13041
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13042
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13043
  <event label="Garbage Collection Finish"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13044
	 id="GarbageCollectionFinish" const="JVMTI_EVENT_GARBAGE_COLLECTION_FINISH" num="82">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13045
    <description>
7896
08aadd7aa3ee 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 7724
diff changeset
 13046
      A Garbage Collection Finish event is sent when a
08aadd7aa3ee 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 7724
diff changeset
 13047
      garbage collection pause ends.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13048
      This event is sent while the VM is still stopped, thus
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13049
      the event handler must not use JNI functions and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13050
      must not use <jvmti/> functions except those which
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13051
      specifically allow such use (see the raw monitor, memory management,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13052
      and environment local storage functions).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13053
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13054
      Some agents may need to do post garbage collection operations that
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13055
      require the use of the disallowed <jvmti/> or JNI functions. For these
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13056
      cases an agent thread can be created which waits on a raw monitor,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13057
      and the handler for the Garbage Collection Finish event simply
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13058
      notifies the raw monitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13059
      <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13060
      This event is always sent as a matched pair with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13061
      <eventlink id="GarbageCollectionStart"/> (assuming both events are enabled).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13062
      <issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13063
	The most important use of this event is to provide timing information,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13064
	and thus additional information is not required.  However,  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13065
	information about the collection which is "free" should be included -
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13066
        what that information is needs to be determined.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13067
      </issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13068
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13069
    <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13070
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13071
      <required id="can_generate_garbage_collection_events"></required>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13072
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13073
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13074
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13075
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13076
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13077
  <elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13078
  <event label="Verbose Output" phase="any"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13079
	 id="VerboseOutput" const="JVMTI_EVENT_VERBOSE_OUTPUT" num="85">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13080
    <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13081
      Send verbose messages as strings.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13082
	<issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13083
	  This format is extremely fragile, as it can change with each
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13084
	  platform, collector and version.  Alternatives include:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13085
	  <ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13086
	    <li>building off Java programming language M and M APIs</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13087
	    <li>XML</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13088
	    <li>key/value pairs</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13089
	    <li>removing it</li>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13090
	  </ul>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13091
	</issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13092
	<issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13093
	  Though this seemed trivial to implement.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13094
          In the RI it appears this will be quite complex.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13095
	</issue>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13096
    </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13097
    <origin>new</origin>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13098
    <capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13099
    </capabilities>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13100
    <parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13101
      <param id="flag">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13102
	<enum>jvmtiVerboseFlag</enum>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13103
        <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13104
          Which verbose output is being sent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13105
        </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13106
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13107
      <param id="message">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13108
	<vmbuf><char/></vmbuf>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13109
	<description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13110
	  Message text, encoded as a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13111
	  <internallink id="mUTF">modified UTF-8</internallink> string.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13112
	</description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13113
      </param>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13114
    </parameters>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13115
  </event>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13116
  </elide>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13117
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13118
</eventsection>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13119
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13120
<datasection>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13121
  <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13122
    <jvmti/> extends the data types defined by JNI.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13123
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13124
  <basetypes id="jniTypes" label="JNI Types Used in the JVM Tool Interface">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13125
    <basetype id="jboolean">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13126
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13127
	Holds a Java programming language <code>boolean</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13128
	Unsigned 8 bits.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13129
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13130
    </basetype>
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 13131
    <basetype id="jchar">
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 13132
      <description>
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 13133
	Holds a Java programming language <code>char</code>.
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 13134
	Unsigned 16 bits.
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 13135
      </description>
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 13136
    </basetype>
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13137
    <basetype id="jint">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13138
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13139
	Holds a Java programming language <code>int</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13140
	Signed 32 bits.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13141
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13142
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13143
    <basetype id="jlong">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13144
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13145
	Holds a Java programming language <code>long</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13146
	Signed 64 bits.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13147
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13148
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13149
    <basetype id="jfloat">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13150
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13151
	Holds a Java programming language <code>float</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13152
	32 bits.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13153
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13154
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13155
    <basetype id="jdouble">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13156
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13157
	Holds a Java programming language <code>double</code>. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13158
	64 bits.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13159
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13160
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13161
    <basetype id="jobject">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13162
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13163
	Holds a Java programming language object. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13164
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13165
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13166
    <basetype id="jclass">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13167
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13168
	Holds a Java programming language class. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13169
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13170
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13171
    <basetype id="jvalue">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13172
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13173
	Is a union of all primitive types and <code>jobject</code>.  Thus, holds any Java 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13174
	programming language value. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13175
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13176
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13177
    <basetype id="jfieldID">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13178
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13179
	Identifies a Java programming language field. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13180
        <code>jfieldID</code>s returned by <jvmti/> functions and events may be
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13181
        safely stored.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13182
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13183
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13184
    <basetype id="jmethodID">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13185
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13186
	Identifies a Java programming language method, initializer, or constructor. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13187
        <code>jmethodID</code>s returned by <jvmti/> functions and events may be
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13188
        safely stored.  However, if the class is unloaded, they become invalid
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13189
        and must not be used.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13190
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13191
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13192
    <basetype id="JNIEnv">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13193
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13194
	Pointer to the JNI function table.  Pointer to this (<code>JNIEnv *</code>)
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13195
	is a JNI environment. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13196
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13197
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13198
  </basetypes>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13199
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13200
  <basetypes id="jvmtiTypes" label="JVM Tool Interface Base Types">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13201
    <basetype id="jvmtiEnv">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13202
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13203
	The <jvmti/> <internallink id="environments">environment</internallink> pointer. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13204
        See the <internallink id="FunctionSection">Function Section</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13205
        <code>jvmtiEnv</code> points to the 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13206
        <internallink id="FunctionTable">function table</internallink> pointer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13207
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13208
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13209
    <basetype id="jthread">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13210
      <definition>typedef jobject jthread;</definition>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13211
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13212
	Subtype of <datalink id="jobject"></datalink> that holds a thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13213
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13214
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13215
    <basetype id="jthreadGroup">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13216
      <definition>typedef jobject jthreadGroup;</definition>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13217
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13218
	Subtype of <datalink id="jobject"></datalink> that holds a thread group.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13219
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13220
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13221
    <basetype id="jlocation">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13222
      <definition>typedef jlong jlocation;</definition>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13223
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13224
	A 64 bit value, representing a monotonically increasing 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13225
	executable position within a method. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13226
        <code>-1</code> indicates a native method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13227
	See <functionlink id="GetJLocationFormat"></functionlink> for the format on a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13228
	given VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13229
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13230
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13231
    <basetype id="jrawMonitorID">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13232
      <definition>struct _jrawMonitorID;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13233
typedef struct _jrawMonitorID *jrawMonitorID;</definition>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13234
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13235
	A raw monitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13236
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13237
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13238
    <basetype id="jvmtiError">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13239
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13240
	Holds an error return code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13241
	See the <internallink id="ErrorSection">Error section</internallink> for possible values.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13242
	<example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13243
typedef enum { 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13244
    JVMTI_ERROR_NONE = 0,  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13245
    JVMTI_ERROR_INVALID_THREAD = 10,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13246
      ... 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13247
} jvmtiError;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13248
</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13249
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13250
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13251
    <basetype id="jvmtiEvent">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13252
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13253
        An identifier for an event type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13254
	See the <internallink id="EventSection">Event section</internallink> for possible values.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13255
        It is guaranteed that future versions of this specification will 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13256
        never assign zero as an event type identifier.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13257
<example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13258
typedef enum { 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13259
    JVMTI_EVENT_SINGLE_STEP = 1, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13260
    JVMTI_EVENT_BREAKPOINT = 2, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13261
      ... 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13262
} jvmtiEvent;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13263
</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13264
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13265
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13266
    <basetype id="jvmtiEventCallbacks">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13267
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13268
        The callbacks used for events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13269
<example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13270
typedef struct {
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13271
    jvmtiEventVMInit VMInit;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13272
    jvmtiEventVMDeath VMDeath;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13273
      ... 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13274
} jvmtiEventCallbacks;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13275
</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13276
        See <internallink id="jvmtiEventCallbacks">event callbacks</internallink> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13277
        for the complete structure.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13278
        <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13279
        Where, for example, the VM initialization callback is defined:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13280
<example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13281
typedef void (JNICALL *jvmtiEventVMInit)
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13282
    (jvmtiEnv *jvmti_env, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13283
     JNIEnv* jni_env,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13284
     jthread thread);
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13285
</example>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13286
        See the individual events for the callback function definition.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13287
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13288
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13289
    <basetype id="jniNativeInterface">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13290
      <definition>typedef struct JNINativeInterface_ jniNativeInterface;</definition>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13291
      <description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13292
	Typedef for the JNI function table <code>JNINativeInterface</code>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13293
	defined in the 
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 13294
	<externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp23720">JNI Specification</externallink>.
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13295
	The JNI reference implementation defines this with an underscore.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13296
      </description>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13297
    </basetype>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13298
  </basetypes>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13299
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13300
</datasection>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13301
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13302
<issuessection label="Issues">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13303
  <intro id="suspendRequired" label="Resolved Issue: Suspend - Required or Automatic">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13304
    JVMDI requires that the agent suspend threads before calling
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13305
    certain sensitive functions.  JVMPI requires garbage collection to be 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13306
    disabled before calling certain sensitive functions. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13307
    It was suggested that rather than have this requirement, that
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13308
    VM place itself in a suitable state before performing an
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13309
    operation.  This makes considerable sense since each VM
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13310
    knows its requirements and can most easily arrange a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13311
    safe state.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13312
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13313
    The ability to externally suspend/resume threads will, of
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13314
    course, remain.  The ability to enable/disable garbage collection will not.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13315
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13316
    This issue is resolved--suspend will not
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13317
    be required.  The spec has been updated to reflect this.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13318
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13319
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13320
  <intro id="stackSampling" label="Resolved Issue: Call Stack Sampling">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13321
    There are a variety of approaches to sampling call stacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13322
    The biggest bifurcation is between VM controlled and agent
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13323
    controlled.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13324
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13325
    This issue is resolved--agent controlled
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13326
    sampling will be the approach.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13327
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13328
  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13329
  <intro id="threadRepresentation" label="Resolved Issue: Thread Representation">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13330
    JVMDI represents threads as jthread.  JVMPI primarily
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13331
    uses JNIEnv* to represent threads.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13332
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13333
    The Expert Group has chosen jthread as the representation
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13334
    for threads in <jvmti/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13335
    JNIEnv* is sent by
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13336
    events since it is needed to JNI functions.  JNIEnv, per the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13337
    JNI spec, are not supposed to be used outside their thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13338
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13339
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13340
  <intro id="design" label="Resolved Issue: Method Representation">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13341
    The JNI spec allows an implementation to depend on jclass/jmethodID
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13342
    pairs, rather than simply a jmethodID, to reference a method.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13343
    JVMDI, for consistency, choose the same representation.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13344
    JVMPI, however, specifies that a jmethodID alone maps to a
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13345
    method.  Both of the Sun <tm>J2SE</tm> virtual machines (Classic and <tm>HotSpot</tm>) store
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13346
    pointers in jmethodIDs, and as a result, a jmethodID is sufficient.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13347
    In fact, any JVM implementation that supports JVMPI must have
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13348
    such a representation.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13349
    <jvmti/> will use jmethodID as a unique representation of a method
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13350
    (no jclass is used).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13351
    There should be efficiency gains, particularly in 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13352
    functionality like stack dumping, to this representation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13353
    <p/>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13354
    Note that fields were not used in JVMPI and that the access profile
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13355
    of fields differs from methods--for implementation efficiency 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13356
    reasons, a jclass/jfieldID pair will still be needed for field 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13357
    reference.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13358
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13359
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13360
  <intro id="localReferenceIssue" label="Resolved Issue: Local References">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13361
    Functions return local references. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13362
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13363
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13364
  <intro id="frameRep" label="Resolved Issue: Representation of frames">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13365
    In JVMDI, a frame ID is used to represent a frame.  Problem with this
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13366
    is that a VM must track when a frame becomes invalid, a far better
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13367
    approach, and the one used in <jvmti/>, is to reference frames by depth.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13368
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13369
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13370
  <intro id="requiredCapabilities" label="Issue: Required Capabilities">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13371
    Currently, having a required capabilities means that the functionality
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13372
    is optional.   Capabilities are useful even for required functionality
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13373
    since they can inform the VM is needed set-up.  Thus, there should be
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13374
    a set of capabilities that a conformant implementation must provide
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13375
    (if requested during Agent_OnLoad).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13376
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13377
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13378
  <intro id="taghint" label="Proposal: add tag hint function">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13379
    A hint of the percentage of objects that will be tagged would 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13380
    help the VM pick a good implementation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13381
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13382
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13383
  <intro id="moreMonitorQueries" label="Request: More Monitor Quires">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13384
  How difficult or easy would be to extend the monitor_info category to include 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13385
    <pre>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13386
  - current number of monitors 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13387
  - enumeration of monitors 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13388
  - enumeration of threads waiting on a given monitor 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13389
    </pre>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13390
  The reason for my question is the fact that current get_monitor_info support 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13391
  requires the agent to specify a given thread to get the info which is probably 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13392
  OK in the profiling/debugging space, while in the monitoring space the agent 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13393
  could be watching the monitor list and then decide which thread to ask for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13394
  the info. You might ask why is this important for monitoring .... I think it 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13395
  can aid in the detection/prediction of application contention caused by hot-locks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13396
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13397
</issuessection>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13398
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13399
<changehistory id="ChangeHistory" update="09/05/07">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13400
  <intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13401
    The <jvmti/> specification is an evolving document with major, minor, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13402
    and micro version numbers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13403
    A released version of the specification is uniquely identified
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13404
    by its major and minor version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13405
    The functions, events, and capabilities in this specification 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13406
    indicate a "Since" value which is the major and minor version in
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13407
    which it was introduced.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13408
    The version of the specification implemented by the VM can 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13409
    be retrieved at runtime with the <functionlink id="GetVersionNumber"/> 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13410
    function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13411
  </intro>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13412
  <change date="14 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13413
    Converted to XML document.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13414
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13415
  <change date="14 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13416
    Elided heap dump functions (for now) since what was there
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13417
    was wrong.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13418
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13419
  <change date="18 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13420
    Added detail throughout.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13421
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13422
  <change date="18 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13423
    Changed JVMTI_THREAD_STATUS_RUNNING to JVMTI_THREAD_STATUS_RUNNABLE.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13424
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13425
  <change date="19 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13426
    Added AsyncGetStackTrace.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13427
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13428
  <change date="19 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13429
    Added jframeID return to GetStackTrace.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13430
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13431
  <change date="19 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13432
    Elided GetCurrentFrame and GetCallingFrame functions (for now) since what was there
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13433
    since they are redundant with GetStackTrace.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13434
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13435
  <change date="19 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13436
    Elided ClearAllBreakpoints since it has always been redundant.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13437
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13438
  <change date="19 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13439
    Added GetSystemProperties.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13440
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13441
  <change date="19 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13442
    Changed the thread local storage functions to use jthread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13443
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13444
  <change date="20 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13445
    Added GetJLocationFormat.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13446
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13447
  <change date="22 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13448
    Added events and introductory text.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13449
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13450
  <change date="22 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13451
    Cross reference type and constant definitions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13452
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13453
  <change date="24 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13454
    Added DTD.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13455
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13456
  <change date="24 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13457
    Added capabilities function section.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13458
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13459
  <change date="29 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13460
    Assign capabilities to each function and event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13461
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13462
  <change date="29 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13463
    Add <internallink id="jniIntercept">JNI interception functions</internallink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13464
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13465
  <change date="30 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13466
    Auto generate SetEventNotificationMode capabilities.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13467
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13468
  <change date="30 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13469
    Add <eventlink id="VMObjectAlloc"></eventlink> event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13470
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13471
  <change date="30 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13472
    Add <eventlink id="DynamicCodeGenerated"></eventlink> event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13473
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13474
  <change date="30 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13475
    Add const to declarations.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13476
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13477
  <change date="30 Nov 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13478
    Change method exit and frame pop to send on exception.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13479
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13480
  <change date="1 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13481
    Add ForceGarbageCollection.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13482
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13483
  <change date="2 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13484
    Redo Xrun section; clarify GetStackTrace and add example;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13485
    Fix width problems; use "agent" consistently.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13486
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13487
  <change date="8 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13488
    Remove previous start-up intro.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13489
    Add <internallink id="environments"><jvmti/> Environments</internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13490
    section.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13491
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13492
  <change date="8 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13493
    Add <functionlink id="DisposeEnvironment"></functionlink>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13494
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13495
  <change date="9 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13496
    Numerous minor updates.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13497
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13498
  <change date="15 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13499
    Add heap profiling functions added:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13500
    get/set annotation, iterate live objects/heap.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13501
    Add heap profiling functions place holder added:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13502
    heap roots.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13503
    Heap profiling event added: object free. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13504
    Heap profiling event redesigned: vm object allocation. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13505
    Heap profiling event placeholders added: garbage collection start/finish. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13506
    Native method bind event added.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13507
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13508
  <change date="19 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13509
    Revamp suspend/resume functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13510
    Add origin information with jvmdi tag.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13511
    Misc fixes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13512
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13513
  <change date="24 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13514
    Add semantics to types.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13515
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13516
  <change date="27 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13517
    Add local reference section.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13518
    Autogenerate parameter descriptions from types.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13519
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13520
  <change date="28 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13521
    Document that RunAgentThread sends threadStart.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13522
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13523
  <change date="29 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13524
    Remove redundant local ref and dealloc warning.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13525
    Convert GetRawMonitorName to allocated buffer.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13526
    Add GenerateEvents.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13527
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13528
  <change date="30 Dec 2002">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13529
    Make raw monitors a type and rename to "jrawMonitorID".
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13530
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13531
  <change date="1 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13532
    Include origin information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13533
    Clean-up JVMDI issue references.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13534
    Remove Deallocate warnings which are now automatically generated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13535
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13536
  <change date="2 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13537
    Fix representation issues for jthread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13538
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13539
  <change date="3 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13540
    Make capabilities buffered out to 64 bits - and do it automatically.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13541
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13542
  <change date="4 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13543
    Make constants which are enumeration into enum types.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13544
    Parameters now of enum type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13545
    Clean-up and index type section.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13546
    Replace remaining datadef entities with callback.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13547
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13548
  <change date="7 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13549
    Correct GenerateEvents description.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13550
    More internal semantics work.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13551
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13552
  <change date="9 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13553
    Replace previous GetSystemProperties with two functions
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13554
    which use allocated information instead fixed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13555
    Add SetSystemProperty.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13556
    More internal semantics work.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13557
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13558
  <change date="12 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13559
    Add varargs to end of SetEventNotificationMode.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13560
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13561
  <change date="20 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13562
    Finish fixing spec to reflect that alloc sizes are jlong.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13563
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13564
  <change date="22 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13565
    Allow NULL as RunAgentThread arg.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13566
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13567
  <change date="22 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13568
    Fixed names to standardized naming convention
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13569
    Removed AsyncGetStackTrace.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13570
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13571
  <change date="29 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13572
    Since we are using jthread, removed GetThread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13573
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13574
  <change date="31 Jan 2003">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13575
    Change GetFieldName to allow NULLs like GetMethodName.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13576
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13577
  <change date="29 Feb 2003" version="v40">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13578
      Rewrite the introductory text, adding sections on
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13579
      start-up, environments and bytecode instrumentation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13580
      Change the command line arguments per EG discussions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13581
      Add an introduction to the capabilities section.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13582
      Add the extension mechanism category and functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13583
      Mark for deletion, but clarified anyhow, SuspendAllThreads.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13584
      Rename IterateOverLiveObjects to IterateOverReachableObjects and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13585
      change the text accordingly.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13586
      Clarify IterateOverHeap.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13587
      Clarify CompiledMethodLoad.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13588
      Discuss prerequisite state for Calling Functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13589
      Clarify SetAllocationHooks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13590
      Added issues ("To be resolved:") through-out.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13591
      And so on...
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13592
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13593
  <change date="6 Mar 2003" version="v41">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13594
      Remove struct from the call to GetOwnedMonitorInfo.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13595
      Automatically generate most error documentation, remove
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13596
      (rather broken) hand written error doc.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13597
      Better describe capability use (empty initial set).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13598
      Add min value to jint params.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13599
      Remove the capability can_access_thread_local_storage.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13600
      Rename error JVMTI_ERROR_NOT_IMPLEMENTED to JVMTI_ERROR_MUST_POSSESS_CAPABILITY;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13601
      same for *NOT_IMPLEMENTED.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13602
      Description fixes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13603
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13604
  <change date="8 Mar 2003" version="v42">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13605
      Rename GetClassSignature to GetClassName.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13606
      Rename IterateOverClassObjects to IterateOverInstancesOfClass.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13607
      Remove GetMaxStack (operand stack isn't used in <jvmti/>).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13608
      Description fixes: define launch-time, remove native frame pop
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13609
      from PopFrame, and assorted clarifications.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13610
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13611
  <change date="8 Mar 2003" version="v43">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13612
      Fix minor editing problem.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13613
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13614
  <change date="10 Mar 2003" version="v44">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13615
      Add phase information.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13616
      Remap (compact) event numbers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13617
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13618
  <change date="11 Mar 2003" version="v45">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13619
      More phase information - allow "any".
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13620
      Elide raw monitor queries and events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13621
      Minor description fixes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13622
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13623
  <change date="12 Mar 2003" version="v46">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13624
      Add GetPhase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13625
      Use "phase" through document.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13626
      Elide GetRawMonitorName.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13627
      Elide GetObjectMonitors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13628
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13629
  <change date="12 Mar 2003" version="v47">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13630
      Fixes from link, XML, and spell checking.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13631
      Auto-generate the callback structure.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13632
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13633
  <change date="13 Mar 2003" version="v48">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13634
      One character XML fix.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13635
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13636
  <change date="13 Mar 2003" version="v49">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13637
      Change function parameter names to be consistent with 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13638
      event parameters (fooBarBaz becomes foo_bar_baz).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13639
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13640
  <change date="14 Mar 2003" version="v50">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13641
      Fix broken link.  Fix thread markers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13642
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13643
  <change date="14 Mar 2003" version="v51">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13644
      Change constants so they are under 128 to workaround
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13645
      compiler problems.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13646
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13647
  <change date="23 Mar 2003" version="v52">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13648
      Overhaul capabilities.  Separate GetStackTrace into
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13649
      GetStackTrace and GetStackFrames.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13650
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13651
  <change date="8 Apr 2003" version="v54">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13652
      Use depth instead of jframeID to reference frames.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13653
      Remove the now irrelevant GetCurrentFrame, GetCallerFrame and GetStackFrames.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13654
      Remove frame arg from events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13655
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13656
  <change date="9 Apr 2003" version="v55">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13657
      Remove GetObjectWithAnnotation since tests show bufferred approach more efficient.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13658
      Add missing annotation_count to GetObjectsWithAnnotations
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13659
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13660
  <change date="10 Apr 2003" version="v56">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13661
      Remove confusing parenthetical statement in GetObjectsWithAnnotations
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13662
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13663
  <change date="13 Apr 2003" version="v58">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13664
      Replace jclass/jmethodID representation of method with simply jmethodID;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13665
      Pass JvmtiEnv* as first arg of every event; remove JNIEnv* where inappropriate.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13666
      Replace can_access_frames with can_access_local_variables; remove from purely stack access.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13667
      Use can_get_synthetic_attribute; fix description.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13668
      Clarify that zero length arrays must be deallocated.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13669
      Clarify RelinquishCapabilities.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13670
      Generalize JVMTI_ERROR_VM_DEAD to JVMTI_ERROR_WRONG_PHASE.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13671
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13672
  <change date="27 Apr 2003" version="v59">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13673
      Remove lingering indirect references to OBSOLETE_METHOD_ID.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13674
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13675
  <change date="4 May 2003" version="v60">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13676
      Allow DestroyRawMonitor during OnLoad.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13677
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13678
  <change date="7 May 2003" version="v61">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13679
      Added not monitor owner error return to DestroyRawMonitor.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13680
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13681
  <change date="13 May 2003" version="v62">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13682
      Clarify semantics of raw monitors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13683
      Change flags on <code>GetThreadStatus</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13684
      <code>GetClassLoader</code> return NULL for the bootstrap class loader.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13685
      Add <code>GetClassName</code> issue.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13686
      Define local variable signature.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13687
      Disallow zero in annotations array of <code>GetObjectsWithAnnotations</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13688
      Remove over specification in <code>GetObjectsWithAnnotations</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13689
      Elide <code>SetAllocationHooks</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13690
      Elide <code>SuspendAllThreads</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13691
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13692
  <change date="14 May 2003" version="v63">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13693
      Define the data type <code>jvmtiEventCallbacks</code>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13694
      Zero length allocations return NULL.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13695
      Keep SetAllocationHooks in JVMDI, but remove from <jvmti/>.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13696
      Add JVMTI_THREAD_STATUS_FLAG_INTERRUPTED.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13697
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13698
  <change date="15 May 2003" version="v64">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13699
      Better wording, per review.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13700
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13701
  <change date="15 May 2003" version="v65">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13702
      First Alpha.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13703
      Make jmethodID and jfieldID unique, jclass not used.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13704
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13705
  <change date="27 May 2003" version="v66">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13706
      Fix minor XSLT errors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13707
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13708
  <change date="13 June 2003" version="v67">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13709
      Undo making jfieldID unique (jmethodID still is).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13710
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13711
  <change date="17 June 2003" version="v68">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13712
      Changes per June 11th Expert Group meeting --
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13713
      Overhaul Heap functionality: single callback, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13714
      remove GetHeapRoots, add reachable iterators,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13715
      and rename "annotation" to "tag".
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13716
      NULL thread parameter on most functions is current
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13717
      thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13718
      Add timers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13719
      Remove ForceExit.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13720
      Add GetEnvironmentLocalStorage.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13721
      Add verbose flag and event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13722
      Add AddToBootstrapClassLoaderSearch.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13723
      Update ClassFileLoadHook.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13724
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13725
  <change date="18 June 2003" version="v69">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13726
      Clean up issues sections.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13727
      Rename GetClassName back to GetClassSignature and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13728
      fix description.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13729
      Add generic signature to GetClassSignature, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13730
      GetFieldSignature, GetMethodSignature, and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13731
      GetLocalVariableTable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13732
      Elide EstimateCostOfCapabilities.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13733
      Clarify that the system property functions operate
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13734
      on the VM view of system properties.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13735
      Clarify Agent_OnLoad.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13736
      Remove "const" from JNIEnv* in events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13737
      Add metadata accessors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13738
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13739
  <change date="18 June 2003" version="v70">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13740
      Add start_depth to GetStackTrace.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13741
      Move system properties to a new category.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13742
      Add GetObjectSize.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13743
      Remove "X" from command line flags.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13744
      XML, HTML, and spell check corrections.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13745
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13746
  <change date="19 June 2003" version="v71">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13747
      Fix JVMTI_HEAP_ROOT_THREAD to be 6.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13748
      Make each synopsis match the function name.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13749
      Fix unclear wording.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13750
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13751
  <change date="26 June 2003" version="v72">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13752
      SetThreadLocalStorage and SetEnvironmentLocalStorage should allow value
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13753
      to be set to NULL.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13754
      NotifyFramePop, GetFrameLocationm and all the local variable operations
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13755
      needed to have their wording about frames fixed.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13756
      Grammar and clarity need to be fixed throughout.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13757
      Capitalization and puntuation need to be consistent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13758
      Need micro version number and masks for accessing major, minor, and micro.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13759
      The error code lists should indicate which must be returned by
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13760
      an implementation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13761
      The command line properties should be visible in the properties functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13762
      Disallow popping from the current thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13763
      Allow implementations to return opaque frame error when they cannot pop.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13764
      The NativeMethodBind event should be sent during any phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13765
      The DynamicCodeGenerated event should be sent during any phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13766
      The following functions should be allowed to operate before VMInit:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13767
	Set/GetEnvironmentLocalStorage
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13768
	GetMethodDeclaringClass
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13769
	GetClassSignature
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13770
	GetClassModifiers
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13771
	IsInterface
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13772
	IsArrayClass
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13773
	GetMethodName
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13774
	GetMethodModifiers
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13775
	GetMaxLocals
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13776
	GetArgumentsSize
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13777
	GetLineNumberTable
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13778
	GetMethodLocation
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13779
	IsMethodNative
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13780
	IsMethodSynthetic.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13781
      Other changes (to XSL):
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13782
      Argument description should show asterisk after not before pointers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13783
      NotifyFramePop, GetFrameLocationm and all the local variable operations
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13784
      should hsve the NO_MORE_FRAMES error added.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13785
      Not alive threads should have a different error return than invalid thread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13786
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13787
  <change date="7 July 2003" version="v73">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13788
      VerboseOutput event was missing message parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13789
      Minor fix-ups.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13790
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13791
  <change date="14 July 2003" version="v74">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13792
      Technical Publications Department corrections.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13793
      Allow thread and environment local storage to be set to NULL.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13794
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13795
  <change date="23 July 2003" version="v75">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13796
      Use new Agent_OnLoad rather than overloaded JVM_OnLoad.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13797
      Add JNICALL to callbacks (XSL).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13798
      Document JNICALL requirement for both events and callbacks (XSL).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13799
      Restrict RedefineClasses to methods and attributes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13800
      Elide the VerboseOutput event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13801
      VMObjectAlloc: restrict when event is sent and remove method parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13802
      Finish loose ends from Tech Pubs edit.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13803
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13804
  <change date="24 July 2003" version="v76">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13805
      Change ClassFileLoadHook event to send the class instead of a boolean of redefine.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13806
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13807
  <change date="24 July 2003" version="v77">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13808
      XML fixes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13809
      Minor text clarifications and corrections.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13810
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13811
  <change date="24 July 2003" version="v78">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13812
      Remove GetExceptionHandlerTable and GetThrownExceptions from <jvmti/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13813
      Clarify that stack frames are JVM Spec frames.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13814
      Split can_get_source_info into can_get_source_file_name, can_get_line_numbers,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13815
      and can_get_source_debug_extension.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13816
      PopFrame cannot have a native calling method.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13817
      Removed incorrect statement in GetClassloaderClasses 
9431
e3bea7d56a98 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 7896
diff changeset
 13818
      (see <vmspec chapter="4.4"/>).
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13819
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13820
  <change date="24 July 2003" version="v79">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13821
      XML and text fixes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13822
      Move stack frame description into Stack Frame category.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13823
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13824
  <change date="26 July 2003" version="v80">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13825
      Allow NULL (means bootstrap loader) for GetClassloaderClasses.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13826
      Add new heap reference kinds for references from classes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13827
      Add timer information struct and query functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13828
      Add AvailableProcessors.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13829
      Rename GetOtherThreadCpuTime to GetThreadCpuTime.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13830
      Explicitly add JVMTI_ERROR_INVALID_THREAD and JVMTI_ERROR_THREAD_NOT_ALIVE
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13831
      to SetEventNotification mode.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13832
      Add initial thread to the VM_INIT event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13833
      Remove platform assumptions from AddToBootstrapClassLoaderSearch.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13834
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13835
  <change date="26 July 2003" version="v81">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13836
      Grammar and clarity changes per review.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13837
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13838
  <change date="27 July 2003" version="v82">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13839
      More grammar and clarity changes per review.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13840
      Add Agent_OnUnload.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13841
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13842
  <change date="28 July 2003" version="v83">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13843
      Change return type of Agent_OnUnload to void.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13844
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13845
  <change date="28 July 2003" version="v84">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13846
      Rename JVMTI_REFERENCE_ARRAY to JVMTI_REFERENCE_ARRAY_ELEMENT.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13847
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13848
  <change date="28 July 2003" version="v85">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13849
      Steal java.lang.Runtime.availableProcessors() wording for 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13850
      AvailableProcessors().
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13851
      Guarantee that zero will never be an event ID.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13852
      Remove some issues which are no longer issues.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13853
      Per review, rename and more completely document the timer
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13854
      information functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13855
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13856
  <change date="29 July 2003" version="v86">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13857
      Non-spec visible change to XML controlled implementation:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13858
        SetThreadLocalStorage must run in VM mode.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13859
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13860
  <change date="5 August 2003" version="0.1.87">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13861
      Add GetErrorName.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13862
      Add varargs warning to jvmtiExtensionEvent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13863
      Remove "const" on the jvmtiEnv* of jvmtiExtensionEvent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13864
      Remove unused can_get_exception_info capability.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13865
      Pass jvmtiEnv* and JNIEnv* to the jvmtiStartFunction.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13866
      Fix jvmtiExtensionFunctionInfo.func declared type.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13867
      Extension function returns error code.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13868
      Use new version numbering.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13869
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13870
  <change date="5 August 2003" version="0.2.88">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13871
      Remove the ClassUnload event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13872
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13873
  <change date="8 August 2003" version="0.2.89">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13874
      Heap reference iterator callbacks return an enum that 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13875
      allows outgoing object references to be ignored.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13876
      Allow JNIEnv as a param type to extension events/functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13877
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13878
  <change date="15 August 2003" version="0.2.90">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13879
      Fix a typo.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13880
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13881
  <change date="2 September 2003" version="0.2.91">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13882
      Remove all metadata functions: GetClassMetadata, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13883
      GetFieldMetadata, and GetMethodMetadata.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13884
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13885
  <change date="1 October 2003" version="0.2.92">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13886
      Mark the functions Allocate. Deallocate, RawMonitor*, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13887
      SetEnvironmentLocalStorage, and GetEnvironmentLocalStorage 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13888
      as safe for use in heap callbacks and GC events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13889
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13890
  <change date="24 November 2003" version="0.2.93">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13891
      Add pass through opaque user data pointer to heap iterate 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13892
      functions and callbacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13893
      In the CompiledMethodUnload event, send the code address.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13894
      Add GarbageCollectionOccurred event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13895
      Add constant pool reference kind.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13896
      Mark the functions CreateRawMonitor and DestroyRawMonitor
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13897
      as safe for use in heap callbacks and GC events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13898
      Clarify: VMDeath, GetCurrentThreadCpuTimerInfo, 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13899
      GetThreadCpuTimerInfo, IterateOverReachableObjects,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13900
      IterateOverObjectsReachableFromObject, GetTime and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13901
      JVMTI_ERROR_NULL_POINTER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13902
      Add missing errors to: GenerateEvents and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13903
      AddToBootstrapClassLoaderSearch.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13904
      Fix description of ClassFileLoadHook name parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13905
      In heap callbacks and GC/ObjectFree events, specify
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13906
      that only explicitly allowed functions can be called.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13907
      Allow GetCurrentThreadCpuTimerInfo, GetCurrentThreadCpuTime,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13908
      GetTimerInfo, and GetTime during callback.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13909
      Allow calling SetTag/GetTag during the onload phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13910
      SetEventNotificationMode, add: error attempted inappropriate
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13911
      thread level control.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13912
      Remove jvmtiExceptionHandlerEntry.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13913
      Fix handling of native methods on the stack -- 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13914
      location_ptr param of GetFrameLocation, remove 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13915
      JVMTI_ERROR_OPAQUE_FRAME from GetFrameLocation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13916
      jvmtiFrameInfo.location, and jlocation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13917
      Remove typo (from JVMPI) implying that the MonitorWaited
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13918
      event is sent on sleep.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13919
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13920
  <change date="25 November 2003" version="0.2.94">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13921
      Clarifications and typos.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13922
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13923
  <change date="3 December 2003" version="0.2.95">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13924
      Allow NULL user_data in heap iterators.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13925
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13926
  <change date="28 January 2004" version="0.2.97">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13927
      Add GetThreadState, deprecate GetThreadStatus.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13928
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13929
  <change date="29 January 2004" version="0.2.98">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13930
      INVALID_SLOT and TYPE_MISMATCH errors should be optional.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13931
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13932
  <change date="12 February 2004" version="0.2.102">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13933
      Remove MonitorContendedExit.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13934
      Added JNIEnv parameter to VMObjectAlloc.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13935
      Clarified definition of class_tag and referrer_index 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13936
      parameters to heap callbacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13937
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13938
  <change date="16 Febuary 2004" version="0.2.103">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13939
      Document JAVA_TOOL_OPTIONS.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13940
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13941
  <change date="17 Febuary 2004" version="0.2.105">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13942
      Divide start phase into primordial and start.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13943
      Add VMStart event
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13944
      Change phase associations of functions and events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13945
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13946
  <change date="18 Febuary 2004" version="0.3.6">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13947
      Elide deprecated GetThreadStatus.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13948
      Bump minor version, subtract 100 from micro version
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13949
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13950
  <change date="18 Febuary 2004" version="0.3.7">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13951
      Document that timer nanosecond values are unsigned.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13952
      Clarify text having to do with native methods.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13953
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13954
  <change date="19 Febuary 2004" version="0.3.8">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13955
      Fix typos.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13956
      Remove elided deprecated GetThreadStatus.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13957
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13958
  <change date="23 Febuary 2004" version="0.3.9">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13959
      Require NotifyFramePop to act on suspended threads.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13960
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13961
  <change date="24 Febuary 2004" version="0.3.10">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13962
      Add capabilities 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13963
        (<internallink id="jvmtiCapabilities.can_redefine_any_class"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13964
         ><code>can_redefine_any_class</code></internallink>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13965
      and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13966
         <internallink id="jvmtiCapabilities.can_generate_all_class_hook_events"
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13967
         ><code>can_generate_all_class_hook_events</code></internallink>) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13968
      and an error (<errorlink id="JVMTI_ERROR_UNMODIFIABLE_CLASS"></errorlink>) 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13969
      which allow some classes to be unmodifiable.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13970
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13971
  <change date="28 Febuary 2004" version="0.3.11">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13972
      Add JVMTI_ERROR_MUST_POSSESS_CAPABILITY to SetEventNotificationMode.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13973
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13974
  <change date="8 March 2004" version="0.3.12">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13975
      Clarified CompiledMethodUnload so that it is clear the event
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13976
      may be posted after the class has been unloaded.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13977
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13978
  <change date="5 March 2004" version="0.3.13">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13979
      Change the size parameter of VMObjectAlloc to jlong to match GetObjectSize.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13980
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13981
  <change date="13 March 2004" version="0.3.14">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13982
      Added guideline for the use of the JNI FindClass function in event
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13983
      callback functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13984
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13985
  <change date="15 March 2004" version="0.3.15">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13986
      Add GetAllStackTraces and GetThreadListStackTraces.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13987
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13988
  <change date="19 March 2004" version="0.3.16">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13989
      ClassLoad and ClassPrepare events can be posted during start phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13990
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13991
  <change date="25 March 2004" version="0.3.17">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13992
      Add JVMTI_ERROR_NATIVE_METHOD to GetLineNumberTable, GetLocalVariableTable,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13993
      GetMaxLocals, GetArgumentsSize, GetMethodLocation, GetBytecodes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13994
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13995
  <change date="29 March 2004" version="0.3.18">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13996
      Return the timer kind in the timer information structure.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13997
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13998
  <change date="31 March 2004" version="0.3.19">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 13999
      Spec clarifications:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14000
      JVMTI_THREAD_STATE_IN_NATIVE might not include JNI or <jvmti/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14001
      ForceGarbageCollection does not run finalizers.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14002
      The context of the specification is the Java platform.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14003
      Warn about early instrumentation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14004
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14005
  <change date="1 April 2004" version="0.3.20">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14006
      Refinements to the above clarifications and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14007
      Clarify that an error returned by Agent_OnLoad terminates the VM.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14008
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14009
  <change date="1 April 2004" version="0.3.21">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14010
      Array class creation does not generate a class load event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14011
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14012
  <change date="7 April 2004" version="0.3.22">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14013
      Align thread state hierarchy more closely with java.lang.Thread.State.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14014
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14015
  <change date="12 April 2004" version="0.3.23">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14016
      Clarify the documentation of thread state.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14017
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14018
  <change date="19 April 2004" version="0.3.24">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14019
      Remove GarbageCollectionOccurred event -- can be done by agent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14020
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14021
  <change date="22 April 2004" version="0.3.25">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14022
      Define "command-line option".
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14023
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14024
  <change date="29 April 2004" version="0.3.26">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14025
      Describe the intended use of bytecode instrumentation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14026
      Fix description of extension event first parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14027
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14028
  <change date="30 April 2004" version="0.3.27">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14029
      Clarification and typos.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14030
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14031
  <change date="18 May 2004" version="0.3.28">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14032
      Remove DataDumpRequest event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14033
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14034
  <change date="18 May 2004" version="0.3.29">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14035
      Clarify RawMonitorWait with zero timeout.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14036
      Clarify thread state after RunAgentThread.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14037
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14038
  <change date="24 May 2004" version="0.3.30">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14039
      Clean-up: fix bad/old links, etc.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14040
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14041
  <change date="30 May 2004" version="0.3.31">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14042
      Clarifications including:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14043
      All character strings are modified UTF-8.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14044
      Agent thread visibiity.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14045
      Meaning of obsolete method version.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14046
      Thread invoking heap callbacks,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14047
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14048
  <change date="1 June 2004" version="1.0.32">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14049
      Bump major.minor version numbers to "1.0".
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14050
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14051
  <change date="2 June 2004" version="1.0.33">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14052
      Clarify interaction between ForceGarbageCollection 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14053
      and ObjectFree.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14054
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14055
  <change date="6 June 2004" version="1.0.34">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14056
      Restrict AddToBootstrapClassLoaderSearch and 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14057
      SetSystemProperty to the OnLoad phase only.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14058
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14059
  <change date="11 June 2004" version="1.0.35">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14060
      Fix typo in SetTag.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14061
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14062
  <change date="18 June 2004" version="1.0.36">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14063
      Fix trademarks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14064
      Add missing parameter in example GetThreadState usage.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14065
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14066
  <change date="4 August 2004" version="1.0.37">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14067
      Copyright updates.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14068
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14069
  <change date="5 November 2004" version="1.0.38">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14070
      Add missing function table layout.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14071
      Add missing description of C++ member function format of functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14072
      Clarify that name in CFLH can be NULL.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14073
      Released as part of <tm>J2SE</tm> 5.0.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14074
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14075
  <change date="24 April 2005" version="1.1.47">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14076
      Bump major.minor version numbers to "1.1".
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14077
      Add ForceEarlyReturn* functions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14078
      Add GetOwnedMonitorStackDepthInfo function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14079
      Add GetCurrentThread function.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14080
      Add "since" version marker.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14081
      Add AddToSystemClassLoaderSearch.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14082
      Allow AddToBootstrapClassLoaderSearch be used in live phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14083
      Fix historic rubbish in the descriptions of the heap_object_callback 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14084
      parameter of IterateOverHeap and IterateOverInstancesOfClass functions; 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14085
      disallow NULL for this parameter.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14086
      Clarify, correct and make consistent: wording about current thread,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14087
      opaque frames and insufficient number of frames in PopFrame.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14088
      Consistently use "current frame" rather than "topmost".
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14089
      Clarify the JVMTI_ERROR_TYPE_MISMATCH errors in GetLocal* and SetLocal*
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14090
      by making them compatible with those in ForceEarlyReturn*.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14091
      Many other clarifications and wording clean ups.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14092
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14093
  <change date="25 April 2005" version="1.1.48">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14094
      Add GetConstantPool.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14095
      Switch references to the first edition of the VM Spec, to the seconds edition.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14096
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14097
  <change date="26 April 2005" version="1.1.49">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14098
      Clarify minor/major version order in GetConstantPool.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14099
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14100
  <change date="26 April 2005" version="1.1.50">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14101
      Add SetNativeMethodPrefix and SetNativeMethodPrefixes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14102
      Reassign GetOwnedMonitorStackDepthInfo to position 153.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14103
      Break out Class Loader Search in its own documentation category.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14104
      Deal with overly long lines in XML source.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14105
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14106
  <change date="29 April 2005" version="1.1.51">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14107
      Allow agents be started in the live phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14108
      Added paragraph about deploying agents.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14109
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14110
  <change date="30 April 2005" version="1.1.52">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14111
      Add specification description to SetNativeMethodPrefix(es).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14112
      Better define the conditions on GetConstantPool.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14113
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14114
  <change date="30 April 2005" version="1.1.53">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14115
      Break out the GetClassVersionNumber function from GetConstantPool.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14116
      Clean-up the references to the VM Spec.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14117
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14118
  <change date="1 May 2005" version="1.1.54">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14119
      Allow SetNativeMethodPrefix(es) in any phase.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14120
      Add clarifications about the impact of redefinition on GetConstantPool.  
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14121
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14122
  <change date="2 May 2005" version="1.1.56">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14123
      Various clarifications to SetNativeMethodPrefix(es).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14124
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14125
  <change date="2 May 2005" version="1.1.57">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14126
      Add missing performance warning to the method entry event.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14127
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14128
  <change date="5 May 2005" version="1.1.58">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14129
      Remove internal JVMDI support.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14130
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14131
  <change date="8 May 2005" version="1.1.59">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14132
      Add <functionlink id="RetransformClasses"/>.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14133
      Revamp the bytecode instrumentation documentation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14134
      Change <functionlink id="IsMethodObsolete"/> to no longer 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14135
      require the can_redefine_classes capability.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14136
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14137
  <change date="11 May 2005" version="1.1.63">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14138
      Clarifications for retransformation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14139
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14140
  <change date="11 May 2005" version="1.1.64">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14141
      Clarifications for retransformation, per review.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14142
      Lock "retransformation (in)capable" at class load enable time.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14143
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14144
  <change date="4 June 2005" version="1.1.67">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14145
      Add new heap functionity which supports reporting primitive values,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14146
      allows setting the referrer tag, and has more powerful filtering:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14147
      FollowReferences, IterateThroughHeap, and their associated 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14148
      callbacks, structs, enums, and constants.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14149
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14150
  <change date="4 June 2005" version="1.1.68">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14151
      Clarification.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14152
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14153
  <change date="6 June 2005" version="1.1.69">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14154
      FollowReferences, IterateThroughHeap: Put callbacks in a struct;
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14155
      Add missing error codes; reduce bits in the visit control flags.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14156
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14157
  <change date="14 June 2005" version="1.1.70">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14158
      More on new heap functionity: spec clean-up per review.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14159
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14160
  <change date="15 June 2005" version="1.1.71">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14161
      More on new heap functionity: Rename old heap section to Heap (1.0).
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14162
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14163
  <change date="21 June 2005" version="1.1.72">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14164
      Fix typos.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14165
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14166
  <change date="27 June 2005" version="1.1.73">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14167
      Make referrer info structure a union.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14168
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14169
  <change date="9 September 2005" version="1.1.74">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14170
      In new heap functions:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14171
      Add missing superclass reference kind.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14172
      Use a single scheme for computing field indexes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14173
      Remove outdated references to struct based referrer info.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14174
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14175
  <change date="12 September 2005" version="1.1.75">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14176
      Don't callback during FollowReferences on frivolous java.lang.Object superclass.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14177
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14178
  <change date="13 September 2005" version="1.1.76">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14179
      In string primitive callback, length now Unicode length.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14180
      In array and string primitive callbacks, value now "const".
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14181
      Note possible compiler impacts on setting JNI function table.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14182
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14183
  <change date="13 September 2005" version="1.1.77">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14184
      GetClassVersionNumbers() and GetConstantPool() should return
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14185
      error on array or primitive class.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14186
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14187
  <change date="14 September 2005" version="1.1.78">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14188
      Grammar fixes.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14189
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14190
  <change date="26 September 2005" version="1.1.79">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14191
      Add IsModifiableClass query.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14192
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14193
  <change date="9 February 2006" version="1.1.81">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14194
      Add referrer_class_tag parameter to jvmtiHeapReferenceCallback.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14195
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14196
  <change date="13 February 2006" version="1.1.82">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14197
      Doc fixes: update can_redefine_any_class to include retransform.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14198
      Clarify that exception events cover all Throwables.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14199
      In GetStackTrace, no test is done for start_depth too big if start_depth is zero,
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14200
      Clarify fields reported in Primitive Field Callback -- static vs instance.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14201
      Repair confusing names of heap types, including callback names.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14202
      Require consistent usage of stack depth in the face of thread launch methods.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14203
      Note incompatibility of <jvmti/> memory management with other systems.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14204
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14205
  <change date="14 February 2006" version="1.1.85">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14206
      Fix typos and missing renames.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14207
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14208
  <change date="13 March 2006" version="1.1.86">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14209
      Clarify that jmethodIDs and jfieldIDs can be saved.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14210
      Clarify that Iterate Over Instances Of Class includes subclasses.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14211
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14212
  <change date="14 March 2006" version="1.1.87">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14213
      Better phrasing.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14214
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14215
  <change date="16 March 2006" version="1.1.88">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14216
      Match the referrer_index for static fields in Object Reference Callback 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14217
      with the Reference Implementation (and all other known implementations);
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14218
      that is, make it match the definition for instance fields.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14219
      In GetThreadListStackTraces, add JVMTI_ERROR_INVALID_THREAD to cover 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14220
      an invalid thread in the list; and specify that not started threads
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14221
      return empty stacks.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14222
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14223
  <change date="17 March 2006" version="1.1.89">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14224
      Typo.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14225
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14226
  <change date="25 March 2006" version="1.1.90">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14227
      Typo.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14228
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14229
  <change date="6 April 2006" version="1.1.91">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14230
      Remove restrictions on AddToBootstrapClassLoaderSearch and
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14231
      AddToSystemClassLoaderSearch.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14232
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14233
  <change date="1 May 2006" version="1.1.93">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14234
      Changed spec to return -1 for monitor stack depth for the
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14235
      implementation which can not determine stack depth. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14236
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14237
  <change date="3 May 2006" version="1.1.94">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14238
      Corrections for readability and accuracy courtesy of Alan Pratt of IBM. 
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14239
      List the object relationships reported in FollowReferences.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14240
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14241
  <change date="5 May 2006" version="1.1.95">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14242
      Clarify the object relationships reported in FollowReferences.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14243
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14244
  <change date="28 June 2006" version="1.1.98">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14245
      Clarify DisposeEnvironment; add warning.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14246
      Fix typos in SetLocalXXX "retrieve" => "set".
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14247
      Clarify that native method prefixes must remain set while used.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14248
      Clarify that exactly one Agent_OnXXX is called per agent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14249
      Clarify that library loading is independent from start-up.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14250
      Remove ambiguous reference to Agent_OnLoad in the Agent_OnUnload spec.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14251
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14252
  <change date="31 July 2006" version="1.1.99">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14253
      Clarify the interaction between functions and exceptions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14254
      Clarify and give examples of field indices.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14255
      Remove confusing "That is" sentence from MonitorWait and MonitorWaited events.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14256
      Update links to point to Java 6.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14257
  </change>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14258
  <change date="6 August 2006" version="1.1.102">
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14259
      Add ResourceExhaustedEvent.
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14260
  </change>
14287
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 14261
  <change date="11 October 2012" version="1.2.2">
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 14262
      Fixed the "HTTP" and "Missing Anchor" errors reported by the LinkCheck tool.
4554a0b881ae 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 9431
diff changeset
 14263
  </change>
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14264
</changehistory>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14265
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14266
</specification>
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14267
<!-- Keep this comment at the end of the file
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14268
Local variables:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14269
mode: sgml
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14270
sgml-omittag:t
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14271
sgml-shorttag:t
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14272
sgml-namecase-general:t
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14273
sgml-general-insert-case:lower
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14274
sgml-minimize-attributes:nil
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14275
sgml-always-quote-attributes:t
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14276
sgml-indent-step:2
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14277
sgml-indent-data:t
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14278
sgml-parent-document:nil
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14279
sgml-exposed-tags:nil
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14280
sgml-local-catalogs:nil
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14281
sgml-local-ecat-files:nil
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14282
End:
489c9b5090e2 Initial load
duke
parents:
diff changeset
 14283
-->