annotate src/share/vm/prims/jvmti.xml @ 12355:cefad50507d8

Merge with hs25-b53
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 11 Oct 2013 10:38:03 +0200
parents 8e94527f601e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 <?xml version="1.0" encoding="ISO-8859-1"?>
a61af66fc99e Initial load
duke
parents:
diff changeset
2 <?xml-stylesheet type="text/xsl" href="jvmti.xsl"?>
a61af66fc99e Initial load
duke
parents:
diff changeset
3 <!--
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
4 Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
5 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
6
a61af66fc99e Initial load
duke
parents:
diff changeset
7 This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
8 under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
9 published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
10
a61af66fc99e Initial load
duke
parents:
diff changeset
11 This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
14 version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
15 accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
16
a61af66fc99e Initial load
duke
parents:
diff changeset
17 You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
18 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
19 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
20
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
21 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
22 or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
23 questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
24
a61af66fc99e Initial load
duke
parents:
diff changeset
25 -->
a61af66fc99e Initial load
duke
parents:
diff changeset
26
a61af66fc99e Initial load
duke
parents:
diff changeset
27 <!DOCTYPE specification [
a61af66fc99e Initial load
duke
parents:
diff changeset
28 <!ELEMENT specification (title, intro*, functionsection, errorsection,
a61af66fc99e Initial load
duke
parents:
diff changeset
29 eventsection, datasection, issuessection, changehistory)>
a61af66fc99e Initial load
duke
parents:
diff changeset
30 <!ATTLIST specification label CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
31 majorversion CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
32 minorversion CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
33 microversion CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
34
a61af66fc99e Initial load
duke
parents:
diff changeset
35 <!ELEMENT title (#PCDATA|jvmti|tm)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
36 <!ATTLIST title subtitle CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
37
a61af66fc99e Initial load
duke
parents:
diff changeset
38 <!ELEMENT intro ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
39 <!ATTLIST intro id CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
40 label CDATA "">
a61af66fc99e Initial load
duke
parents:
diff changeset
41
a61af66fc99e Initial load
duke
parents:
diff changeset
42 <!ELEMENT functionsection (intro*, category*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
43 <!ATTLIST functionsection label CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
44
a61af66fc99e Initial load
duke
parents:
diff changeset
45 <!ELEMENT category ((intro|typedef|uniontypedef|capabilitiestypedef)*,
a61af66fc99e Initial load
duke
parents:
diff changeset
46 (function|callback|elide)*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
47 <!ATTLIST category id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
48 label CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
49
a61af66fc99e Initial load
duke
parents:
diff changeset
50 <!ELEMENT function (synopsis, typedef*, description?, origin,
a61af66fc99e Initial load
duke
parents:
diff changeset
51 (capabilities|eventcapabilities),
a61af66fc99e Initial load
duke
parents:
diff changeset
52 parameters, errors)>
a61af66fc99e Initial load
duke
parents:
diff changeset
53 <!ATTLIST function id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
54 num CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
55 phase (onload|onloadOnly|start|live|any) #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
56 callbacksafe (safe|unsafe) #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
57 impl CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
58 hide CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
59 jkernel (yes|no) #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
60 since CDATA "1.0">
a61af66fc99e Initial load
duke
parents:
diff changeset
61
a61af66fc99e Initial load
duke
parents:
diff changeset
62 <!ELEMENT callback ((jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|jthreadGroup|jobject|
a61af66fc99e Initial load
duke
parents:
diff changeset
63 jvalue|enum|jint|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void),
a61af66fc99e Initial load
duke
parents:
diff changeset
64 synopsis, description?, parameters)>
a61af66fc99e Initial load
duke
parents:
diff changeset
65 <!ATTLIST callback id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
66 since CDATA "1.0">
a61af66fc99e Initial load
duke
parents:
diff changeset
67
a61af66fc99e Initial load
duke
parents:
diff changeset
68 <!ELEMENT synopsis (#PCDATA|jvmti)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
69
a61af66fc99e Initial load
duke
parents:
diff changeset
70 <!ELEMENT typedef (description?, field*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
71 <!ATTLIST typedef id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
72 label CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
73 since CDATA "1.0">
a61af66fc99e Initial load
duke
parents:
diff changeset
74
a61af66fc99e Initial load
duke
parents:
diff changeset
75 <!ELEMENT uniontypedef (description?, field*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
76 <!ATTLIST uniontypedef id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
77 label CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
78 since CDATA "1.0">
a61af66fc99e Initial load
duke
parents:
diff changeset
79
a61af66fc99e Initial load
duke
parents:
diff changeset
80 <!ELEMENT field ((jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|jthreadGroup|jobject|
a61af66fc99e 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),
a61af66fc99e Initial load
duke
parents:
diff changeset
82 description)>
a61af66fc99e Initial load
duke
parents:
diff changeset
83 <!ATTLIST field id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
84
a61af66fc99e Initial load
duke
parents:
diff changeset
85 <!ELEMENT capabilitiestypedef (description?, capabilityfield*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
86 <!ATTLIST capabilitiestypedef id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
87 label CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
88
a61af66fc99e Initial load
duke
parents:
diff changeset
89 <!ELEMENT capabilityfield (description)>
a61af66fc99e Initial load
duke
parents:
diff changeset
90 <!ATTLIST capabilityfield id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
91 disp1 CDATA ""
a61af66fc99e Initial load
duke
parents:
diff changeset
92 disp2 CDATA ""
a61af66fc99e Initial load
duke
parents:
diff changeset
93 since CDATA "1.0">
a61af66fc99e Initial load
duke
parents:
diff changeset
94
a61af66fc99e Initial load
duke
parents:
diff changeset
95 <!ELEMENT description ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
96
a61af66fc99e Initial load
duke
parents:
diff changeset
97 <!ELEMENT capabilities (required*, capability*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
98
a61af66fc99e Initial load
duke
parents:
diff changeset
99 <!ELEMENT eventcapabilities EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
100
a61af66fc99e Initial load
duke
parents:
diff changeset
101 <!ELEMENT required ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
102 <!ATTLIST required id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
103
a61af66fc99e Initial load
duke
parents:
diff changeset
104 <!ELEMENT capability ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
105 <!ATTLIST capability id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
106
a61af66fc99e Initial load
duke
parents:
diff changeset
107 <!ELEMENT parameters (param*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
108
a61af66fc99e Initial load
duke
parents:
diff changeset
109 <!ELEMENT param ((jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|jthreadGroup|jobject|
a61af66fc99e Initial load
duke
parents:
diff changeset
110 jvalue|enum|jint|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|varargs|struct|ptrtype|
a61af66fc99e Initial load
duke
parents:
diff changeset
111 outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf),
a61af66fc99e Initial load
duke
parents:
diff changeset
112 description)>
a61af66fc99e Initial load
duke
parents:
diff changeset
113 <!ATTLIST param id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
114
a61af66fc99e Initial load
duke
parents:
diff changeset
115 <!ELEMENT jmethodID EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
116 <!ATTLIST jmethodID class CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
117 native CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
118
a61af66fc99e Initial load
duke
parents:
diff changeset
119 <!ELEMENT jfieldID EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
120 <!ATTLIST jfieldID class CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
121
a61af66fc99e Initial load
duke
parents:
diff changeset
122 <!ELEMENT jclass EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
123 <!ATTLIST jclass method CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
124 field CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
125
a61af66fc99e Initial load
duke
parents:
diff changeset
126 <!ELEMENT jframeID EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
127 <!ATTLIST jframeID thread CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
128
a61af66fc99e Initial load
duke
parents:
diff changeset
129 <!ELEMENT jrawMonitorID EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
130
a61af66fc99e Initial load
duke
parents:
diff changeset
131 <!ELEMENT jthread EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
132 <!ATTLIST jthread started CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
133 null CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
134 frame CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
135 impl CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
136
a61af66fc99e Initial load
duke
parents:
diff changeset
137 <!ELEMENT varargs EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
138
a61af66fc99e Initial load
duke
parents:
diff changeset
139 <!ELEMENT jthreadGroup EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
140 <!ELEMENT jobject EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
141 <!ELEMENT jvalue EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
142 <!ELEMENT jchar EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
143 <!ELEMENT jint EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
144 <!ATTLIST jint min CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
145 <!ELEMENT jlong EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
146 <!ELEMENT jfloat EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
147 <!ELEMENT jdouble EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
148 <!ELEMENT jlocation EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
149 <!ELEMENT jboolean EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
150 <!ELEMENT char EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
151 <!ELEMENT uchar EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
152 <!ELEMENT size_t EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
153 <!ELEMENT void EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
154 <!ELEMENT enum (#PCDATA)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
155 <!ELEMENT struct (#PCDATA)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
156
a61af66fc99e Initial load
duke
parents:
diff changeset
157 <!ELEMENT nullok ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
158
a61af66fc99e Initial load
duke
parents:
diff changeset
159 <!ELEMENT ptrtype ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
a61af66fc99e Initial load
duke
parents:
diff changeset
160 jthreadGroup|jobject|jvalue), nullok?)>
a61af66fc99e Initial load
duke
parents:
diff changeset
161
a61af66fc99e Initial load
duke
parents:
diff changeset
162 <!ELEMENT outptr ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
a61af66fc99e Initial load
duke
parents:
diff changeset
163 jthreadGroup|jobject|jvalue|enum|jchar|jint|jlong|jfloat|jdouble|
a61af66fc99e Initial load
duke
parents:
diff changeset
164 jlocation|jboolean|char|uchar|size_t|void), nullok?)>
a61af66fc99e Initial load
duke
parents:
diff changeset
165
a61af66fc99e Initial load
duke
parents:
diff changeset
166 <!ELEMENT allocbuf ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
a61af66fc99e Initial load
duke
parents:
diff changeset
167 jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
a61af66fc99e Initial load
duke
parents:
diff changeset
168 jlocation|jboolean|char|uchar|size_t|void), nullok?)>
a61af66fc99e Initial load
duke
parents:
diff changeset
169 <!ATTLIST allocbuf incount CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
170 outcount CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
171
a61af66fc99e Initial load
duke
parents:
diff changeset
172 <!ELEMENT allocallocbuf ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
a61af66fc99e Initial load
duke
parents:
diff changeset
173 jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
a61af66fc99e Initial load
duke
parents:
diff changeset
174 jlocation|jboolean|char|uchar|size_t|void), nullok?)>
a61af66fc99e Initial load
duke
parents:
diff changeset
175 <!ATTLIST allocallocbuf incount CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
176 outcount CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
177
a61af66fc99e Initial load
duke
parents:
diff changeset
178 <!ELEMENT inptr (struct, nullok?)>
a61af66fc99e Initial load
duke
parents:
diff changeset
179
a61af66fc99e Initial load
duke
parents:
diff changeset
180 <!ELEMENT inbuf ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
a61af66fc99e Initial load
duke
parents:
diff changeset
181 jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
a61af66fc99e Initial load
duke
parents:
diff changeset
182 jlocation|jboolean|char|uchar|size_t|void), nullok?)>
a61af66fc99e Initial load
duke
parents:
diff changeset
183 <!ATTLIST inbuf incount CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
184
a61af66fc99e Initial load
duke
parents:
diff changeset
185 <!ELEMENT outbuf ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
a61af66fc99e Initial load
duke
parents:
diff changeset
186 jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
a61af66fc99e Initial load
duke
parents:
diff changeset
187 jlocation|jboolean|char|uchar|size_t|void|outbuf), nullok?)>
a61af66fc99e Initial load
duke
parents:
diff changeset
188 <!ATTLIST outbuf incount CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
189 outcount CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
190
a61af66fc99e Initial load
duke
parents:
diff changeset
191 <!ELEMENT vmbuf ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
a61af66fc99e Initial load
duke
parents:
diff changeset
192 jthreadGroup|jobject|jvalue|enum|jchar|jint|jlong|jfloat|jdouble|
a61af66fc99e Initial load
duke
parents:
diff changeset
193 jlocation|jboolean|char|uchar|size_t|void), nullok?)>
a61af66fc99e Initial load
duke
parents:
diff changeset
194 <!ATTLIST vmbuf incount CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
195 outcount CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
196
a61af66fc99e Initial load
duke
parents:
diff changeset
197 <!ELEMENT agentbuf ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
a61af66fc99e Initial load
duke
parents:
diff changeset
198 jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
a61af66fc99e Initial load
duke
parents:
diff changeset
199 jlocation|jboolean|char|uchar|size_t|void), nullok?)>
a61af66fc99e Initial load
duke
parents:
diff changeset
200 <!ATTLIST agentbuf incount CDATA #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
201 outcount CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
202
a61af66fc99e Initial load
duke
parents:
diff changeset
203 <!ELEMENT allocfieldbuf ((struct|jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|
a61af66fc99e Initial load
duke
parents:
diff changeset
204 jthreadGroup|jobject|jvalue|enum|jint|jlong|jfloat|jdouble|
a61af66fc99e Initial load
duke
parents:
diff changeset
205 jlocation|jboolean|char|uchar|size_t|void))>
a61af66fc99e Initial load
duke
parents:
diff changeset
206 <!ATTLIST allocfieldbuf outcount CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
207
a61af66fc99e Initial load
duke
parents:
diff changeset
208 <!ELEMENT errors (error*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
209
a61af66fc99e Initial load
duke
parents:
diff changeset
210 <!ELEMENT error ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
211 <!ATTLIST error id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
212
a61af66fc99e Initial load
duke
parents:
diff changeset
213 <!ELEMENT errorsection (intro*, errorcategory*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
214 <!ATTLIST errorsection label CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
215
a61af66fc99e Initial load
duke
parents:
diff changeset
216 <!ELEMENT errorcategory (intro*, errorid*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
217 <!ATTLIST errorcategory id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
218 label CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
219
a61af66fc99e Initial load
duke
parents:
diff changeset
220 <!ELEMENT errorid ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
221 <!ATTLIST errorid id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
222 num CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
223
a61af66fc99e Initial load
duke
parents:
diff changeset
224 <!ELEMENT datasection (intro*, basetypes*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
225
a61af66fc99e Initial load
duke
parents:
diff changeset
226 <!ELEMENT basetypes (intro*, basetype*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
227 <!ATTLIST basetypes id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
228 label CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
229
a61af66fc99e Initial load
duke
parents:
diff changeset
230 <!ELEMENT basetype (definition?,description)>
a61af66fc99e Initial load
duke
parents:
diff changeset
231 <!ATTLIST basetype id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
232
a61af66fc99e Initial load
duke
parents:
diff changeset
233 <!ELEMENT definition (#PCDATA|jvmti)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
234
a61af66fc99e Initial load
duke
parents:
diff changeset
235 <!ELEMENT eventsection (intro*, (event|elide)*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
236 <!ATTLIST eventsection label CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
237
a61af66fc99e Initial load
duke
parents:
diff changeset
238 <!ELEMENT event (description, origin, typedef*, capabilities, parameters)>
a61af66fc99e Initial load
duke
parents:
diff changeset
239 <!ATTLIST event id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
240 label CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
241 const CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
242 num CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
243 phase (onload|start|live|any) #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
244 filtered (thread|global) #IMPLIED
a61af66fc99e Initial load
duke
parents:
diff changeset
245 since CDATA "1.0">
a61af66fc99e Initial load
duke
parents:
diff changeset
246
a61af66fc99e Initial load
duke
parents:
diff changeset
247 <!ELEMENT issuessection (intro*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
248 <!ATTLIST issuessection label CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
249
a61af66fc99e Initial load
duke
parents:
diff changeset
250 <!ELEMENT changehistory (intro*, change*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
251 <!ATTLIST changehistory update CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
252 id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
253
a61af66fc99e Initial load
duke
parents:
diff changeset
254 <!ELEMENT change ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
255 <!ATTLIST change date CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
256 version CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
257
a61af66fc99e Initial load
duke
parents:
diff changeset
258 <!ELEMENT functionlink (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
259 <!ATTLIST functionlink id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
260
a61af66fc99e Initial load
duke
parents:
diff changeset
261 <!ELEMENT datalink (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
262 <!ATTLIST datalink id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
263
a61af66fc99e Initial load
duke
parents:
diff changeset
264 <!ELEMENT typelink (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
265 <!ATTLIST typelink id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
266
a61af66fc99e Initial load
duke
parents:
diff changeset
267 <!ELEMENT fieldlink (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
268 <!ATTLIST fieldlink id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
269 struct CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
270
a61af66fc99e Initial load
duke
parents:
diff changeset
271 <!ELEMENT paramlink (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
272 <!ATTLIST paramlink id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
273
a61af66fc99e Initial load
duke
parents:
diff changeset
274 <!ELEMENT eventlink (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
275 <!ATTLIST eventlink id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
276
a61af66fc99e Initial load
duke
parents:
diff changeset
277 <!ELEMENT errorlink (#PCDATA|jvmti|code|i|b|tm)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
278 <!ATTLIST errorlink id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
279
a61af66fc99e Initial load
duke
parents:
diff changeset
280 <!ELEMENT externallink (#PCDATA|jvmti|code|i|b|tm)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
281 <!ATTLIST externallink id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
282
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
283 <!ELEMENT vmspec EMPTY>
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
284 <!ATTLIST vmspec chapter CDATA #IMPLIED>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
285
a61af66fc99e Initial load
duke
parents:
diff changeset
286 <!ELEMENT internallink (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
287 <!ATTLIST internallink id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
288
a61af66fc99e Initial load
duke
parents:
diff changeset
289 <!ELEMENT functionphaselist EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
290 <!ATTLIST functionphaselist phase (onload|onloadOnly|start|live|any) #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
291
a61af66fc99e Initial load
duke
parents:
diff changeset
292 <!ELEMENT eventphaselist EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
293 <!ATTLIST eventphaselist phase (onload|start|live|any) #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
294
a61af66fc99e Initial load
duke
parents:
diff changeset
295 <!ELEMENT issue ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
296
a61af66fc99e Initial load
duke
parents:
diff changeset
297 <!ELEMENT rationale ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
298
a61af66fc99e Initial load
duke
parents:
diff changeset
299 <!ELEMENT todo ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
300
a61af66fc99e Initial load
duke
parents:
diff changeset
301 <!ELEMENT origin (#PCDATA)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
302
a61af66fc99e Initial load
duke
parents:
diff changeset
303 <!ELEMENT elide (intro|function|callback|event)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
304 <!ATTLIST elide why CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
305
a61af66fc99e Initial load
duke
parents:
diff changeset
306 <!ELEMENT constants (constant*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
307 <!ATTLIST constants id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
308 label CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
309 kind (enum|bits|const) #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
310 since CDATA "1.0">
a61af66fc99e Initial load
duke
parents:
diff changeset
311
a61af66fc99e Initial load
duke
parents:
diff changeset
312 <!ELEMENT constant ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
313 <!ATTLIST constant id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
314 num CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
315
a61af66fc99e Initial load
duke
parents:
diff changeset
316 <!ELEMENT tm (#PCDATA)>
a61af66fc99e Initial load
duke
parents:
diff changeset
317
a61af66fc99e Initial load
duke
parents:
diff changeset
318 <!ELEMENT i (#PCDATA|jvmti|tm)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
319
a61af66fc99e Initial load
duke
parents:
diff changeset
320 <!ELEMENT b (#PCDATA|jvmti|code)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
321
a61af66fc99e Initial load
duke
parents:
diff changeset
322 <!ELEMENT code (#PCDATA|space)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
323
a61af66fc99e Initial load
duke
parents:
diff changeset
324 <!ELEMENT pre ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
325
a61af66fc99e Initial load
duke
parents:
diff changeset
326 <!ELEMENT space EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
327
a61af66fc99e Initial load
duke
parents:
diff changeset
328 <!ELEMENT jvmti EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
329
a61af66fc99e Initial load
duke
parents:
diff changeset
330 <!ELEMENT example (#PCDATA|i)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
331
a61af66fc99e Initial load
duke
parents:
diff changeset
332 <!ELEMENT br EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
333
a61af66fc99e Initial load
duke
parents:
diff changeset
334 <!ELEMENT p EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
335
a61af66fc99e Initial load
duke
parents:
diff changeset
336 <!ELEMENT dl (dt|dd)+>
a61af66fc99e Initial load
duke
parents:
diff changeset
337
a61af66fc99e Initial load
duke
parents:
diff changeset
338 <!ELEMENT dd ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
339
a61af66fc99e Initial load
duke
parents:
diff changeset
340 <!ELEMENT dt (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
341
a61af66fc99e Initial load
duke
parents:
diff changeset
342 <!ELEMENT table (tr)+>
a61af66fc99e Initial load
duke
parents:
diff changeset
343
a61af66fc99e Initial load
duke
parents:
diff changeset
344 <!ELEMENT tr (td|th)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
345
a61af66fc99e Initial load
duke
parents:
diff changeset
346 <!ELEMENT td ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
347 <!ATTLIST td align (left|right|center) "center">
a61af66fc99e Initial load
duke
parents:
diff changeset
348
a61af66fc99e Initial load
duke
parents:
diff changeset
349 <!ELEMENT th ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
350 <!ATTLIST th align (left|right|center) "center">
a61af66fc99e Initial load
duke
parents:
diff changeset
351
a61af66fc99e Initial load
duke
parents:
diff changeset
352 <!ELEMENT ul (li)+>
a61af66fc99e Initial load
duke
parents:
diff changeset
353 <!ATTLIST ul type (disc|circle|square) "disc">
a61af66fc99e Initial load
duke
parents:
diff changeset
354
a61af66fc99e Initial load
duke
parents:
diff changeset
355 <!ELEMENT li ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
356 ]>
a61af66fc99e Initial load
duke
parents:
diff changeset
357
a61af66fc99e Initial load
duke
parents:
diff changeset
358 <specification label="JVM(TM) Tool Interface"
a61af66fc99e Initial load
duke
parents:
diff changeset
359 majorversion="1"
1988
684faacebf20 7003782: Update JVMTI version to 1.2 for jdk7
kamg
parents: 1552
diff changeset
360 minorversion="2"
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
361 microversion="3">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
362 <title subtitle="Version">
a61af66fc99e Initial load
duke
parents:
diff changeset
363 <tm>JVM</tm> Tool Interface
a61af66fc99e Initial load
duke
parents:
diff changeset
364 </title>
a61af66fc99e Initial load
duke
parents:
diff changeset
365
a61af66fc99e Initial load
duke
parents:
diff changeset
366 <intro id="whatIs" label="What is the JVM Tool Interface?">
a61af66fc99e Initial load
duke
parents:
diff changeset
367 The <tm>JVM</tm> Tool Interface (<jvmti/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
368 is a programming interface used by development and monitoring tools.
a61af66fc99e Initial load
duke
parents:
diff changeset
369 It provides both a way to inspect the state and
a61af66fc99e Initial load
duke
parents:
diff changeset
370 to control the execution of applications running in the
a61af66fc99e Initial load
duke
parents:
diff changeset
371 <tm>Java</tm> virtual machine (VM).
a61af66fc99e Initial load
duke
parents:
diff changeset
372 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
373 <jvmti/> is intended to provide a VM interface for the full breadth of tools
a61af66fc99e Initial load
duke
parents:
diff changeset
374 that need access to VM state, including but not limited to: profiling,
a61af66fc99e Initial load
duke
parents:
diff changeset
375 debugging, monitoring, thread analysis, and coverage analysis tools.
a61af66fc99e Initial load
duke
parents:
diff changeset
376 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
377 <jvmti/> may not be available in all implementations of the <tm>Java</tm> virtual
a61af66fc99e Initial load
duke
parents:
diff changeset
378 machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
379 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
380 <jvmti/> is a two-way interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
381 A client of <jvmti/>, hereafter called an <i>agent</i>,
a61af66fc99e Initial load
duke
parents:
diff changeset
382 can be notified of
a61af66fc99e Initial load
duke
parents:
diff changeset
383 interesting occurrences through <internallink id="EventSection">events</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
384 <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
385 can query and control the application through many
a61af66fc99e Initial load
duke
parents:
diff changeset
386 <internallink id="FunctionSection">functions</internallink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
387 either in response to events or
a61af66fc99e Initial load
duke
parents:
diff changeset
388 independent of them.
a61af66fc99e Initial load
duke
parents:
diff changeset
389 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
390 Agents run in the same process with and communicate directly with
a61af66fc99e Initial load
duke
parents:
diff changeset
391 the virtual machine executing
a61af66fc99e Initial load
duke
parents:
diff changeset
392 the application being examined. This communication is
a61af66fc99e Initial load
duke
parents:
diff changeset
393 through a native interface (<jvmti/>). The native in-process interface allows
a61af66fc99e Initial load
duke
parents:
diff changeset
394 maximal control with minimal intrusion on the part of a tool.
a61af66fc99e Initial load
duke
parents:
diff changeset
395 Typically, agents are relatively compact. They can be controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
396 by a separate process which implements the bulk of a tool's
a61af66fc99e Initial load
duke
parents:
diff changeset
397 function without interfering with the target application's normal execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
398 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
399
a61af66fc99e Initial load
duke
parents:
diff changeset
400 <intro id="architecture" label="Architecture">
a61af66fc99e Initial load
duke
parents:
diff changeset
401 Tools can be written directly to <jvmti/> or indirectly
a61af66fc99e Initial load
duke
parents:
diff changeset
402 through higher level interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
403 The Java Platform Debugger Architecture includes <jvmti/>, but also
a61af66fc99e Initial load
duke
parents:
diff changeset
404 contains higher-level, out-of-process debugger interfaces. The higher-level
a61af66fc99e Initial load
duke
parents:
diff changeset
405 interfaces are more appropriate than <jvmti/> for many tools.
a61af66fc99e Initial load
duke
parents:
diff changeset
406 For more information on the Java Platform Debugger Architecture,
a61af66fc99e Initial load
duke
parents:
diff changeset
407 see the
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
408 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html">Java
0
a61af66fc99e Initial load
duke
parents:
diff changeset
409 Platform Debugger Architecture website</externallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
410 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
411
a61af66fc99e Initial load
duke
parents:
diff changeset
412 <intro id="writingAgents" label="Writing Agents">
a61af66fc99e Initial load
duke
parents:
diff changeset
413 Agents can be written in any native language that supports C
a61af66fc99e Initial load
duke
parents:
diff changeset
414 language calling conventions and C or C++
a61af66fc99e Initial load
duke
parents:
diff changeset
415 definitions.
a61af66fc99e Initial load
duke
parents:
diff changeset
416 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
417 The function, event, data type, and constant definitions needed for
a61af66fc99e Initial load
duke
parents:
diff changeset
418 using <jvmti/> are defined in the include file <code>jvmti.h</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
419 To use these definitions add the <tm>J2SE</tm> include directory
a61af66fc99e Initial load
duke
parents:
diff changeset
420 to your include path and add
a61af66fc99e Initial load
duke
parents:
diff changeset
421 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
422 #include &lt;jvmti.h&gt;
a61af66fc99e Initial load
duke
parents:
diff changeset
423 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
424 to your source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
425 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
426
a61af66fc99e Initial load
duke
parents:
diff changeset
427 <intro id="deployingAgents" label="Deploying Agents">
a61af66fc99e Initial load
duke
parents:
diff changeset
428 An agent is deployed in a platform specific manner but is typically the
a61af66fc99e Initial load
duke
parents:
diff changeset
429 platform equivalent of a dynamic library. On the <tm>Windows</tm> operating
a61af66fc99e Initial load
duke
parents:
diff changeset
430 system, for example, an agent library is a "Dynamic Linked Library" (DLL).
a61af66fc99e Initial load
duke
parents:
diff changeset
431 On the <tm>Solaris</tm> Operating Environment, an agent library is a shared
a61af66fc99e Initial load
duke
parents:
diff changeset
432 object (<code>.so</code> file).
a61af66fc99e Initial load
duke
parents:
diff changeset
433 <p/>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
434
0
a61af66fc99e Initial load
duke
parents:
diff changeset
435 An agent may be started at VM startup by specifying the agent library
a61af66fc99e Initial load
duke
parents:
diff changeset
436 name using a <internallink id="starting">command line option</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
437 Some implementations may support a mechanism to <internallink id="onattach">
a61af66fc99e Initial load
duke
parents:
diff changeset
438 start agents</internallink> in the live <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
439 The details of how this is initiated are implementation specific.
a61af66fc99e Initial load
duke
parents:
diff changeset
440 </intro>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
441
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
442 <intro id="entry point" label="Statically Linked Agents (since version 1.2.3)">
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
443
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
444 A native JVMTI Agent may be <i>statically linked</i> with the VM.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
445 The manner in which the library and VM image are combined is
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
446 implementation-dependent.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
447 An agent L whose image has been combined with the VM is defined as
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
448 <i>statically linked</i> if and only if the agent exports a function
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
449 called Agent_OnLoad_L.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
450 <p/>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
451 If a <i>statically linked</i> agent L exports a function called
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
452 Agent_OnLoad_L and a function called Agent_OnLoad, the Agent_OnLoad
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
453 function will be ignored.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
454 If an agent L is <i>statically linked</i>, an Agent_OnLoad_L
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
455 function will be invoked with the same arguments and expected return
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
456 value as specified for the Agent_OnLoad function.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
457 An agent L that is <i>statically linked</i> will prohibit an agent of
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
458 the same name from being loaded dynamically.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
459 <p/>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
460 The VM will invoke the Agent_OnUnload_L function of the agent, if such
12220
8e94527f601e 8024007: Misc. cleanup of static agent code
bpittore
parents: 12117
diff changeset
461 a function is exported, at the same point during VM execution as it would
8e94527f601e 8024007: Misc. cleanup of static agent code
bpittore
parents: 12117
diff changeset
462 have called the dynamic entry point Agent_OnUnLoad. A statically loaded
8e94527f601e 8024007: Misc. cleanup of static agent code
bpittore
parents: 12117
diff changeset
463 agent cannot be unloaded. The Agent_OnUnload_L function will still be
8e94527f601e 8024007: Misc. cleanup of static agent code
bpittore
parents: 12117
diff changeset
464 called to do any other agent shutdown related tasks.
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
465 If a <i>statically linked</i> agent L exports a function called
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
466 Agent_OnUnLoad_L and a function called Agent_OnUnLoad, the Agent_OnUnLoad
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
467 function will be ignored.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
468 <p/>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
469 If an agent L is <i>statically linked</i>, an Agent_OnAttach_L function
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
470 will be invoked with the same arguments and expected return value as
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
471 specified for the Agent_OnAttach function.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
472 If a <i>statically linked</i> agent L exports a function called
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
473 Agent_OnAttach_L and a function called Agent_OnAttach, the Agent_OnAttach
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
474 function will be ignored.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
475 </intro>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
476
a61af66fc99e Initial load
duke
parents:
diff changeset
477 <intro id="starting" label="Agent Command Line Options">
a61af66fc99e Initial load
duke
parents:
diff changeset
478 The term "command-line option" is used below to
a61af66fc99e Initial load
duke
parents:
diff changeset
479 mean options supplied in the <code>JavaVMInitArgs</code> argument
a61af66fc99e Initial load
duke
parents:
diff changeset
480 to the <code>JNI_CreateJavaVM</code> function of the JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
481 Invocation API.
a61af66fc99e Initial load
duke
parents:
diff changeset
482 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
483 One of the two following
a61af66fc99e Initial load
duke
parents:
diff changeset
484 command-line options is used on VM startup to
a61af66fc99e Initial load
duke
parents:
diff changeset
485 properly load and run agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
486 These arguments identify the library containing
a61af66fc99e Initial load
duke
parents:
diff changeset
487 the agent as well as an options
a61af66fc99e Initial load
duke
parents:
diff changeset
488 string to be passed in at startup.
a61af66fc99e Initial load
duke
parents:
diff changeset
489 <dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
490 <dt><code>-agentlib:</code><i>&lt;agent-lib-name&gt;</i><code>=</code><i>&lt;options&gt;</i></dt>
a61af66fc99e Initial load
duke
parents:
diff changeset
491 <dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
492 The name following <code>-agentlib:</code> is the name of the
a61af66fc99e Initial load
duke
parents:
diff changeset
493 library to load. Lookup of the library, both its full name and location,
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
494 proceeds in a platform-specific manner.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
495 Typically, the <i>&lt;agent-lib-name&gt;</i> is expanded to an
a61af66fc99e Initial load
duke
parents:
diff changeset
496 operating system specific file name.
a61af66fc99e Initial load
duke
parents:
diff changeset
497 The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
498 For example, if the option
a61af66fc99e Initial load
duke
parents:
diff changeset
499 <code>-agentlib:foo=opt1,opt2</code> is specified, the VM will attempt to
a61af66fc99e Initial load
duke
parents:
diff changeset
500 load the shared library <code>foo.dll</code> from the system <code>PATH</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
501 under <tm>Windows</tm> or <code>libfoo.so</code> from the
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
502 <code>LD_LIBRARY_PATH</code> under the <tm>Solaris</tm> operating
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
503 environment.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
504 If the agent library is statically linked into the executable
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
505 then no actual loading takes place.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
506 <p/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
507 </dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
508 <dt><code>-agentpath:</code><i>&lt;path-to-agent&gt;</i><code>=</code><i>&lt;options&gt;</i></dt>
a61af66fc99e Initial load
duke
parents:
diff changeset
509 <dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
510 The path following <code>-agentpath:</code> is the absolute path from which
a61af66fc99e Initial load
duke
parents:
diff changeset
511 to load the library.
a61af66fc99e Initial load
duke
parents:
diff changeset
512 No library name expansion will occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
513 The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
514 For example, if the option
a61af66fc99e Initial load
duke
parents:
diff changeset
515 <code>-agentpath:c:\myLibs\foo.dll=opt1,opt2</code> is specified, the VM will attempt to
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
516 load the shared library <code>c:\myLibs\foo.dll</code>. If the agent
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
517 library is statically linked into the executable
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
518 then no actual loading takes place.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
519 <p/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
520 </dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
521 </dl>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
522 For a dynamic shared library agent, the start-up routine
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
523 <internallink id="onload"><code>Agent_OnLoad</code></internallink>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
524 in the library will be invoked. If the agent library is statically linked
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
525 into the executable then the system will attempt to invoke the
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
526 <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> entry point where
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
527 &lt;agent-lib-name&gt; is the basename of the
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
528 agent. In the above example <code>-agentpath:c:\myLibs\foo.dll=opt1,opt2</code>,
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
529 the system will attempt to find and call the <code>Agent_OnLoad_foo</code> start-up routine.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
530 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
531 Libraries loaded with <code>-agentlib:</code> or <code>-agentpath:</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
532 will be searched for JNI native method implementations to facilitate the
a61af66fc99e Initial load
duke
parents:
diff changeset
533 use of Java programming language code in tools, as is needed for
a61af66fc99e Initial load
duke
parents:
diff changeset
534 <internallink id="bci">bytecode instrumentation</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
535 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
536 The agent libraries will be searched after all other libraries have been
a61af66fc99e Initial load
duke
parents:
diff changeset
537 searched (agents wishing to override or intercept the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
538 implementations of non-agent methods can use the
a61af66fc99e Initial load
duke
parents:
diff changeset
539 <eventlink id="NativeMethodBind">NativeMethodBind event</eventlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
540 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
541 These switches do the above and nothing more - they do not change the
a61af66fc99e Initial load
duke
parents:
diff changeset
542 state of the VM or <jvmti/>. No command line options are needed
a61af66fc99e Initial load
duke
parents:
diff changeset
543 to enable <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
544 or aspects of <jvmti/>, this is handled programmatically
a61af66fc99e Initial load
duke
parents:
diff changeset
545 by the use of
a61af66fc99e Initial load
duke
parents:
diff changeset
546 <internallink id="capability">capabilities</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
547 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
548
a61af66fc99e Initial load
duke
parents:
diff changeset
549 <intro id="startup" label="Agent Start-Up">
a61af66fc99e Initial load
duke
parents:
diff changeset
550 The VM starts each agent by invoking a start-up function.
a61af66fc99e Initial load
duke
parents:
diff changeset
551 If the agent is started in the <code>OnLoad</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
552 <functionlink id="GetPhase">phase</functionlink> the function
a61af66fc99e Initial load
duke
parents:
diff changeset
553 <internallink id="onload"><code>Agent_OnLoad</code></internallink>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
554 or <internallink id="onload"><code>Agent_OnLoad_L</code></internallink>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
555 for statically linked agents will be invoked.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
556 If the agent is started in the live
a61af66fc99e Initial load
duke
parents:
diff changeset
557 <functionlink id="GetPhase">phase</functionlink> the function
a61af66fc99e Initial load
duke
parents:
diff changeset
558 <internallink id="onattach"><code>Agent_OnAttach</code></internallink>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
559 or <internallink id="onattach"><code>Agent_OnAttach_L</code></internallink>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
560 for statically linked agents will be invoked.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
561 Exactly one call to a start-up function is made per agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
562 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
563
a61af66fc99e Initial load
duke
parents:
diff changeset
564 <intro id="onload" label="Agent Start-Up (OnLoad phase)">
a61af66fc99e Initial load
duke
parents:
diff changeset
565 If an agent is started during the <code>OnLoad</code> phase then its
a61af66fc99e Initial load
duke
parents:
diff changeset
566 agent library must export a start-up function with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
567 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
568 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
569 Agent_OnLoad(JavaVM *vm, char *options, void *reserved)</example>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
570 Or for a statically linked agent named 'L':
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
571 <example>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
572 JNIEXPORT jint JNICALL
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
573 Agent_OnLoad_L(JavaVM *vm, char *options, void *reserved)</example>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
574
0
a61af66fc99e Initial load
duke
parents:
diff changeset
575 The VM will start the agent by calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
576 It will be called early enough in VM initialization that:
a61af66fc99e Initial load
duke
parents:
diff changeset
577 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
578 <li><functionlink id="SetSystemProperty">system properties</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
579 may be set before they have been used in the start-up of the VM</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
580 <li>the full set of
a61af66fc99e Initial load
duke
parents:
diff changeset
581 <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
582 is still available (note that capabilities that configure the VM
a61af66fc99e Initial load
duke
parents:
diff changeset
583 may only be available at this time--see the
a61af66fc99e Initial load
duke
parents:
diff changeset
584 <internallink id="capability">Capability function section</internallink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
585 <li>no bytecodes have executed</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
586 <li>no classes have been loaded</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
587 <li>no objects have been created</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
588 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
589 <p/>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
590 The VM will call the <code>Agent_OnLoad</code> or
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
591 <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> function with
0
a61af66fc99e Initial load
duke
parents:
diff changeset
592 <i>&lt;options&gt;</i> as the second argument -
a61af66fc99e Initial load
duke
parents:
diff changeset
593 that is, using the command-line option examples,
a61af66fc99e Initial load
duke
parents:
diff changeset
594 <code>"opt1,opt2"</code> will be passed to the <code>char *options</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
595 argument of <code>Agent_OnLoad</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
596 The <code>options</code> argument is encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
597 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
598 If <i>=&lt;options&gt;</i> is not specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
599 a zero length string is passed to <code>options</code>.
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
600 The lifespan of the <code>options</code> string is the
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
601 <code>Agent_OnLoad</code> or <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
602 call. If needed beyond this time the string or parts of the string must
a61af66fc99e Initial load
duke
parents:
diff changeset
603 be copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
604 The period between when <code>Agent_OnLoad</code> is called and when it
a61af66fc99e Initial load
duke
parents:
diff changeset
605 returns is called the <i>OnLoad phase</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
606 Since the VM is not initialized during the OnLoad
a61af66fc99e Initial load
duke
parents:
diff changeset
607 <functionlink id="GetPhase">phase</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
608 the set of allowed operations
a61af66fc99e Initial load
duke
parents:
diff changeset
609 inside <code>Agent_OnLoad</code> is restricted (see the function descriptions for the
a61af66fc99e Initial load
duke
parents:
diff changeset
610 functionality available at this time).
a61af66fc99e Initial load
duke
parents:
diff changeset
611 The agent can safely process the options and set
a61af66fc99e Initial load
duke
parents:
diff changeset
612 event callbacks with <functionlink id="SetEventCallbacks"></functionlink>. Once
a61af66fc99e Initial load
duke
parents:
diff changeset
613 the VM initialization event is received
a61af66fc99e Initial load
duke
parents:
diff changeset
614 (that is, the <eventlink id="VMInit">VMInit</eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
615 callback is invoked), the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
616 can complete its initialization.
a61af66fc99e Initial load
duke
parents:
diff changeset
617 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
618 Early startup is required so that agents can set the desired capabilities,
a61af66fc99e Initial load
duke
parents:
diff changeset
619 many of which must be set before the VM is initialized.
a61af66fc99e Initial load
duke
parents:
diff changeset
620 In JVMDI, the -Xdebug command-line option provided
a61af66fc99e Initial load
duke
parents:
diff changeset
621 very coarse-grain control of capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
622 JVMPI implementations use various tricks to provide a single "JVMPI on" switch.
a61af66fc99e Initial load
duke
parents:
diff changeset
623 No reasonable command-line
a61af66fc99e Initial load
duke
parents:
diff changeset
624 option could provide the fine-grain of control required to balance needed capabilities vs
a61af66fc99e Initial load
duke
parents:
diff changeset
625 performance impact.
a61af66fc99e Initial load
duke
parents:
diff changeset
626 Early startup is also needed so that agents can control the execution
a61af66fc99e Initial load
duke
parents:
diff changeset
627 environment - modifying the file system and system properties to install
a61af66fc99e Initial load
duke
parents:
diff changeset
628 their functionality.
a61af66fc99e Initial load
duke
parents:
diff changeset
629 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
630 <p/>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
631 The return value from <code>Agent_OnLoad</code> or
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
632 <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> is used to indicate an error.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
633 Any value other than zero indicates an error and causes termination of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
634 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
635
a61af66fc99e Initial load
duke
parents:
diff changeset
636 <intro id="onattach" label="Agent Start-Up (Live phase)">
a61af66fc99e Initial load
duke
parents:
diff changeset
637 A VM may support a mechanism that allows agents to be started in the VM during the live
a61af66fc99e Initial load
duke
parents:
diff changeset
638 <functionlink id="GetPhase">phase</functionlink>. The details of how this is supported,
a61af66fc99e Initial load
duke
parents:
diff changeset
639 are implementation specific. For example, a tool may use some platform specific mechanism,
a61af66fc99e Initial load
duke
parents:
diff changeset
640 or implementation specific API, to attach to the running VM, and request it start a given
a61af66fc99e Initial load
duke
parents:
diff changeset
641 agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
642 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
643 If an agent is started during the live phase then its agent library
a61af66fc99e Initial load
duke
parents:
diff changeset
644 must export a start-up function
a61af66fc99e Initial load
duke
parents:
diff changeset
645 with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
646 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
647 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
648 Agent_OnAttach(JavaVM* vm, char *options, void *reserved)</example>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
649 Or for a statically linked agent named 'L':
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
650 <example>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
651 JNIEXPORT jint JNICALL
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
652 Agent_OnAttach_L(JavaVM* vm, char *options, void *reserved)</example>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
653
0
a61af66fc99e Initial load
duke
parents:
diff changeset
654 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
655 The VM will start the agent by calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
656 It will be called in the context of a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
657 that is attached to the VM. The first argument <i>&lt;vm&gt;</i> is the Java VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
658 The <i>&lt;options&gt;</i> argument is the startup options provided to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
659 <i>&lt;options&gt;</i> is encoded as a <internallink id="mUTF">modified UTF-8
a61af66fc99e Initial load
duke
parents:
diff changeset
660 </internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
661 If startup options were not provided, a zero length string is passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
662 <code>options</code>. The lifespan of the <code>options</code> string is the
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
663 <code>Agent_OnAttach</code> or <code>Agent_OnAttach_&lt;agent-lib-name&gt;</code> call.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
664 If needed beyond this time the string or parts of the string must be copied.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
665 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
666 Note that some <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
667 may not be available in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
668 <p/>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
669 The <code>Agent_OnAttach</code> or <code>Agent_OnAttach_&lt;agent-lib-name
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
670 &gt;</code> function initializes the agent and returns a value
0
a61af66fc99e Initial load
duke
parents:
diff changeset
671 to the VM to indicate if an error occurred. Any value other than zero indicates an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
672 An error does not cause the VM to terminate. Instead the VM ignores the error, or takes
a61af66fc99e Initial load
duke
parents:
diff changeset
673 some implementation specific action -- for example it might print an error to standard error,
a61af66fc99e Initial load
duke
parents:
diff changeset
674 or record the error in a system log.
a61af66fc99e Initial load
duke
parents:
diff changeset
675 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
676
a61af66fc99e Initial load
duke
parents:
diff changeset
677 <intro id="onunload" label="Agent Shutdown">
a61af66fc99e Initial load
duke
parents:
diff changeset
678 The library may optionally export a
a61af66fc99e Initial load
duke
parents:
diff changeset
679 shutdown function with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
680 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
681 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
682 Agent_OnUnload(JavaVM *vm)</example>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
683 Or for a statically linked agent named 'L':
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
684 <example>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
685 JNIEXPORT void JNICALL
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
686 Agent_OnUnload_L(JavaVM *vm)</example>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
687
0
a61af66fc99e Initial load
duke
parents:
diff changeset
688 This function will be called by the VM when the library is about to be unloaded.
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
689 The library will be unloaded (unless it is statically linked into the
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
690 executable) and this function will be called if some platform specific
0
a61af66fc99e Initial load
duke
parents:
diff changeset
691 mechanism causes the unload (an unload mechanism is not specified in this document)
a61af66fc99e Initial load
duke
parents:
diff changeset
692 or the library is (in effect) unloaded by the termination of the VM whether through
a61af66fc99e Initial load
duke
parents:
diff changeset
693 normal termination or VM failure, including start-up failure.
a61af66fc99e Initial load
duke
parents:
diff changeset
694 Uncontrolled shutdown is, of couse, an exception to this rule.
a61af66fc99e Initial load
duke
parents:
diff changeset
695 Note the distinction between this function and the
a61af66fc99e Initial load
duke
parents:
diff changeset
696 <eventlink id="VMDeath">VM Death event</eventlink>: for the VM Death event
a61af66fc99e Initial load
duke
parents:
diff changeset
697 to be sent, the VM must have run at least to the point of initialization and a valid
a61af66fc99e Initial load
duke
parents:
diff changeset
698 <jvmti/> environment must exist which has set a callback for VMDeath
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
699 and enabled the event.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
700 None of these are required for <code>Agent_OnUnload</code> or
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
701 <code>Agent_OnUnload_&lt;agent-lib-name&gt;</code> and this function
0
a61af66fc99e Initial load
duke
parents:
diff changeset
702 is also called if the library is unloaded for other reasons.
a61af66fc99e Initial load
duke
parents:
diff changeset
703 In the case that a VM Death event is sent, it will be sent before this
a61af66fc99e Initial load
duke
parents:
diff changeset
704 function is called (assuming this function is called due to VM termination).
a61af66fc99e Initial load
duke
parents:
diff changeset
705 This function can be used to clean-up resources allocated by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
706 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
707
a61af66fc99e Initial load
duke
parents:
diff changeset
708 <intro id="tooloptions" label="JAVA_TOOL_OPTIONS">
a61af66fc99e Initial load
duke
parents:
diff changeset
709 Since the command-line cannot always be accessed or modified, for example in embedded VMs
a61af66fc99e Initial load
duke
parents:
diff changeset
710 or simply VMs launched deep within scripts, a <code>JAVA_TOOL_OPTIONS</code> variable is
a61af66fc99e Initial load
duke
parents:
diff changeset
711 provided so that agents may be launched in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
712 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
713 Platforms which support environment variables or other named strings, may support the
a61af66fc99e Initial load
duke
parents:
diff changeset
714 <code>JAVA_TOOL_OPTIONS</code> variable. This variable will be broken into options at white-space
a61af66fc99e Initial load
duke
parents:
diff changeset
715 boundaries. White-space characters include space, tab, carriage-return, new-line,
a61af66fc99e Initial load
duke
parents:
diff changeset
716 vertical-tab, and form-feed. Sequences of white-space characters are considered
a61af66fc99e Initial load
duke
parents:
diff changeset
717 equivalent to a single white-space character. No white-space is included in the options
a61af66fc99e Initial load
duke
parents:
diff changeset
718 unless quoted. Quoting is as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
719 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
720 <li>All characters enclosed between a pair of single quote marks (''), except a single
a61af66fc99e Initial load
duke
parents:
diff changeset
721 quote, are quoted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
722 <li>Double quote characters have no special meaning inside a pair of single quote marks.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
723 <li>All characters enclosed between a pair of double quote marks (""), except a double
a61af66fc99e Initial load
duke
parents:
diff changeset
724 quote, are quoted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
725 <li>Single quote characters have no special meaning inside a pair of double quote marks.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
726 <li>A quoted part can start or end anywhere in the variable.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
727 <li>White-space characters have no special meaning when quoted -- they are included in
a61af66fc99e Initial load
duke
parents:
diff changeset
728 the option like any other character and do not mark white-space boundaries.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
729 <li>The pair of quote marks is not included in the option.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
730 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
731 <code>JNI_CreateJavaVM</code> (in the JNI Invocation API) will prepend these options to the options supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
732 in its <code>JavaVMInitArgs</code> argument. Platforms may disable this feature in cases where security is
a61af66fc99e Initial load
duke
parents:
diff changeset
733 a concern; for example, the Reference Implementation disables this feature on Unix systems when
a61af66fc99e Initial load
duke
parents:
diff changeset
734 the effective user or group ID differs from the real ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
735 This feature is intended to support the initialization of tools -- specifically including the
a61af66fc99e Initial load
duke
parents:
diff changeset
736 launching of native or Java programming language agents. Multiple tools may wish to use this
a61af66fc99e Initial load
duke
parents:
diff changeset
737 feature, so the variable should not be overwritten, instead, options should be appended to
a61af66fc99e Initial load
duke
parents:
diff changeset
738 the variable. Note that since the variable is processed at the time of the JNI Invocation
a61af66fc99e Initial load
duke
parents:
diff changeset
739 API create VM call, options processed by a launcher (e.g., VM selection options) will not be handled.
a61af66fc99e Initial load
duke
parents:
diff changeset
740 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
741
a61af66fc99e Initial load
duke
parents:
diff changeset
742 <intro id="environments" label="Environments">
a61af66fc99e Initial load
duke
parents:
diff changeset
743 The <jvmti/> specification supports the use of multiple simultaneous
a61af66fc99e Initial load
duke
parents:
diff changeset
744 <jvmti/> agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
745 Each agent has its own <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
746 That is, the <jvmti/> state is
a61af66fc99e Initial load
duke
parents:
diff changeset
747 separate for each agent - changes to one environment do not affect the
a61af66fc99e Initial load
duke
parents:
diff changeset
748 others. The state of a <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
749 environment includes:
a61af66fc99e Initial load
duke
parents:
diff changeset
750 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
751 <li><functionlink id="SetEventCallbacks">the event callbacks</functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
752 <li><functionlink id="SetEventNotificationMode">the set of events which are enabled</functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
753 <li><internallink id="capability">the capabilities</internallink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
754 <li><internallink id="memory">the memory allocation/deallocation hooks</internallink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
755 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
756 Although their <jvmti/> state
a61af66fc99e Initial load
duke
parents:
diff changeset
757 is separate, agents inspect and modify the shared state
a61af66fc99e Initial load
duke
parents:
diff changeset
758 of the VM, they also share the native environment in which they execute.
a61af66fc99e Initial load
duke
parents:
diff changeset
759 As such, an agent can perturb the results of other agents or cause them
a61af66fc99e Initial load
duke
parents:
diff changeset
760 to fail. It is the responsibility of the agent writer to specify the level
a61af66fc99e Initial load
duke
parents:
diff changeset
761 of compatibility with other agents. <jvmti/> implementations are not capable
a61af66fc99e Initial load
duke
parents:
diff changeset
762 of preventing destructive interactions between agents. Techniques to reduce
a61af66fc99e Initial load
duke
parents:
diff changeset
763 the likelihood of these occurrences are beyond the scope of this document.
a61af66fc99e Initial load
duke
parents:
diff changeset
764 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
765 An agent creates a <jvmti/> environment
a61af66fc99e Initial load
duke
parents:
diff changeset
766 by passing a <jvmti/> version
a61af66fc99e Initial load
duke
parents:
diff changeset
767 as the interface ID to the JNI Invocation API function
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
768 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#GetEnv"><code>GetEnv</code></externallink>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
769 See <internallink id="jvmtiEnvAccess">Accessing <jvmti/> Functions</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
770 for more details on the creation and use of
a61af66fc99e Initial load
duke
parents:
diff changeset
771 <jvmti/> environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
772 Typically, <jvmti/> environments are created by calling <code>GetEnv</code> from
a61af66fc99e Initial load
duke
parents:
diff changeset
773 <internallink id="onload"><code>Agent_OnLoad</code></internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
774 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
775
a61af66fc99e Initial load
duke
parents:
diff changeset
776 <intro id="bci" label="Bytecode Instrumentation">
a61af66fc99e Initial load
duke
parents:
diff changeset
777 This interface does not include some events that one might expect in an interface with
a61af66fc99e Initial load
duke
parents:
diff changeset
778 profiling support. Some examples include object allocation events and full speed
a61af66fc99e Initial load
duke
parents:
diff changeset
779 method enter and exit events. The interface instead provides support for
a61af66fc99e Initial load
duke
parents:
diff changeset
780 <i>bytecode instrumentation</i>, the ability to alter the Java virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
781 bytecode instructions which comprise the target program. Typically, these alterations
a61af66fc99e Initial load
duke
parents:
diff changeset
782 are to add "events" to the code of a method - for example, to add, at the beginning of a method,
a61af66fc99e Initial load
duke
parents:
diff changeset
783 a call to <code>MyProfiler.methodEntered()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
784 Since the changes are purely additive, they do not modify application
a61af66fc99e Initial load
duke
parents:
diff changeset
785 state or behavior.
a61af66fc99e Initial load
duke
parents:
diff changeset
786 Because the inserted agent code is standard bytecodes, the VM can run at full speed,
a61af66fc99e Initial load
duke
parents:
diff changeset
787 optimizing not only the target program but also the instrumentation. If the
a61af66fc99e Initial load
duke
parents:
diff changeset
788 instrumentation does not involve switching from bytecode execution, no expensive
a61af66fc99e Initial load
duke
parents:
diff changeset
789 state transitions are needed. The result is high performance events.
a61af66fc99e Initial load
duke
parents:
diff changeset
790 This approach also provides complete control to the agent: instrumentation can be
a61af66fc99e Initial load
duke
parents:
diff changeset
791 restricted to "interesting" portions of the code (e.g., the end user's code) and
a61af66fc99e Initial load
duke
parents:
diff changeset
792 can be conditional. Instrumentation can run entirely in Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
793 code or can call into the native agent. Instrumentation can simply maintain
a61af66fc99e Initial load
duke
parents:
diff changeset
794 counters or can statistically sample events.
a61af66fc99e Initial load
duke
parents:
diff changeset
795 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
796 Instrumentation can be inserted in one of three ways:
a61af66fc99e Initial load
duke
parents:
diff changeset
797 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
798 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
799 Static Instrumentation: The class file is instrumented before it
a61af66fc99e Initial load
duke
parents:
diff changeset
800 is loaded into the VM - for example, by creating a duplicate directory of
a61af66fc99e Initial load
duke
parents:
diff changeset
801 <code>*.class</code> files which have been modified to add the instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
802 This method is extremely awkward and, in general, an agent cannot know
a61af66fc99e Initial load
duke
parents:
diff changeset
803 the origin of the class files which will be loaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
804 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
805 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
806 Load-Time Instrumentation: When a class file is loaded by the VM, the raw
a61af66fc99e Initial load
duke
parents:
diff changeset
807 bytes of the class file are sent for instrumentation to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
808 The <eventlink id="ClassFileLoadHook"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
809 event, triggered by the class load,
a61af66fc99e Initial load
duke
parents:
diff changeset
810 provides this functionality. This mechanism provides efficient
a61af66fc99e Initial load
duke
parents:
diff changeset
811 and complete access to one-time instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
812 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
813 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
814 Dynamic Instrumentation: A class which is already loaded (and possibly
a61af66fc99e Initial load
duke
parents:
diff changeset
815 even running) is modified. This optional feature is provided by the
a61af66fc99e Initial load
duke
parents:
diff changeset
816 <eventlink id="ClassFileLoadHook"/> event, triggered by calling the
a61af66fc99e Initial load
duke
parents:
diff changeset
817 <functionlink id="RetransformClasses"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
818 Classes can be modified multiple times and can be returned to their
a61af66fc99e Initial load
duke
parents:
diff changeset
819 original state.
a61af66fc99e Initial load
duke
parents:
diff changeset
820 The mechanism allows instrumentation which changes during the
a61af66fc99e Initial load
duke
parents:
diff changeset
821 course of execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
822 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
823 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
824 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
825 The class modification functionality provided in this interface
a61af66fc99e Initial load
duke
parents:
diff changeset
826 is intended to provide a mechanism for instrumentation
a61af66fc99e Initial load
duke
parents:
diff changeset
827 (the <eventlink id="ClassFileLoadHook"/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
828 and the <functionlink id="RetransformClasses"/> function)
a61af66fc99e Initial load
duke
parents:
diff changeset
829 and, during development, for fix-and-continue debugging
a61af66fc99e Initial load
duke
parents:
diff changeset
830 (the <functionlink id="RedefineClasses"/> function).
a61af66fc99e Initial load
duke
parents:
diff changeset
831 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
832 Care must be taken to avoid perturbing dependencies, especially when
a61af66fc99e Initial load
duke
parents:
diff changeset
833 instrumenting core classes. For example, an approach to getting notification
a61af66fc99e Initial load
duke
parents:
diff changeset
834 of every object allocation is to instrument the constructor on
a61af66fc99e Initial load
duke
parents:
diff changeset
835 <code>Object</code>. Assuming that the constructor is initially
a61af66fc99e Initial load
duke
parents:
diff changeset
836 empty, the constructor could be changed to:
a61af66fc99e Initial load
duke
parents:
diff changeset
837 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
838 public Object() {
a61af66fc99e Initial load
duke
parents:
diff changeset
839 MyProfiler.allocationTracker(this);
a61af66fc99e Initial load
duke
parents:
diff changeset
840 }
a61af66fc99e Initial load
duke
parents:
diff changeset
841 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
842 However, if this change was made using the
a61af66fc99e Initial load
duke
parents:
diff changeset
843 <eventlink id="ClassFileLoadHook"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
844 event then this might impact a typical VM as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
845 the first created object will call the constructor causing a class load of
a61af66fc99e Initial load
duke
parents:
diff changeset
846 <code>MyProfiler</code>; which will then cause
a61af66fc99e Initial load
duke
parents:
diff changeset
847 object creation, and since <code>MyProfiler</code> isn't loaded yet,
a61af66fc99e Initial load
duke
parents:
diff changeset
848 infinite recursion; resulting in a stack overflow. A refinement of this
a61af66fc99e Initial load
duke
parents:
diff changeset
849 would be to delay invoking the tracking method until a safe time. For
a61af66fc99e Initial load
duke
parents:
diff changeset
850 example, <code>trackAllocations</code> could be set in the
a61af66fc99e Initial load
duke
parents:
diff changeset
851 handler for the <code>VMInit</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
852 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
853 static boolean trackAllocations = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
854
a61af66fc99e Initial load
duke
parents:
diff changeset
855 public Object() {
a61af66fc99e Initial load
duke
parents:
diff changeset
856 if (trackAllocations) {
a61af66fc99e Initial load
duke
parents:
diff changeset
857 MyProfiler.allocationTracker(this);
a61af66fc99e Initial load
duke
parents:
diff changeset
858 }
a61af66fc99e Initial load
duke
parents:
diff changeset
859 }
a61af66fc99e Initial load
duke
parents:
diff changeset
860 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
861 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
862 The <functionlink id="SetNativeMethodPrefix"/> allows native methods
a61af66fc99e Initial load
duke
parents:
diff changeset
863 to be instrumented by the use of wrapper methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
864 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
865
a61af66fc99e Initial load
duke
parents:
diff changeset
866 <intro id="mUTF" label="Modified UTF-8 String Encoding">
a61af66fc99e Initial load
duke
parents:
diff changeset
867 <jvmti/> uses modified UTF-8 to encode character strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
868 This is the same encoding used by JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
869 Modified UTF-8 differs
a61af66fc99e Initial load
duke
parents:
diff changeset
870 from standard UTF-8 in the representation of supplementary characters
a61af66fc99e Initial load
duke
parents:
diff changeset
871 and of the null character. See the
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
872 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp16542">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
873 Modified UTF-8 Strings</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
874 section of the JNI specification for details.
a61af66fc99e Initial load
duke
parents:
diff changeset
875 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
876
a61af66fc99e Initial load
duke
parents:
diff changeset
877 <intro id="context" label="Specification Context">
a61af66fc99e Initial load
duke
parents:
diff changeset
878 Since this interface provides access to the state of applications running in the
a61af66fc99e Initial load
duke
parents:
diff changeset
879 Java virtual machine;
a61af66fc99e Initial load
duke
parents:
diff changeset
880 terminology refers to the Java platform and not the native
a61af66fc99e Initial load
duke
parents:
diff changeset
881 platform (unless stated otherwise). For example:
a61af66fc99e Initial load
duke
parents:
diff changeset
882 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
883 <li>"thread" means Java programming language thread.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
884 <li>"stack frame" means Java virtual machine stack frame.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
885 <li>"class" means Java programming language class.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
886 <li>"heap" means Java virtual machine heap.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
887 <li>"monitor" means Java programming language object monitor.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
888 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
889 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
890 Sun, Sun Microsystems, the Sun logo, Java, and JVM
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
891 are trademarks or registered trademarks of Oracle
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
892 and/or its affiliates, in the U.S. and other countries.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
893 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
894
a61af66fc99e Initial load
duke
parents:
diff changeset
895
a61af66fc99e Initial load
duke
parents:
diff changeset
896 <functionsection label="Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
897 <intro id="jvmtiEnvAccess" label="Accessing Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
898 Native code accesses <jvmti/> features
a61af66fc99e Initial load
duke
parents:
diff changeset
899 by calling <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
900 Access to <jvmti/> functions is by use of an interface pointer
a61af66fc99e Initial load
duke
parents:
diff changeset
901 in the same manner as
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
902 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html">Java
0
a61af66fc99e Initial load
duke
parents:
diff changeset
903 Native Interface (JNI) functions</externallink> are accessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
904 The <jvmti/> interface pointer is called the
a61af66fc99e Initial load
duke
parents:
diff changeset
905 <i>environment pointer</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
906 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
907 An environment pointer is a pointer to an environment and has
a61af66fc99e Initial load
duke
parents:
diff changeset
908 the type <code>jvmtiEnv*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
909 An environment has information about its <jvmti/> connection.
a61af66fc99e Initial load
duke
parents:
diff changeset
910 The first value in the environment is a pointer to the function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
911 The function table is an array of pointers to <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
912 Every function pointer is at a predefined offset inside the
a61af66fc99e Initial load
duke
parents:
diff changeset
913 array.
a61af66fc99e Initial load
duke
parents:
diff changeset
914 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
915 When used from the C language:
a61af66fc99e Initial load
duke
parents:
diff changeset
916 double indirection is used to access the functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
917 the environment pointer provides context and is the first
a61af66fc99e Initial load
duke
parents:
diff changeset
918 parameter of each function call; for example:
a61af66fc99e Initial load
duke
parents:
diff changeset
919 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
920 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
921 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
922 jvmtiError err = (*jvmti)->GetLoadedClasses(jvmti, &amp;class_count, &amp;classes);
a61af66fc99e Initial load
duke
parents:
diff changeset
923 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
924 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
925 When used from the C++ language:
a61af66fc99e Initial load
duke
parents:
diff changeset
926 functions are accessed as member functions of <code>jvmtiEnv</code>;
a61af66fc99e Initial load
duke
parents:
diff changeset
927 the environment pointer is not passed to the function call; for example:
a61af66fc99e Initial load
duke
parents:
diff changeset
928 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
929 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
930 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
931 jvmtiError err = jvmti->GetLoadedClasses(&amp;class_count, &amp;classes);
a61af66fc99e Initial load
duke
parents:
diff changeset
932 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
933 Unless otherwise stated, all examples and declarations in this
a61af66fc99e Initial load
duke
parents:
diff changeset
934 specification use the C language.
a61af66fc99e Initial load
duke
parents:
diff changeset
935 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
936 A <jvmti/> environment can be obtained through the JNI Invocation API
a61af66fc99e Initial load
duke
parents:
diff changeset
937 <code>GetEnv</code> function:
a61af66fc99e Initial load
duke
parents:
diff changeset
938 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
939 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
940 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
941 (*jvm)->GetEnv(jvm, &amp;jvmti, JVMTI_VERSION_1_0);
a61af66fc99e Initial load
duke
parents:
diff changeset
942 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
943 Each call to <code>GetEnv</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
944 creates a new <jvmti/> connection and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
945 a new <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
946 The <code>version</code> argument of <code>GetEnv</code> must be
a61af66fc99e Initial load
duke
parents:
diff changeset
947 a <jvmti/> version.
a61af66fc99e Initial load
duke
parents:
diff changeset
948 The returned environment may have a different version than the
a61af66fc99e Initial load
duke
parents:
diff changeset
949 requested version but the returned environment must be compatible.
a61af66fc99e Initial load
duke
parents:
diff changeset
950 <code>GetEnv</code> will return <code>JNI_EVERSION</code> if a
a61af66fc99e Initial load
duke
parents:
diff changeset
951 compatible version is not available, if <jvmti/> is not supported or
a61af66fc99e Initial load
duke
parents:
diff changeset
952 <jvmti/> is not supported in the current VM configuration.
a61af66fc99e Initial load
duke
parents:
diff changeset
953 Other interfaces may be added for creating <jvmti/> environments
a61af66fc99e Initial load
duke
parents:
diff changeset
954 in specific contexts.
a61af66fc99e Initial load
duke
parents:
diff changeset
955 Each environment has its own state (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
956 <functionlink id="SetEventNotificationMode">desired events</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
957 <functionlink id="SetEventCallbacks">event handling functions</functionlink>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
958 <functionlink id="AddCapabilities">capabilities</functionlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
959 An environment is released with
a61af66fc99e Initial load
duke
parents:
diff changeset
960 <functionlink id="DisposeEnvironment"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
961 Thus, unlike JNI which has one environment per thread, <jvmti/> environments work
a61af66fc99e Initial load
duke
parents:
diff changeset
962 across threads and are created dynamically.
a61af66fc99e Initial load
duke
parents:
diff changeset
963 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
964
a61af66fc99e Initial load
duke
parents:
diff changeset
965 <intro id="functionReturn" label="Function Return Values">
a61af66fc99e Initial load
duke
parents:
diff changeset
966 <jvmti/> functions always return an
a61af66fc99e Initial load
duke
parents:
diff changeset
967 <internallink id="ErrorSection">error code</internallink> via the
a61af66fc99e Initial load
duke
parents:
diff changeset
968 <datalink id="jvmtiError"/> function return value.
a61af66fc99e Initial load
duke
parents:
diff changeset
969 Some functions can return additional
a61af66fc99e Initial load
duke
parents:
diff changeset
970 values through pointers provided by the calling function.
a61af66fc99e Initial load
duke
parents:
diff changeset
971 In some cases, <jvmti/> functions allocate memory that your program must
a61af66fc99e Initial load
duke
parents:
diff changeset
972 explicitly deallocate. This is indicated in the individual <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
973 function descriptions. Empty lists, arrays, sequences, etc are
a61af66fc99e Initial load
duke
parents:
diff changeset
974 returned as <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
975 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
976 In the event that the <jvmti/> function encounters
a61af66fc99e Initial load
duke
parents:
diff changeset
977 an error (any return value other than <code>JVMTI_ERROR_NONE</code>) the values
a61af66fc99e Initial load
duke
parents:
diff changeset
978 of memory referenced by argument pointers is undefined, but no memory
a61af66fc99e Initial load
duke
parents:
diff changeset
979 will have been allocated and no global references will have been allocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
980 If the error occurs because of invalid input, no action will have occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
981 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
982
a61af66fc99e Initial load
duke
parents:
diff changeset
983 <intro id="refs" label="Managing JNI Object References">
a61af66fc99e Initial load
duke
parents:
diff changeset
984 <jvmti/> functions identify objects with JNI references
a61af66fc99e Initial load
duke
parents:
diff changeset
985 (<datalink id="jobject"/> and <datalink id="jclass"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
986 and their derivatives
a61af66fc99e Initial load
duke
parents:
diff changeset
987 (<datalink id="jthread"/> and <datalink id="jthreadGroup"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
988 References passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
989 <jvmti/> functions can be either global or local, but they must be
a61af66fc99e Initial load
duke
parents:
diff changeset
990 strong references. All references returned by <jvmti/> functions are
a61af66fc99e Initial load
duke
parents:
diff changeset
991 local references--these local references are created
a61af66fc99e Initial load
duke
parents:
diff changeset
992 during the <jvmti/> call.
a61af66fc99e Initial load
duke
parents:
diff changeset
993 Local references are a resource that must be managed (see the
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
994 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp18654">JNI Documentation</externallink>).
0
a61af66fc99e Initial load
duke
parents:
diff changeset
995 When threads return from native code all local references
a61af66fc99e Initial load
duke
parents:
diff changeset
996 are freed. Note that some threads, including typical
a61af66fc99e Initial load
duke
parents:
diff changeset
997 agent threads, will never return from native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
998 A thread is ensured the ability to create sixteen local
a61af66fc99e Initial load
duke
parents:
diff changeset
999 references without the need for any explicit management.
a61af66fc99e Initial load
duke
parents:
diff changeset
1000 For threads executing a limited number of <jvmti/> calls before
a61af66fc99e Initial load
duke
parents:
diff changeset
1001 returning from native code
a61af66fc99e Initial load
duke
parents:
diff changeset
1002 (for example, threads processing events),
a61af66fc99e Initial load
duke
parents:
diff changeset
1003 it may be determined that no explicit management
a61af66fc99e Initial load
duke
parents:
diff changeset
1004 is needed.
a61af66fc99e Initial load
duke
parents:
diff changeset
1005 However, long running agent threads will need explicit
a61af66fc99e Initial load
duke
parents:
diff changeset
1006 local reference management--usually with the JNI functions
a61af66fc99e Initial load
duke
parents:
diff changeset
1007 <code>PushLocalFrame</code> and <code>PopLocalFrame</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1008 Conversely, to preserve references beyond the
a61af66fc99e Initial load
duke
parents:
diff changeset
1009 return from native code, they must be converted to global references.
a61af66fc99e Initial load
duke
parents:
diff changeset
1010 These rules do not apply to <datalink id="jmethodID"/> and <datalink id="jfieldID"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1011 as they are not <datalink id="jobject"/>s.
a61af66fc99e Initial load
duke
parents:
diff changeset
1012 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1013
a61af66fc99e Initial load
duke
parents:
diff changeset
1014 <intro id="prereqState" label="Prerequisite State for Calling Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
1015 Unless the function explicitly states that the agent must bring
a61af66fc99e Initial load
duke
parents:
diff changeset
1016 a thread or the VM to a particular state (for example, suspended),
a61af66fc99e Initial load
duke
parents:
diff changeset
1017 the <jvmti/> implementation is responsible for bringing the VM to a
a61af66fc99e Initial load
duke
parents:
diff changeset
1018 safe and consistent state for performing the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1019 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1020
a61af66fc99e Initial load
duke
parents:
diff changeset
1021 <intro id="functionsExceptions" label="Exceptions and Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
1022 <jvmti/> functions never throw exceptions; error conditions are
a61af66fc99e Initial load
duke
parents:
diff changeset
1023 communicated via the
a61af66fc99e Initial load
duke
parents:
diff changeset
1024 <internallink id="functionReturn">function return value</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1025 Any existing exception state is preserved across a call to a
a61af66fc99e Initial load
duke
parents:
diff changeset
1026 <jvmti/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1027 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
1028 <externallink
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
1029 id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html#wp770"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1030 >Java Exceptions</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1031 section of the JNI specification for information on handling exceptions.
a61af66fc99e Initial load
duke
parents:
diff changeset
1032 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1033
a61af66fc99e Initial load
duke
parents:
diff changeset
1034 <category id="memory" label="Memory Management">
a61af66fc99e Initial load
duke
parents:
diff changeset
1035 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1036 These functions provide for the allocation and deallocation of
a61af66fc99e Initial load
duke
parents:
diff changeset
1037 memory used by <jvmti/> functionality and can be used to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
1038 working memory for agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
1039 Memory managed by <jvmti/> is not compatible with other memory
a61af66fc99e Initial load
duke
parents:
diff changeset
1040 allocation libraries and mechanisms.
a61af66fc99e Initial load
duke
parents:
diff changeset
1041 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1042
a61af66fc99e Initial load
duke
parents:
diff changeset
1043 <function id="Allocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="46">
a61af66fc99e Initial load
duke
parents:
diff changeset
1044 <synopsis>Allocate</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1045 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1046 Allocate an area of memory through the <jvmti/> allocator.
a61af66fc99e Initial load
duke
parents:
diff changeset
1047 The allocated
a61af66fc99e Initial load
duke
parents:
diff changeset
1048 memory should be freed with <functionlink id="Deallocate"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1049 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1050 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1051 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1052 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1053 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1054 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
1055 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1056 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1057 The number of bytes to allocate.
a61af66fc99e Initial load
duke
parents:
diff changeset
1058 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
1059 <code>jlong</code> is used for compatibility with JVMDI.
a61af66fc99e Initial load
duke
parents:
diff changeset
1060 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
1061 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1062 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1063 <param id="mem_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1064 <allocbuf incount="size"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1065 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1066 On return, a pointer to the beginning of the allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
1067 If <code>size</code> is zero, <code>NULL</code> is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1068 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1069 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1070 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1071 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1072 <error id="JVMTI_ERROR_OUT_OF_MEMORY">
a61af66fc99e Initial load
duke
parents:
diff changeset
1073 Memory request cannot be honored.
a61af66fc99e Initial load
duke
parents:
diff changeset
1074 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1075 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
1076 <paramlink id="size"></paramlink> is less than zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1077 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1078 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1079 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1080
a61af66fc99e Initial load
duke
parents:
diff changeset
1081 <function id="Deallocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="47">
a61af66fc99e Initial load
duke
parents:
diff changeset
1082 <synopsis>Deallocate</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1083 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1084 Deallocate <code>mem</code> using the <jvmti/> allocator.
a61af66fc99e Initial load
duke
parents:
diff changeset
1085 This function should
a61af66fc99e Initial load
duke
parents:
diff changeset
1086 be used to deallocate any memory allocated and returned
a61af66fc99e Initial load
duke
parents:
diff changeset
1087 by a <jvmti/> function
a61af66fc99e Initial load
duke
parents:
diff changeset
1088 (including memory allocated with <functionlink id="Allocate"></functionlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1089 All allocated memory must be deallocated
a61af66fc99e Initial load
duke
parents:
diff changeset
1090 or the memory cannot be reclaimed.
a61af66fc99e Initial load
duke
parents:
diff changeset
1091 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1092 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1093 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1094 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1095 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1096 <param id="mem">
a61af66fc99e Initial load
duke
parents:
diff changeset
1097 <outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1098 <uchar/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1099 <nullok>the call is ignored</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
1100 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1101 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1102 A pointer to the beginning of the allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
1103 Please ignore "On return, the elements are set."
a61af66fc99e Initial load
duke
parents:
diff changeset
1104 <todo>keep it from generating "On return, the elements are set"</todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
1105 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1106 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1107 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1108 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1109 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1110 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1111 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
1112
a61af66fc99e Initial load
duke
parents:
diff changeset
1113 <category id="threadCategory" label="Thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1114 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1115 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1116
a61af66fc99e Initial load
duke
parents:
diff changeset
1117 <function id="GetThreadState" num="17">
a61af66fc99e Initial load
duke
parents:
diff changeset
1118 <synopsis>Get Thread State</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1119 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1120 Get the state of a thread. The state of the thread is represented by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1121 answers to the hierarchical set of questions below:
a61af66fc99e Initial load
duke
parents:
diff changeset
1122 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1123 <li><i>Alive?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1124 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1125 <li>Not alive.
a61af66fc99e Initial load
duke
parents:
diff changeset
1126 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1127 <li><i>Why not alive?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1128 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1129 <li>New.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1130 <li>Terminated (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1131 id="JVMTI_THREAD_STATE_TERMINATED"><code>JVMTI_THREAD_STATE_TERMINATED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1132 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1133 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1134 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1135 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1136 <li>Alive (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1137 id="JVMTI_THREAD_STATE_ALIVE"><code>JVMTI_THREAD_STATE_ALIVE</code></datalink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1138 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1139 <li><i>Suspended?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1140 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1141 <li>Suspended (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1142 id="JVMTI_THREAD_STATE_SUSPENDED"><code>JVMTI_THREAD_STATE_SUSPENDED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1143 <li>Not suspended</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1144 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1145 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1146 <li><i>Interrupted?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1147 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1148 <li>Interrupted (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1149 id="JVMTI_THREAD_STATE_INTERRUPTED"><code>JVMTI_THREAD_STATE_INTERRUPTED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1150 <li>Not interrupted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1151 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1152 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1153 <li><i>In native?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1154 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1155 <li>In native code (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1156 id="JVMTI_THREAD_STATE_IN_NATIVE"><code>JVMTI_THREAD_STATE_IN_NATIVE</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1157 <li>In Java programming language code</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1158 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1159 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1160 <li><i>What alive state?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1161 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1162 <li>Runnable (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1163 id="JVMTI_THREAD_STATE_RUNNABLE"><code>JVMTI_THREAD_STATE_RUNNABLE</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1164 <li>Blocked (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1165 id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER"><code>JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1166 <li>Waiting (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1167 id="JVMTI_THREAD_STATE_WAITING"><code>JVMTI_THREAD_STATE_WAITING</code></datalink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1168 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1169 <li><i>Timed wait?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1170 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1171 <li>Indefinite (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1172 id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY"><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></datalink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1173 <li>Timed (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1174 id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT"><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1175 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1176 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1177 <li><i>Why waiting?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1178 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1179 <li>Object.wait (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1180 id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT"><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1181 <li>LockSupport.park (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1182 id="JVMTI_THREAD_STATE_PARKED"><code>JVMTI_THREAD_STATE_PARKED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1183 <li>Sleeping (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1184 id="JVMTI_THREAD_STATE_SLEEPING"><code>JVMTI_THREAD_STATE_SLEEPING</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1185 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1186 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1187 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1188 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1189 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1190 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1191 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1192 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1193 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1194 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1195 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1196 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1197 The answers are represented by the following bit vector.
a61af66fc99e Initial load
duke
parents:
diff changeset
1198 <constants id="jvmtiThreadState" label="Thread State Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
1199 <constant id="JVMTI_THREAD_STATE_ALIVE" num="0x0001">
a61af66fc99e Initial load
duke
parents:
diff changeset
1200 Thread is alive. Zero if thread is new (not started) or terminated.
a61af66fc99e Initial load
duke
parents:
diff changeset
1201 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1202 <constant id="JVMTI_THREAD_STATE_TERMINATED" num="0x0002">
a61af66fc99e Initial load
duke
parents:
diff changeset
1203 Thread has completed execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
1204 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1205 <constant id="JVMTI_THREAD_STATE_RUNNABLE" num="0x0004">
a61af66fc99e Initial load
duke
parents:
diff changeset
1206 Thread is runnable.
a61af66fc99e Initial load
duke
parents:
diff changeset
1207 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1208 <constant id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER" num="0x0400">
a61af66fc99e Initial load
duke
parents:
diff changeset
1209 Thread is waiting to enter a synchronization block/method or,
a61af66fc99e Initial load
duke
parents:
diff changeset
1210 after an <code>Object.wait()</code>, waiting to re-enter a
a61af66fc99e Initial load
duke
parents:
diff changeset
1211 synchronization block/method.
a61af66fc99e Initial load
duke
parents:
diff changeset
1212 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1213 <constant id="JVMTI_THREAD_STATE_WAITING" num="0x0080">
a61af66fc99e Initial load
duke
parents:
diff changeset
1214 Thread is waiting.
a61af66fc99e Initial load
duke
parents:
diff changeset
1215 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1216 <constant id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY" num="0x0010">
a61af66fc99e Initial load
duke
parents:
diff changeset
1217 Thread is waiting without a timeout.
a61af66fc99e Initial load
duke
parents:
diff changeset
1218 For example, <code>Object.wait()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1219 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1220 <constant id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT" num="0x0020">
a61af66fc99e Initial load
duke
parents:
diff changeset
1221 Thread is waiting with a maximum time to wait specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
1222 For example, <code>Object.wait(long)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1223 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1224 <constant id="JVMTI_THREAD_STATE_SLEEPING" num="0x0040">
a61af66fc99e Initial load
duke
parents:
diff changeset
1225 Thread is sleeping -- <code>Thread.sleep(long)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1226 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1227 <constant id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT" num="0x0100">
a61af66fc99e Initial load
duke
parents:
diff changeset
1228 Thread is waiting on an object monitor -- <code>Object.wait</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1229 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1230 <constant id="JVMTI_THREAD_STATE_PARKED" num="0x0200">
a61af66fc99e Initial load
duke
parents:
diff changeset
1231 Thread is parked, for example: <code>LockSupport.park</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
1232 <code>LockSupport.parkUtil</code> and <code>LockSupport.parkNanos</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1233 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1234 <constant id="JVMTI_THREAD_STATE_SUSPENDED" num="0x100000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1235 Thread suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1236 <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1237 or a <jvmti/> suspend function
a61af66fc99e Initial load
duke
parents:
diff changeset
1238 (such as <functionlink id="SuspendThread"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1239 has been called on the thread. If this bit
a61af66fc99e Initial load
duke
parents:
diff changeset
1240 is set, the other bits refer to the thread state before suspension.
a61af66fc99e Initial load
duke
parents:
diff changeset
1241 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1242 <constant id="JVMTI_THREAD_STATE_INTERRUPTED" num="0x200000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1243 Thread has been interrupted.
a61af66fc99e Initial load
duke
parents:
diff changeset
1244 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1245 <constant id="JVMTI_THREAD_STATE_IN_NATIVE" num="0x400000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1246 Thread is in native code--that is, a native method is running
a61af66fc99e Initial load
duke
parents:
diff changeset
1247 which has not called back into the VM or Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
1248 language code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1249 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1250 This flag is not set when running VM compiled Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
1251 language code nor is it set when running VM code or
a61af66fc99e Initial load
duke
parents:
diff changeset
1252 VM support code. Native VM interface functions, such as JNI and
a61af66fc99e Initial load
duke
parents:
diff changeset
1253 <jvmti/> functions, may be implemented as VM code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1254 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1255 <constant id="JVMTI_THREAD_STATE_VENDOR_1" num="0x10000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1256 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1257 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1258 <constant id="JVMTI_THREAD_STATE_VENDOR_2" num="0x20000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1259 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1260 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1261 <constant id="JVMTI_THREAD_STATE_VENDOR_3" num="0x40000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1262 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1263 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1264 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
1265 The following definitions are used to convert <jvmti/> thread state
a61af66fc99e Initial load
duke
parents:
diff changeset
1266 to <code>java.lang.Thread.State</code> style states.
a61af66fc99e Initial load
duke
parents:
diff changeset
1267 <constants id="jvmtiJavaLangThreadState" label="java.lang.Thread.State Conversion Masks" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
1268 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_MASK"
a61af66fc99e Initial load
duke
parents:
diff changeset
1269 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">
a61af66fc99e Initial load
duke
parents:
diff changeset
1270 Mask the state with this before comparison
a61af66fc99e Initial load
duke
parents:
diff changeset
1271 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1272 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_NEW"
a61af66fc99e Initial load
duke
parents:
diff changeset
1273 num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
1274 <code>java.lang.Thread.State.NEW</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1275 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1276 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED"
a61af66fc99e Initial load
duke
parents:
diff changeset
1277 num="JVMTI_THREAD_STATE_TERMINATED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1278 <code>java.lang.Thread.State.TERMINATED</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1279 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1280 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE"
a61af66fc99e Initial load
duke
parents:
diff changeset
1281 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
1282 <code>java.lang.Thread.State.RUNNABLE</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1283 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1284 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED"
a61af66fc99e Initial load
duke
parents:
diff changeset
1285 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
1286 <code>java.lang.Thread.State.BLOCKED</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1287 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1288 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_WAITING"
a61af66fc99e Initial load
duke
parents:
diff changeset
1289 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY">
a61af66fc99e Initial load
duke
parents:
diff changeset
1290 <code>java.lang.Thread.State.WAITING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1291 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1292 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING"
a61af66fc99e Initial load
duke
parents:
diff changeset
1293 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT">
a61af66fc99e Initial load
duke
parents:
diff changeset
1294 <code>java.lang.Thread.State.TIMED_WAITING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1295 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1296 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
1297 <b>Rules</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1298 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1299 There can be no more than one answer to a question, although there can be no
a61af66fc99e Initial load
duke
parents:
diff changeset
1300 answer (because the answer is unknown, does not apply, or none of the answers is
a61af66fc99e Initial load
duke
parents:
diff changeset
1301 correct). An answer is set only when the enclosing answers match.
a61af66fc99e Initial load
duke
parents:
diff changeset
1302 That is, no more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1303 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1304 <li><code>JVMTI_THREAD_STATE_RUNNABLE</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1305 <li><code>JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1306 <li><code>JVMTI_THREAD_STATE_WAITING</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1307 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1308 can be set (a <tm>J2SE</tm> compliant implementation will always set
a61af66fc99e Initial load
duke
parents:
diff changeset
1309 one of these if <code>JVMTI_THREAD_STATE_ALIVE</code> is set).
a61af66fc99e Initial load
duke
parents:
diff changeset
1310 And if any of these are set, the enclosing answer
a61af66fc99e Initial load
duke
parents:
diff changeset
1311 <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1312 No more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1313 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1314 <li><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1315 <li><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1316 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1317 can be set (a <tm>J2SE</tm> compliant implementation will always set
a61af66fc99e Initial load
duke
parents:
diff changeset
1318 one of these if <code>JVMTI_THREAD_STATE_WAITING</code> is set).
a61af66fc99e Initial load
duke
parents:
diff changeset
1319 And if either is set, the enclosing answers
a61af66fc99e Initial load
duke
parents:
diff changeset
1320 <code>JVMTI_THREAD_STATE_ALIVE</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
1321 <code>JVMTI_THREAD_STATE_WAITING</code> are set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1322 No more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1323 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1324 <li><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1325 <li><code>JVMTI_THREAD_STATE_PARKED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1326 <li><code>JVMTI_THREAD_STATE_SLEEPING</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1327 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1328 can be set. And if any of these is set, the enclosing answers
a61af66fc99e Initial load
duke
parents:
diff changeset
1329 <code>JVMTI_THREAD_STATE_ALIVE</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
1330 <code>JVMTI_THREAD_STATE_WAITING</code> are set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1331 Also, if <code>JVMTI_THREAD_STATE_SLEEPING</code> is set,
a61af66fc99e Initial load
duke
parents:
diff changeset
1332 then <code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1333 If a state <i>A</i> is implemented using the mechanism of
a61af66fc99e Initial load
duke
parents:
diff changeset
1334 state <i>B</i> then it is state <i>A</i> which
a61af66fc99e Initial load
duke
parents:
diff changeset
1335 is returned by this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1336 For example, if <code>Thread.sleep(long)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1337 is implemented using <code>Object.wait(long)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1338 then it is still <code>JVMTI_THREAD_STATE_SLEEPING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1339 which is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1340 More than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1341 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1342 <li><code>JVMTI_THREAD_STATE_SUSPENDED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1343 <li><code>JVMTI_THREAD_STATE_INTERRUPTED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1344 <li><code>JVMTI_THREAD_STATE_IN_NATIVE</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1345 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1346 can be set, but if any is set,
a61af66fc99e Initial load
duke
parents:
diff changeset
1347 <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1348 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1349 And finally,
a61af66fc99e Initial load
duke
parents:
diff changeset
1350 <code>JVMTI_THREAD_STATE_TERMINATED</code> cannot be set unless
a61af66fc99e Initial load
duke
parents:
diff changeset
1351 <code>JVMTI_THREAD_STATE_ALIVE</code> is not set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1352 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1353 The thread state representation is designed for extension in future versions
a61af66fc99e Initial load
duke
parents:
diff changeset
1354 of the specification; thread state values should be used accordingly, that is
a61af66fc99e Initial load
duke
parents:
diff changeset
1355 they should not be used as ordinals.
a61af66fc99e Initial load
duke
parents:
diff changeset
1356 Most queries can be made by testing a single bit, if use in a switch statement is desired,
a61af66fc99e Initial load
duke
parents:
diff changeset
1357 the state bits should be masked with the interesting bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
1358 All bits not defined above are reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
1359 A VM, compliant to the current specification, must set reserved bits to zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1360 An agent should ignore reserved bits --
a61af66fc99e Initial load
duke
parents:
diff changeset
1361 they should not be assumed to be zero and thus should not be included in comparisons.
a61af66fc99e Initial load
duke
parents:
diff changeset
1362 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1363 <b>Examples</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1364 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1365 Note that the values below exclude reserved and vendor bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
1366 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1367 The state of a thread blocked at a <code>synchronized</code>-statement would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1368 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1369 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER
a61af66fc99e Initial load
duke
parents:
diff changeset
1370 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1371 The state of a thread which hasn't started yet would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1372 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1373 0
a61af66fc99e Initial load
duke
parents:
diff changeset
1374 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1375 The state of a thread at a <code>Object.wait(3000)</code> would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1376 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1377 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_WAITING +
a61af66fc99e Initial load
duke
parents:
diff changeset
1378 JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT +
a61af66fc99e Initial load
duke
parents:
diff changeset
1379 JVMTI_THREAD_STATE_MONITOR_WAITING
a61af66fc99e Initial load
duke
parents:
diff changeset
1380 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1381 The state of a thread suspended while runnable would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1382 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1383 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_RUNNABLE + JVMTI_THREAD_STATE_SUSPENDED
a61af66fc99e Initial load
duke
parents:
diff changeset
1384 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1385 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1386 <b>Testing the State</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1387 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1388 In most cases, the thread state can be determined by testing the one bit corresponding
a61af66fc99e Initial load
duke
parents:
diff changeset
1389 to that question. For example, the code to test if a thread is sleeping:
a61af66fc99e Initial load
duke
parents:
diff changeset
1390 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1391 jint state;
a61af66fc99e Initial load
duke
parents:
diff changeset
1392 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
1393
a61af66fc99e Initial load
duke
parents:
diff changeset
1394 err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
a61af66fc99e Initial load
duke
parents:
diff changeset
1395 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1396 if (state &amp; JVMTI_THREAD_STATE_SLEEPING) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1397 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1398 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1399 For waiting (that is, in <code>Object.wait</code>, parked, or sleeping) it would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1400 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1401 if (state &amp; JVMTI_THREAD_STATE_WAITING) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1402 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1403 For some states, more than one bit will need to be tested as is the case
a61af66fc99e Initial load
duke
parents:
diff changeset
1404 when testing if a thread has not yet been started:
a61af66fc99e Initial load
duke
parents:
diff changeset
1405 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1406 if ((state &amp; (JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_TERMINATED)) == 0) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1407 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1408 To distinguish timed from untimed <code>Object.wait</code>:
a61af66fc99e Initial load
duke
parents:
diff changeset
1409 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1410 if (state &amp; JVMTI_THREAD_STATE_IN_OBJECT_WAIT) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1411 if (state &amp; JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1412 printf("in Object.wait(long timeout)\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
1413 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
1414 printf("in Object.wait()\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
1415 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1416 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1417 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1418 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1419 <b>Relationship to <code>java.lang.Thread.State</code></b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1420 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1421 The thread state represented by <code>java.lang.Thread.State</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1422 returned from <code>java.lang.Thread.getState()</code> is a subset of the
a61af66fc99e Initial load
duke
parents:
diff changeset
1423 information returned from this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1424 The corresponding <code>java.lang.Thread.State</code> can be determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1425 by using the provided conversion masks.
a61af66fc99e Initial load
duke
parents:
diff changeset
1426 For example, this returns the name of the <code>java.lang.Thread.State</code> thread state:
a61af66fc99e Initial load
duke
parents:
diff changeset
1427 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1428 err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
a61af66fc99e Initial load
duke
parents:
diff changeset
1429 abortOnError(err);
a61af66fc99e Initial load
duke
parents:
diff changeset
1430 switch (state &amp; JVMTI_JAVA_LANG_THREAD_STATE_MASK) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1431 case JVMTI_JAVA_LANG_THREAD_STATE_NEW:
a61af66fc99e Initial load
duke
parents:
diff changeset
1432 return "NEW";
a61af66fc99e Initial load
duke
parents:
diff changeset
1433 case JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED:
a61af66fc99e Initial load
duke
parents:
diff changeset
1434 return "TERMINATED";
a61af66fc99e Initial load
duke
parents:
diff changeset
1435 case JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE:
a61af66fc99e Initial load
duke
parents:
diff changeset
1436 return "RUNNABLE";
a61af66fc99e Initial load
duke
parents:
diff changeset
1437 case JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED:
a61af66fc99e Initial load
duke
parents:
diff changeset
1438 return "BLOCKED";
a61af66fc99e Initial load
duke
parents:
diff changeset
1439 case JVMTI_JAVA_LANG_THREAD_STATE_WAITING:
a61af66fc99e Initial load
duke
parents:
diff changeset
1440 return "WAITING";
a61af66fc99e Initial load
duke
parents:
diff changeset
1441 case JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING:
a61af66fc99e Initial load
duke
parents:
diff changeset
1442 return "TIMED_WAITING";
a61af66fc99e Initial load
duke
parents:
diff changeset
1443 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1444 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1445 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1446 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1447 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1448 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1449 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1450 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1451 <jthread null="current" started="maybe" impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1452 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1453 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1454 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1455 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1456 <param id="thread_state_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1457 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1458 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1459 On return, points to state flags,
a61af66fc99e Initial load
duke
parents:
diff changeset
1460 as defined by the <internallink id="jvmtiThreadState">Thread State Flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1461 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1462 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1463 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1464 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1465 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1466 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1467
a61af66fc99e Initial load
duke
parents:
diff changeset
1468 <function id="GetCurrentThread" phase="start" num="18" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
1469 <synopsis>Get Current Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1470 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1471 Get the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1472 The current thread is the Java programming language thread which has called the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1473 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1474 Note that most <jvmti/> functions that take a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1475 as an argument will accept <code>NULL</code> to mean
a61af66fc99e Initial load
duke
parents:
diff changeset
1476 the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1477 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1478 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1479 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1480 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1481 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1482 <param id="thread_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1483 <outptr><jthread/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1484 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1485 On return, points to the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1486 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1487 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1488 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1489 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1490 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1491 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1492
a61af66fc99e Initial load
duke
parents:
diff changeset
1493 <function id="GetAllThreads" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
1494 <synopsis>Get All Threads</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1495 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1496 Get all live threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1497 The threads are Java programming language threads;
a61af66fc99e Initial load
duke
parents:
diff changeset
1498 that is, threads that are attached to the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1499 A thread is live if <code>java.lang.Thread.isAlive()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1500 would return <code>true</code>, that is, the thread has
a61af66fc99e Initial load
duke
parents:
diff changeset
1501 been started and has not yet died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1502 The universe of threads is determined by the context of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1503 environment, which typically is all threads attached to the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1504 Note that this includes <jvmti/> agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1505 (see <functionlink id="RunAgentThread"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1506 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1507 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1508 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1509 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1510 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1511 <param id="threads_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1512 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1513 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1514 On return, points to the number of running threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1515 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1516 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1517 <param id="threads_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1518 <allocbuf outcount="threads_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1519 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1520 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
1521 for each running thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1522 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1523 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1524 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1525 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1526 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1527 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1528
a61af66fc99e Initial load
duke
parents:
diff changeset
1529 <function id="SuspendThread" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
1530 <synopsis>Suspend Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1531 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1532 Suspend the specified thread. If the calling thread is specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
1533 this function will not return until some other thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
1534 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1535 If the thread is currently suspended, this function
a61af66fc99e Initial load
duke
parents:
diff changeset
1536 does nothing and returns an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
1537 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1538 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1539 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1540 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1541 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1542 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1543 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1544 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1545 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1546 The thread to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1547 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1548 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1549 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1550 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1551 <error id="JVMTI_ERROR_THREAD_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1552 Thread already suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1553 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1554 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1555 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1556
a61af66fc99e Initial load
duke
parents:
diff changeset
1557 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
1558 <function id="SuspendAllThreads" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
1559 <synopsis>Suspend All Threads</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1560 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1561 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
1562 There has been no explicit call for this function, and it will
a61af66fc99e Initial load
duke
parents:
diff changeset
1563 thus be removed if there is no interest.
a61af66fc99e Initial load
duke
parents:
diff changeset
1564 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
1565 Suspend all live threads except:
a61af66fc99e Initial load
duke
parents:
diff changeset
1566 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1567 <li>already suspended threads</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1568 <li>those listed in <paramlink id="except_list"></paramlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1569 <li>certain system (non application) threads, as determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1570 by the VM implementation</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1571 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1572 The threads are Java programming language threads;
a61af66fc99e Initial load
duke
parents:
diff changeset
1573 native threads which are not attached to the VM are not
a61af66fc99e Initial load
duke
parents:
diff changeset
1574 Java programming language threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1575 A thread is live if <code>java.lang.Thread.isAlive()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1576 would return <code>true</code>, that is, the thread has
a61af66fc99e Initial load
duke
parents:
diff changeset
1577 been started and has not yet died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1578 The universe of threads is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1579 by the context of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1580 environment, which, typically, is all threads attached to the VM,
a61af66fc99e Initial load
duke
parents:
diff changeset
1581 except critical VM internal threads and <jvmti/> agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1582 (see <functionlink id="RunAgentThread"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1583 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1584 If the calling thread is specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
1585 all other threads are suspended first then the caller thread is suspended -
a61af66fc99e Initial load
duke
parents:
diff changeset
1586 this function will not return until some other thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
1587 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1588 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1589 The list of actually
a61af66fc99e Initial load
duke
parents:
diff changeset
1590 suspended threads is returned in
a61af66fc99e Initial load
duke
parents:
diff changeset
1591 <paramlink id="suspended_list_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1592 Suspension is as defined in <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1593 <functionlink id="ResumeThreadList"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1594 can be used to resume the suspended threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1595 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1596 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1597 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1598 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1599 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1600 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1601 <param id="except_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1602 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1603 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1604 The number of threads in the list of threads not to be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1605 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1606 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1607 <param id="except_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1608 <inbuf incount="except_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1609 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1610 <nullok>not an error if <code>except_count == 0</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
1611 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1612 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1613 The list of threads not to be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1614 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1615 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1616 <param id="suspended_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1617 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1618 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1619 On return, points to the number of threads suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1620 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1621 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1622 <param id="suspended_list_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1623 <allocbuf outcount="suspended_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1624 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1625 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
1626 for each thread suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1627 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1628 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1629 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1630 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1631 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
1632 A thread in <paramlink id="except_list"></paramlink> was invalid.
a61af66fc99e Initial load
duke
parents:
diff changeset
1633 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1634 <error id="JVMTI_ERROR_NULL_POINTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
1635 Both <paramlink id="except_list"></paramlink> was <code>NULL</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1636 and <paramlink id="except_count"></paramlink> was non-zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1637 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1638 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1639 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1640 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
1641
a61af66fc99e Initial load
duke
parents:
diff changeset
1642 <function id="SuspendThreadList" num="92">
a61af66fc99e Initial load
duke
parents:
diff changeset
1643 <synopsis>Suspend Thread List</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1644 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1645 Suspend the <paramlink id="request_count"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1646 threads specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1647 <paramlink id="request_list"></paramlink> array.
a61af66fc99e Initial load
duke
parents:
diff changeset
1648 Threads may be resumed with
a61af66fc99e Initial load
duke
parents:
diff changeset
1649 <functionlink id="ResumeThreadList"></functionlink> or
a61af66fc99e Initial load
duke
parents:
diff changeset
1650 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1651 If the calling thread is specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1652 <paramlink id="request_list"></paramlink> array, this function will
a61af66fc99e Initial load
duke
parents:
diff changeset
1653 not return until some other thread resumes it.
a61af66fc99e Initial load
duke
parents:
diff changeset
1654 Errors encountered in the suspension of a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1655 are returned in the <paramlink id="results"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1656 array, <b>not</b> in the return value of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1657 Threads that are currently suspended do not change state.
a61af66fc99e Initial load
duke
parents:
diff changeset
1658 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1659 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1660 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1661 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1662 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1663 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1664 <param id="request_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1665 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1666 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1667 The number of threads to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1668 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1669 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1670 <param id="request_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1671 <inbuf incount="request_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1672 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1673 The list of threads to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1674 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1675 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1676 <param id="results">
a61af66fc99e Initial load
duke
parents:
diff changeset
1677 <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1678 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1679 An agent supplied array of
a61af66fc99e Initial load
duke
parents:
diff changeset
1680 <paramlink id="request_count"></paramlink> elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
1681 On return, filled with the error code for
a61af66fc99e Initial load
duke
parents:
diff changeset
1682 the suspend of the corresponding thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1683 The error code will be
a61af66fc99e Initial load
duke
parents:
diff changeset
1684 <errorlink id="JVMTI_ERROR_NONE"></errorlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1685 if the thread was suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1686 Possible error codes are those specified
a61af66fc99e Initial load
duke
parents:
diff changeset
1687 for <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1688 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1689 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1690 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1691 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1692 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1693 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1694
a61af66fc99e Initial load
duke
parents:
diff changeset
1695 <function id="ResumeThread" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
1696 <synopsis>Resume Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1697 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1698 Resume a suspended thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1699 Any threads currently suspended through
a61af66fc99e Initial load
duke
parents:
diff changeset
1700 a <jvmti/> suspend function (eg.
a61af66fc99e Initial load
duke
parents:
diff changeset
1701 <functionlink id="SuspendThread"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1702 or <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1703 will resume execution;
a61af66fc99e Initial load
duke
parents:
diff changeset
1704 all other threads are unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
1705 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1706 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1707 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1708 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1709 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1710 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1711 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1712 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1713 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1714 The thread to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1715 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1716 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1717 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1718 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1719 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1720 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1721 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1722 <error id="JVMTI_ERROR_INVALID_TYPESTATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
1723 The state of the thread has been modified, and is now inconsistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
1724 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1725 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1726 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1727
a61af66fc99e Initial load
duke
parents:
diff changeset
1728 <function id="ResumeThreadList" num="93">
a61af66fc99e Initial load
duke
parents:
diff changeset
1729 <synopsis>Resume Thread List</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1730 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1731 Resume the <paramlink id="request_count"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1732 threads specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1733 <paramlink id="request_list"></paramlink> array.
a61af66fc99e Initial load
duke
parents:
diff changeset
1734 Any thread suspended through
a61af66fc99e Initial load
duke
parents:
diff changeset
1735 a <jvmti/> suspend function (eg.
a61af66fc99e Initial load
duke
parents:
diff changeset
1736 <functionlink id="SuspendThreadList"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1737 or <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1738 will resume execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
1739 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1740 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1741 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1742 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1743 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1744 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1745 <param id="request_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1746 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1747 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1748 The number of threads to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1749 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1750 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1751 <param id="request_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1752 <inbuf incount="request_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1753 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1754 The threads to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1755 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1756 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1757 <param id="results">
a61af66fc99e Initial load
duke
parents:
diff changeset
1758 <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1759 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1760 An agent supplied array of
a61af66fc99e Initial load
duke
parents:
diff changeset
1761 <paramlink id="request_count"></paramlink> elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
1762 On return, filled with the error code for
a61af66fc99e Initial load
duke
parents:
diff changeset
1763 the resume of the corresponding thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1764 The error code will be
a61af66fc99e Initial load
duke
parents:
diff changeset
1765 <errorlink id="JVMTI_ERROR_NONE"></errorlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1766 if the thread was suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1767 Possible error codes are those specified
a61af66fc99e Initial load
duke
parents:
diff changeset
1768 for <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1769 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1770 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1771 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1772 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1773 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1774 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1775
a61af66fc99e Initial load
duke
parents:
diff changeset
1776 <function id="StopThread" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
1777 <synopsis>Stop Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1778 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1779 Send the specified asynchronous exception to the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1780 (similar to <code>java.lang.Thread.stop</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1781 Normally, this function is used to kill the specified thread with an
a61af66fc99e Initial load
duke
parents:
diff changeset
1782 instance of the exception <code>ThreadDeath</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1783 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1784 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1785 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1786 <required id="can_signal_thread"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1787 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1788 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1789 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1790 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1791 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1792 The thread to stop.
a61af66fc99e Initial load
duke
parents:
diff changeset
1793 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1794 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1795 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
1796 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1797 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1798 The asynchronous exception object.
a61af66fc99e Initial load
duke
parents:
diff changeset
1799 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1800 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1801 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1802 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1803 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1804 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1805
a61af66fc99e Initial load
duke
parents:
diff changeset
1806 <function id="InterruptThread" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
1807 <synopsis>Interrupt Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1808 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1809 Interrupt the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1810 (similar to <code>java.lang.Thread.interrupt</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1811 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1812 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1813 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1814 <required id="can_signal_thread"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1815 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1816 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1817 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1818 <jthread impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1819 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1820 The thread to interrupt.
a61af66fc99e Initial load
duke
parents:
diff changeset
1821 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1822 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1823 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1824 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1825 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1826 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1827
a61af66fc99e Initial load
duke
parents:
diff changeset
1828 <function id="GetThreadInfo" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
1829 <synopsis>Get Thread Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1830 <typedef id="jvmtiThreadInfo" label="Thread information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
1831 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
1832 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1833 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1834 The thread name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
1835 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
1836 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1837 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1838 <field id="priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
1839 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1840 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1841 The thread priority. See the thread priority constants:
a61af66fc99e Initial load
duke
parents:
diff changeset
1842 <datalink id="jvmtiThreadPriority"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1843 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1844 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1845 <field id="is_daemon">
a61af66fc99e Initial load
duke
parents:
diff changeset
1846 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1847 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1848 Is this a daemon thread?
a61af66fc99e Initial load
duke
parents:
diff changeset
1849 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1850 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1851 <field id="thread_group">
a61af66fc99e Initial load
duke
parents:
diff changeset
1852 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1853 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1854 The thread group to which this thread belongs.
a61af66fc99e Initial load
duke
parents:
diff changeset
1855 <code>NULL</code> if the thread has died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1856 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1857 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1858 <field id="context_class_loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
1859 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1860 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1861 The context class loader associated with this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1862 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1863 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1864 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
1865 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1866 Get thread information. The fields of the <datalink id="jvmtiThreadInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
1867 are filled in with details of the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1868 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1869 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1870 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1871 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1872 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1873 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1874 <jthread null="current" impl="noconvert" started="maybe"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1875 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1876 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1877 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1878 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1879 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1880 <outptr><struct>jvmtiThreadInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1881 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1882 On return, filled with information describing the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1883 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1884 For JDK 1.1 implementations that don't
a61af66fc99e Initial load
duke
parents:
diff changeset
1885 recognize context class loaders,
a61af66fc99e Initial load
duke
parents:
diff changeset
1886 the <code>context_class_loader</code> field will be NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
1887 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1888 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1889 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1890 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1891 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1892 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1893
a61af66fc99e Initial load
duke
parents:
diff changeset
1894 <function id="GetOwnedMonitorInfo" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
1895 <synopsis>Get Owned Monitor Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1896 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1897 Get information about the monitors owned by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1898 specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1899 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1900 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1901 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1902 <required id="can_get_owned_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1903 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1904 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1905 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1906 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1907 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1908 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1909 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1910 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1911 <param id="owned_monitor_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1912 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1913 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1914 The number of monitors returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1915 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1916 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1917 <param id="owned_monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1918 <allocbuf outcount="owned_monitor_count_ptr"><jobject/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1919 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1920 The array of owned monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
1921 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1922 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1923 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1924 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1925 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1926 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1927
a61af66fc99e Initial load
duke
parents:
diff changeset
1928 <function id="GetOwnedMonitorStackDepthInfo" num="153" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
1929 <synopsis>Get Owned Monitor Stack Depth Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1930 <typedef id="jvmtiMonitorStackDepthInfo"
a61af66fc99e Initial load
duke
parents:
diff changeset
1931 label="Monitor stack depth information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
1932 <field id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
1933 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1934 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1935 The owned monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1936 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1937 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1938 <field id="stack_depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
1939 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1940 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1941 The stack depth. Corresponds to the stack depth used in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1942 <internallink id="stack">Stack Frame functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1943 That is, zero is the current frame, one is the frame which
a61af66fc99e Initial load
duke
parents:
diff changeset
1944 called the current frame. And it is negative one if the
a61af66fc99e Initial load
duke
parents:
diff changeset
1945 implementation cannot determine the stack depth (e.g., for
a61af66fc99e Initial load
duke
parents:
diff changeset
1946 monitors acquired by JNI <code>MonitorEnter</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1947 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1948 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1949 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
1950 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1951 Get information about the monitors owned by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1952 specified thread and the depth of the stack frame which locked them.
a61af66fc99e Initial load
duke
parents:
diff changeset
1953 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1954 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1955 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1956 <required id="can_get_owned_monitor_stack_depth_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1957 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1958 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1959 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1960 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1961 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1962 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1963 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1964 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1965 <param id="monitor_info_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1966 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1967 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1968 The number of monitors returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1969 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1970 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1971 <param id="monitor_info_ptr">
10981
5c89346f2bdd 6493116: JVMTI Doc: GetOwnedMonitorStackDepthInfo has a typo in monitor_info_ptr parameter description
sspitsyn
parents: 7168
diff changeset
1972 <allocbuf outcount="monitor_info_count_ptr">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1973 <struct>jvmtiMonitorStackDepthInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
1974 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1975 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1976 The array of owned monitor depth information.
a61af66fc99e Initial load
duke
parents:
diff changeset
1977 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1978 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1979 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1980 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1981 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1982 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1983
a61af66fc99e Initial load
duke
parents:
diff changeset
1984 <function id="GetCurrentContendedMonitor" num="11">
a61af66fc99e Initial load
duke
parents:
diff changeset
1985 <synopsis>Get Current Contended Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1986 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1987 Get the object, if any, whose monitor the specified thread is waiting to
a61af66fc99e Initial load
duke
parents:
diff changeset
1988 enter or waiting to regain through <code>java.lang.Object.wait</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1989 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1990 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1991 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1992 <required id="can_get_current_contended_monitor"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1993 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1994 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1995 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1996 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1997 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1998 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1999 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2000 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2001 <param id="monitor_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2002 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2003 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2004 On return, filled with the current contended monitor, or
a61af66fc99e Initial load
duke
parents:
diff changeset
2005 NULL if there is none.
a61af66fc99e Initial load
duke
parents:
diff changeset
2006 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2007 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2008 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2009 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2010 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2011 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2012
a61af66fc99e Initial load
duke
parents:
diff changeset
2013 <callback id="jvmtiStartFunction">
a61af66fc99e Initial load
duke
parents:
diff changeset
2014 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2015 <synopsis>Agent Start Function</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2016 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2017 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2018 This function is the entry point for an agent thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2019 started with
a61af66fc99e Initial load
duke
parents:
diff changeset
2020 <functionlink id="RunAgentThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2021 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2022 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2023 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
2024 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2025 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2026 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2027 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2028 The <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
2029 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2030 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2031 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
2032 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2033 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2034 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2036 The JNI environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
2037 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2038 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2039 <param id="arg">
a61af66fc99e Initial load
duke
parents:
diff changeset
2040 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2041 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2042 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2043 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2044 The <code>arg</code> parameter passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
2045 <functionlink id="RunAgentThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2046 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2047 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2048 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2049 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
2050
a61af66fc99e Initial load
duke
parents:
diff changeset
2051 <function id="RunAgentThread" num="12">
a61af66fc99e Initial load
duke
parents:
diff changeset
2052 <synopsis>Run Agent Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2053 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2054 Starts the execution of an agent thread. with the specified native function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2055 The parameter <paramlink id="arg"></paramlink> is forwarded on to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2056 <functionlink id="jvmtiStartFunction">start function</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2057 (specified with <paramlink id="proc"></paramlink>) as its single argument.
a61af66fc99e Initial load
duke
parents:
diff changeset
2058 This function allows the creation of agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
2059 for handling communication with another process or for handling events
a61af66fc99e Initial load
duke
parents:
diff changeset
2060 without the need to load a special subclass of <code>java.lang.Thread</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
2061 implementer of <code>java.lang.Runnable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2062 Instead, the created thread can run entirely in native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2063 However, the created thread does require a newly created instance
a61af66fc99e Initial load
duke
parents:
diff changeset
2064 of <code>java.lang.Thread</code> (referenced by the argument <code>thread</code>) to
a61af66fc99e Initial load
duke
parents:
diff changeset
2065 which it will be associated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2066 The thread object can be created with JNI calls.
a61af66fc99e Initial load
duke
parents:
diff changeset
2067 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2068 The following common thread priorities are provided for your convenience:
a61af66fc99e Initial load
duke
parents:
diff changeset
2069 <constants id="jvmtiThreadPriority" label="Thread Priority Constants" kind="const">
a61af66fc99e Initial load
duke
parents:
diff changeset
2070 <constant id="JVMTI_THREAD_MIN_PRIORITY" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2071 Minimum possible thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2072 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2073 <constant id="JVMTI_THREAD_NORM_PRIORITY" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
2074 Normal thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2075 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2076 <constant id="JVMTI_THREAD_MAX_PRIORITY" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
2077 Maximum possible thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2078 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2079 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
2080 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2081 The new thread is started as a daemon thread with the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
2082 <paramlink id="priority"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2083 If enabled, a <eventlink id="ThreadStart"/> event will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
2084 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2085 Since the thread has been started, the thread will be live when this function
a61af66fc99e Initial load
duke
parents:
diff changeset
2086 returns, unless the thread has died immediately.
a61af66fc99e Initial load
duke
parents:
diff changeset
2087 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2088 The thread group of the thread is ignored -- specifically, the thread is not
a61af66fc99e Initial load
duke
parents:
diff changeset
2089 added to the thread group and the thread is not seen on queries of the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2090 group at either the Java programming language or <jvmti/> levels.
a61af66fc99e Initial load
duke
parents:
diff changeset
2091 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2092 The thread is not visible to Java programming language queries but is
a61af66fc99e Initial load
duke
parents:
diff changeset
2093 included in <jvmti/> queries (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
2094 <functionlink id="GetAllThreads"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
2095 <functionlink id="GetAllStackTraces"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2096 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2097 Upon execution of <code>proc</code>, the new thread will be attached to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2098 VM--see the JNI documentation on
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
2099 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#wp1060"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2100 >Attaching to the VM</externallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2101 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2102 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2103 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2104 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2105 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2106 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2107 <jthread impl="noconvert" started="no"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2108 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2109 The thread to run.
a61af66fc99e Initial load
duke
parents:
diff changeset
2110 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2111 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2112 <param id="proc">
a61af66fc99e Initial load
duke
parents:
diff changeset
2113 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
2114 <struct>jvmtiStartFunction</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2115 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
2116 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2117 The start function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2118 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2119 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2120 <param id="arg">
a61af66fc99e Initial load
duke
parents:
diff changeset
2121 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2122 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2123 <nullok><code>NULL</code> is passed to the start function</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2124 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2125 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2126 The argument to the start function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2127 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2128 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2129 <param id="priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
2130 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2131 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2132 The priority of the started thread. Any thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2133 priority allowed by <code>java.lang.Thread.setPriority</code> can be used including
a61af66fc99e Initial load
duke
parents:
diff changeset
2134 those in <datalink id="jvmtiThreadPriority"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2135 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2136 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2137 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2138 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2139 <error id="JVMTI_ERROR_INVALID_PRIORITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
2140 <paramlink id="priority"/> is less than
a61af66fc99e Initial load
duke
parents:
diff changeset
2141 <datalink id="JVMTI_THREAD_MIN_PRIORITY"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2142 or greater than
a61af66fc99e Initial load
duke
parents:
diff changeset
2143 <datalink id="JVMTI_THREAD_MAX_PRIORITY"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2144 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2145 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2146 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2147
a61af66fc99e Initial load
duke
parents:
diff changeset
2148 <function id="SetThreadLocalStorage" jkernel="yes" impl="notrace" phase="start" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
2149 <synopsis>Set Thread Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2150 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2151 The VM stores a pointer value associated with each environment-thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2152 pair. This pointer value is called <i>thread-local storage</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2153 This value is <code>NULL</code> unless set with this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2154 Agents can allocate memory in which they store thread specific
a61af66fc99e Initial load
duke
parents:
diff changeset
2155 information. By setting thread-local storage it can then be
a61af66fc99e Initial load
duke
parents:
diff changeset
2156 accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
2157 <functionlink id="GetThreadLocalStorage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2158 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2159 This function is called by the agent to set the value of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2160 thread-local storage. <jvmti/> supplies to the agent a pointer-size
a61af66fc99e Initial load
duke
parents:
diff changeset
2161 thread-local storage that can be used to record per-thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2162 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2163 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2164 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2165 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2166 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2167 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2168 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2169 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2170 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2171 Store to this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2172 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2173 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2174 <param id="data">
a61af66fc99e Initial load
duke
parents:
diff changeset
2175 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2176 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2177 <nullok>value is set to <code>NULL</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2178 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2179 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2180 The value to be entered into the thread-local storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
2181 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2182 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2183 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2184 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2185 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2186 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2187
a61af66fc99e Initial load
duke
parents:
diff changeset
2188 <function id="GetThreadLocalStorage" jkernel="yes" impl="innative notrace" phase="start" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
2189 <synopsis>Get Thread Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2190 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2191 Called by the agent to get the value of the <jvmti/> thread-local
a61af66fc99e Initial load
duke
parents:
diff changeset
2192 storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
2193 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2194 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2195 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2196 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2197 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2198 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2199 <jthread null="current" impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2200 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2201 Retrieve from this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2202 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2203 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2204 <param id="data_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2205 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2206 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2207 Pointer through which the value of the thread local
a61af66fc99e Initial load
duke
parents:
diff changeset
2208 storage is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2209 If thread-local storage has not been set with
a61af66fc99e Initial load
duke
parents:
diff changeset
2210 <functionlink id="SetThreadLocalStorage"></functionlink> the returned
a61af66fc99e Initial load
duke
parents:
diff changeset
2211 pointer is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2212 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2213 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2214 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2215 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2216 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2217 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2218
a61af66fc99e Initial load
duke
parents:
diff changeset
2219 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2220
a61af66fc99e Initial load
duke
parents:
diff changeset
2221 <category id="thread_groups" label="Thread Group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2222 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2223 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2224
a61af66fc99e Initial load
duke
parents:
diff changeset
2225 <function id="GetTopThreadGroups" num="13">
a61af66fc99e Initial load
duke
parents:
diff changeset
2226 <synopsis>Get Top Thread Groups</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2227 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2228 Return all top-level (parentless) thread groups in the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
2229 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2230 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2231 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2232 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2233 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2234 <param id="group_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2235 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2236 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2237 On return, points to the number of top-level thread groups.
a61af66fc99e Initial load
duke
parents:
diff changeset
2238 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2239 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2240 <param id="groups_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2241 <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2242 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2243 On return, refers to a pointer to the top-level thread group array.
a61af66fc99e Initial load
duke
parents:
diff changeset
2244 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2245 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2246 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2247 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2248 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2249 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2250
a61af66fc99e Initial load
duke
parents:
diff changeset
2251 <function id="GetThreadGroupInfo" num="14">
a61af66fc99e Initial load
duke
parents:
diff changeset
2252 <synopsis>Get Thread Group Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2253 <typedef id="jvmtiThreadGroupInfo" label="Thread group information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2254 <field id="parent">
a61af66fc99e Initial load
duke
parents:
diff changeset
2255 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2256 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2257 The parent thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2258 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2259 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2260 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
2261 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2262 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2263 The thread group's name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
2264 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
2265 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2266 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2267 <field id="max_priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
2268 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2269 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2270 The maximum priority for this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2271 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2272 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2273 <field id="is_daemon">
a61af66fc99e Initial load
duke
parents:
diff changeset
2274 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2275 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2276 Is this a daemon thread group?
a61af66fc99e Initial load
duke
parents:
diff changeset
2277 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2278 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2279 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2280 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2281 Get information about the thread group. The fields of the
a61af66fc99e Initial load
duke
parents:
diff changeset
2282 <functionlink id="jvmtiThreadGroupInfo"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
2283 are filled in with details of the specified thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2284 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2285 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2286 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2287 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2288 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2289 <param id="group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2290 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2291 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2292 The thread group to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2293 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2294 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2295 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2296 <outptr><struct>jvmtiThreadGroupInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2297 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2298 On return, filled with information describing the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
2299 thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2300 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2301 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2302 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2303 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2304 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2305 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2306
a61af66fc99e Initial load
duke
parents:
diff changeset
2307 <function id="GetThreadGroupChildren" num="15">
a61af66fc99e Initial load
duke
parents:
diff changeset
2308 <synopsis>Get Thread Group Children</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2309 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2310 Get the live threads and active subgroups in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2311 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2312 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2313 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2314 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2315 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2316 <param id="group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2317 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2318 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2319 The group to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2320 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2321 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2322 <param id="thread_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2323 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2324 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2325 On return, points to the number of live threads in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2326 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2327 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2328 <param id="threads_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2329 <allocbuf outcount="thread_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2330 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2331 On return, points to an array of the live threads in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2332 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2333 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2334 <param id="group_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2335 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2336 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2337 On return, points to the number of active child thread groups
a61af66fc99e Initial load
duke
parents:
diff changeset
2338 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2339 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2340 <param id="groups_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2341 <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2342 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2343 On return, points to an array of the active child thread groups.
a61af66fc99e Initial load
duke
parents:
diff changeset
2344 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2345 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2346 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2347 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2348 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2349 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2350 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2351
a61af66fc99e Initial load
duke
parents:
diff changeset
2352 <category id="stack" label="Stack Frame">
a61af66fc99e Initial load
duke
parents:
diff changeset
2353 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2354 These functions provide information about the stack of a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2355 Stack frames are referenced by depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2356 The frame at depth zero is the current frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2357 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2358 Stack frames are as described in
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2359 <vmspec chapter="3.6"/>,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2360 That is, they correspond to method
a61af66fc99e Initial load
duke
parents:
diff changeset
2361 invocations (including native methods) but do not correspond to platform native or
a61af66fc99e Initial load
duke
parents:
diff changeset
2362 VM internal frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
2363 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2364 A <jvmti/> implementation may use method invocations to launch a thread and
a61af66fc99e Initial load
duke
parents:
diff changeset
2365 the corresponding frames may be included in the stack as presented by these functions --
a61af66fc99e Initial load
duke
parents:
diff changeset
2366 that is, there may be frames shown
a61af66fc99e Initial load
duke
parents:
diff changeset
2367 deeper than <code>main()</code> and <code>run()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2368 However this presentation must be consistent across all <jvmti/> functionality which
a61af66fc99e Initial load
duke
parents:
diff changeset
2369 uses stack frames or stack depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2370 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2371
a61af66fc99e Initial load
duke
parents:
diff changeset
2372 <typedef id="jvmtiFrameInfo" label="Stack frame information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2373 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2374 Information about a stack frame is returned in this structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
2375 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2376 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
2377 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2378 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2379 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2380 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2381 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2382 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
2383 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2384 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2385 The index of the instruction executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2386 <code>-1</code> if the frame is executing a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2387 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2388 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2389 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2390
a61af66fc99e Initial load
duke
parents:
diff changeset
2391 <typedef id="jvmtiStackInfo" label="Stack information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2392 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2393 Information about a set of stack frames is returned in this structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
2394 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2395 <field id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2396 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2397 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2398 On return, the thread traced.
a61af66fc99e Initial load
duke
parents:
diff changeset
2399 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2400 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2401 <field id="state">
a61af66fc99e Initial load
duke
parents:
diff changeset
2402 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2403 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2404 On return, the thread state. See <functionlink id="GetThreadState"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2405 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2406 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2407 <field id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2408 <outbuf incount="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2409 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2410 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2411 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2412 On return, this agent allocated buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2413 with stack frame information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2414 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2415 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2416 <field id="frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2417 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2418 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2419 On return, the number of records filled into
a61af66fc99e Initial load
duke
parents:
diff changeset
2420 <code>frame_buffer</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2421 This will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2422 min(<code>max_frame_count</code>, <i>stackDepth</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2423 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2424 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2425 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2426
a61af66fc99e Initial load
duke
parents:
diff changeset
2427 <function id="GetStackTrace" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
2428 <synopsis>Get Stack Trace</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2429 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2430 Get information about the stack of a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2431 If <paramlink id="max_frame_count"></paramlink> is less than the depth of the stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2432 the <paramlink id="max_frame_count"></paramlink> topmost frames are returned,
a61af66fc99e Initial load
duke
parents:
diff changeset
2433 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2434 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2435 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2436 The following example causes up to five of the topmost frames
a61af66fc99e Initial load
duke
parents:
diff changeset
2437 to be returned and (if there are any frames) the currently
a61af66fc99e Initial load
duke
parents:
diff changeset
2438 executing method name to be printed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2439 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2440 jvmtiFrameInfo frames[5];
a61af66fc99e Initial load
duke
parents:
diff changeset
2441 jint count;
a61af66fc99e Initial load
duke
parents:
diff changeset
2442 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
2443
a61af66fc99e Initial load
duke
parents:
diff changeset
2444 err = (*jvmti)-&gt;GetStackTrace(jvmti, aThread, 0, 5,
7168
73e64867adb7 8003690: Example code in JVMTI GetStackTrace documentation is broken
mikael
parents: 6919
diff changeset
2445 frames, &amp;count);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2446 if (err == JVMTI_ERROR_NONE &amp;&amp; count &gt;= 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2447 char *methodName;
a61af66fc99e Initial load
duke
parents:
diff changeset
2448 err = (*jvmti)-&gt;GetMethodName(jvmti, frames[0].method,
7168
73e64867adb7 8003690: Example code in JVMTI GetStackTrace documentation is broken
mikael
parents: 6919
diff changeset
2449 &amp;methodName, NULL, NULL);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2450 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2451 printf("Executing method: %s", methodName);
a61af66fc99e Initial load
duke
parents:
diff changeset
2452 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2453 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2454 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2455 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2456 check example code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2457 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2458 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2459 The <paramlink id="thread"></paramlink> need not be suspended
a61af66fc99e Initial load
duke
parents:
diff changeset
2460 to call this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2461 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2462 The <functionlink id="GetLineNumberTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2463 function can be used to map locations to line numbers. Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
2464 this mapping can be done lazily.
a61af66fc99e Initial load
duke
parents:
diff changeset
2465 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2466 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2467 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2468 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2469 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2470 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2471 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2472 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2473 Fetch the stack trace of this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2474 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2475 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2476 <param id="start_depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2477 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2478 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2479 Begin retrieving frames at this depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2480 If non-negative, count from the current frame,
a61af66fc99e Initial load
duke
parents:
diff changeset
2481 the first frame retrieved is at depth <code>start_depth</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2482 For example, if zero, start from the current frame; if one, start from the
a61af66fc99e Initial load
duke
parents:
diff changeset
2483 caller of the current frame; if two, start from the caller of the
a61af66fc99e Initial load
duke
parents:
diff changeset
2484 caller of the current frame; and so on.
a61af66fc99e Initial load
duke
parents:
diff changeset
2485 If negative, count from below the oldest frame,
a61af66fc99e Initial load
duke
parents:
diff changeset
2486 the first frame retrieved is at depth <i>stackDepth</i><code> + start_depth</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2487 where <i>stackDepth</i> is the count of frames on the stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2488 For example, if negative one, only the oldest frame is retrieved;
a61af66fc99e Initial load
duke
parents:
diff changeset
2489 if negative two, start from the frame called by the oldest frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2490 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2491 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2492 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2493 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2494 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2495 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
a61af66fc99e Initial load
duke
parents:
diff changeset
2496 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2497 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2498 <param id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2499 <outbuf incount="max_frame_count" outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2500 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2501 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2502 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2503 On return, this agent allocated buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2504 with stack frame information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2505 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2506 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2507 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2508 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2509 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2510 On return, points to the number of records filled in.
a61af66fc99e Initial load
duke
parents:
diff changeset
2511 For non-negative <code>start_depth</code>, this will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2512 min(<code>max_frame_count</code>, <i>stackDepth</i><code> - start_depth</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2513 For negative <code>start_depth</code>, this will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2514 min(<code>max_frame_count</code>, <code>-start_depth</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2515 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2516 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2517 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2518 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2519 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
2520 <paramlink id="start_depth"/> is positive and greater than or equal to <i>stackDepth</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2521 Or <paramlink id="start_depth"/> is negative and less than <i>-stackDepth</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2522 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2523 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2524 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2525
a61af66fc99e Initial load
duke
parents:
diff changeset
2526
a61af66fc99e Initial load
duke
parents:
diff changeset
2527 <function id="GetAllStackTraces" num="100">
a61af66fc99e Initial load
duke
parents:
diff changeset
2528 <synopsis>Get All Stack Traces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2529 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2530 Get information about the stacks of all live threads
a61af66fc99e Initial load
duke
parents:
diff changeset
2531 (including <internallink id="RunAgentThread">agent threads</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2532 If <paramlink id="max_frame_count"/> is less than the depth of a stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2533 the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
2534 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2535 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2536 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2537 All stacks are collected simultaneously, that is, no changes will occur to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2538 thread state or stacks between the sampling of one thread and the next.
a61af66fc99e Initial load
duke
parents:
diff changeset
2539 The threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2540
a61af66fc99e Initial load
duke
parents:
diff changeset
2541 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2542 jvmtiStackInfo *stack_info;
a61af66fc99e Initial load
duke
parents:
diff changeset
2543 jint thread_count;
a61af66fc99e Initial load
duke
parents:
diff changeset
2544 int ti;
a61af66fc99e Initial load
duke
parents:
diff changeset
2545 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
2546
a61af66fc99e Initial load
duke
parents:
diff changeset
2547 err = (*jvmti)-&gt;GetAllStackTraces(jvmti, MAX_FRAMES, &amp;stack_info, &amp;thread_count);
a61af66fc99e Initial load
duke
parents:
diff changeset
2548 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2549 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
2550 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2551 for (ti = 0; ti &lt; thread_count; ++ti) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2552 jvmtiStackInfo *infop = &amp;stack_info[ti];
a61af66fc99e Initial load
duke
parents:
diff changeset
2553 jthread thread = infop-&gt;thread;
a61af66fc99e Initial load
duke
parents:
diff changeset
2554 jint state = infop-&gt;state;
a61af66fc99e Initial load
duke
parents:
diff changeset
2555 jvmtiFrameInfo *frames = infop-&gt;frame_buffer;
a61af66fc99e Initial load
duke
parents:
diff changeset
2556 int fi;
a61af66fc99e Initial load
duke
parents:
diff changeset
2557
a61af66fc99e Initial load
duke
parents:
diff changeset
2558 myThreadAndStatePrinter(thread, state);
a61af66fc99e Initial load
duke
parents:
diff changeset
2559 for (fi = 0; fi &lt; infop-&gt;frame_count; fi++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2560 myFramePrinter(frames[fi].method, frames[fi].location);
a61af66fc99e Initial load
duke
parents:
diff changeset
2561 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2562 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2563 /* this one Deallocate call frees all data allocated by GetAllStackTraces */
a61af66fc99e Initial load
duke
parents:
diff changeset
2564 err = (*jvmti)-&gt;Deallocate(jvmti, stack_info);
a61af66fc99e Initial load
duke
parents:
diff changeset
2565 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2566 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2567 check example code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2568 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2569
a61af66fc99e Initial load
duke
parents:
diff changeset
2570 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2571 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2572 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2573 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2574 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2575 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2576 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2577 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2578 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2579 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2580 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2581 <param id="stack_info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2582 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2583 <struct>jvmtiStackInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2584 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2585 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2586 On return, this buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2587 with stack information for each thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2588 The number of <datalink id="jvmtiStackInfo"/> records is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
2589 by <paramlink id="thread_count_ptr"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2590 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2591 Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2592 buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2593 These buffers must not be separately deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2594 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2595 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2596 <param id="thread_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2597 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2598 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2599 The number of threads traced.
a61af66fc99e Initial load
duke
parents:
diff changeset
2600 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2601 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2602 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2603 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2604 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2605 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2606
a61af66fc99e Initial load
duke
parents:
diff changeset
2607 <function id="GetThreadListStackTraces" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
2608 <synopsis>Get Thread List Stack Traces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2609 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2610 Get information about the stacks of the supplied threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
2611 If <paramlink id="max_frame_count"/> is less than the depth of a stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2612 the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
2613 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2614 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2615 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2616 All stacks are collected simultaneously, that is, no changes will occur to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2617 thread state or stacks between the sampling one thread and the next.
a61af66fc99e Initial load
duke
parents:
diff changeset
2618 The threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2619 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2620 If a thread has not yet started or terminates before the stack information is collected,
a61af66fc99e Initial load
duke
parents:
diff changeset
2621 a zero length stack (<datalink id="jvmtiStackInfo.frame_count"/> will be zero)
a61af66fc99e Initial load
duke
parents:
diff changeset
2622 will be returned and the thread <datalink id="jvmtiStackInfo.state"/> can be checked.
a61af66fc99e Initial load
duke
parents:
diff changeset
2623 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2624 See the example for the similar function
a61af66fc99e Initial load
duke
parents:
diff changeset
2625 <functionlink id="GetAllStackTraces"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2626 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2627 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2628 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2629 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2630 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2631 <param id="thread_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2632 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2633 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2634 The number of threads to trace.
a61af66fc99e Initial load
duke
parents:
diff changeset
2635 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2636 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2637 <param id="thread_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
2638 <inbuf incount="thread_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2639 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2640 The list of threads to trace.
a61af66fc99e Initial load
duke
parents:
diff changeset
2641 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2642 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2643 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2644 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2645 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2646 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2647 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2648 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2649 <param id="stack_info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2650 <allocbuf outcount="thread_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2651 <struct>jvmtiStackInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2652 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2653 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2654 On return, this buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2655 with stack information for each thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2656 The number of <datalink id="jvmtiStackInfo"/> records is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
2657 by <paramlink id="thread_count"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2658 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2659 Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2660 buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2661 These buffers must not be separately deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2662 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2663 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2664 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2665 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2666 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
2667 An element in <paramlink id="thread_list"/> is not a thread object.
a61af66fc99e Initial load
duke
parents:
diff changeset
2668 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2669 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2670 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2671
a61af66fc99e Initial load
duke
parents:
diff changeset
2672 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
2673 <function id="AsyncGetStackTrace" num="1000">
a61af66fc99e Initial load
duke
parents:
diff changeset
2674 <synopsis>Get Stack Trace--Asynchronous</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2675 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2676 Get information about the entire stack of a thread (or a sub-section of it).
a61af66fc99e Initial load
duke
parents:
diff changeset
2677 This is the asynchronous version of <functionlink id="GetStackTrace"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2678 and is reentrant and safe to call
a61af66fc99e Initial load
duke
parents:
diff changeset
2679 from asynchronous signal handlers.
a61af66fc99e Initial load
duke
parents:
diff changeset
2680 The stack trace is returned only for the calling thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2681 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2682 The <functionlink id="GetLineNumberTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2683 function can be used to map locations to line numbers. Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
2684 this mapping can be done lazily.
a61af66fc99e Initial load
duke
parents:
diff changeset
2685 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2686 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2687 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2688 <required id="can_get_async_stack_trace"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2689 <capability id="can_show_JVM_spec_async_frames">
a61af66fc99e Initial load
duke
parents:
diff changeset
2690 If <code>false</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2691 <paramlink id="use_java_stack"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2692 must be <code>false</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2693 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
2694 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2695 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2696 <param id="use_java_stack">
a61af66fc99e Initial load
duke
parents:
diff changeset
2697 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2698 <description>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2699 Return the stack showing <vmspec/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2700 model of the stack;
a61af66fc99e Initial load
duke
parents:
diff changeset
2701 otherwise, show the internal representation of the stack with
a61af66fc99e Initial load
duke
parents:
diff changeset
2702 inlined and optimized methods missing. If the virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
2703 is using the <i>Java Virtual Machine Specification</i> stack model
a61af66fc99e Initial load
duke
parents:
diff changeset
2704 internally, this flag is ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
2705 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2706 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2707 <param id="max_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2708 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2709 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2710 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
a61af66fc99e Initial load
duke
parents:
diff changeset
2711 Retrieve this many unless the stack depth is less than <code>max_count</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2712 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2713 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2714 <param id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2715 <outbuf incount="max_count" outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2716 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2717 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2718 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2719 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2720 The agent passes in a buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
2721 large enough to hold <code>max_count</code> records of
a61af66fc99e Initial load
duke
parents:
diff changeset
2722 <datalink id="jvmtiFrameInfo"></datalink>. This buffer must be
a61af66fc99e Initial load
duke
parents:
diff changeset
2723 pre-allocated by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
2724 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2725 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2726 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2727 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2728 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2729 On return, points to the number of records filled in..
a61af66fc99e Initial load
duke
parents:
diff changeset
2730 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2731 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2732 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2733 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2734 <error id="JVMTI_ERROR_UNATTACHED_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
2735 The thread being used to call this function is not attached
a61af66fc99e Initial load
duke
parents:
diff changeset
2736 to the virtual machine. Calls must be made from attached threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
2737 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2738 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2739 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2740 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
2741
a61af66fc99e Initial load
duke
parents:
diff changeset
2742 <function id="GetFrameCount" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
2743 <synopsis>Get Frame Count</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2744 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2745 Get the number of frames currently in the specified thread's call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2746 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2747 If this function is called for a thread actively executing bytecodes (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
2748 not the current thread and not suspended), the information returned is transient.
a61af66fc99e Initial load
duke
parents:
diff changeset
2749 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2750 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2751 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2752 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2753 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2754 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2755 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2756 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2757 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2758 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2759 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2760 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2761 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2762 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2763 On return, points to the number of frames in the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2764 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2765 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2766 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2767 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2768 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2769 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2770
a61af66fc99e Initial load
duke
parents:
diff changeset
2771 <function id="PopFrame" num="80">
a61af66fc99e Initial load
duke
parents:
diff changeset
2772 <synopsis>Pop Frame</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2773 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2774 Pop the current frame of <code>thread</code>'s stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2775 Popping a frame takes you to the previous frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2776 When the thread is resumed, the execution
a61af66fc99e Initial load
duke
parents:
diff changeset
2777 state of the thread is reset to the state
a61af66fc99e Initial load
duke
parents:
diff changeset
2778 immediately before the called method was invoked.
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2779 That is (using <vmspec/> terminology):
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2780 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2781 <li>the current frame is discarded as the previous frame becomes the current one</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2782 <li>the operand stack is restored--the argument values are added back
a61af66fc99e Initial load
duke
parents:
diff changeset
2783 and if the invoke was not <code>invokestatic</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2784 <code>objectref</code> is added back as well</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2785 <li>the Java virtual machine PC is restored to the opcode
a61af66fc99e Initial load
duke
parents:
diff changeset
2786 of the invoke instruction</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2787 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2788 Note however, that any changes to the arguments, which
a61af66fc99e Initial load
duke
parents:
diff changeset
2789 occurred in the called method, remain;
a61af66fc99e Initial load
duke
parents:
diff changeset
2790 when execution continues, the first instruction to
a61af66fc99e Initial load
duke
parents:
diff changeset
2791 execute will be the invoke.
a61af66fc99e Initial load
duke
parents:
diff changeset
2792 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2793 Between calling <code>PopFrame</code> and resuming the
a61af66fc99e Initial load
duke
parents:
diff changeset
2794 thread the state of the stack is undefined.
a61af66fc99e Initial load
duke
parents:
diff changeset
2795 To pop frames beyond the first,
a61af66fc99e Initial load
duke
parents:
diff changeset
2796 these three steps must be repeated:
a61af66fc99e Initial load
duke
parents:
diff changeset
2797 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2798 <li>suspend the thread via an event (step, breakpoint, ...)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2799 <li>call <code>PopFrame</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2800 <li>resume the thread</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2801 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2802 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2803 A lock acquired by calling the called method
a61af66fc99e Initial load
duke
parents:
diff changeset
2804 (if it is a <code>synchronized</code> method)
a61af66fc99e Initial load
duke
parents:
diff changeset
2805 and locks acquired by entering <code>synchronized</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2806 blocks within the called method are released.
a61af66fc99e Initial load
duke
parents:
diff changeset
2807 Note: this does not apply to native locks or
a61af66fc99e Initial load
duke
parents:
diff changeset
2808 <code>java.util.concurrent.locks</code> locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
2809 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2810 Finally blocks are not executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2811 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2812 Changes to global state are not addressed and thus remain changed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2813 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2814 The specified thread must be suspended (which implies it cannot be the current thread).
a61af66fc99e Initial load
duke
parents:
diff changeset
2815 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2816 Both the called method and calling method must be non-native Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2817 language methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
2818 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2819 No <jvmti/> events are generated by this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2820 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2821 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2822 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2823 <required id="can_pop_frame"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2824 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2825 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2826 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2827 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2828 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2829 The thread whose current frame is to be popped.
a61af66fc99e Initial load
duke
parents:
diff changeset
2830 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2831 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2832 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2833 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2834 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2835 Called or calling method is a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2836 The implementation is unable to pop this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2837 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2838 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2839 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2840 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2841 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
2842 There are less than two stack frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2843 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2844 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2845 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2846
a61af66fc99e Initial load
duke
parents:
diff changeset
2847 <function id="GetFrameLocation" num="19">
a61af66fc99e Initial load
duke
parents:
diff changeset
2848 <synopsis>Get Frame Location</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2849 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2850 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2851 For a Java programming language frame, return the location of the instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
2852 currently executing.
a61af66fc99e Initial load
duke
parents:
diff changeset
2853 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2854 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2855 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2856 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2857 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2858 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2859 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2860 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2861 The thread of the frame to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2862 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2863 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2864 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2865 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2866 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2867 The depth of the frame to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2868 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2869 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2870 <param id="method_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2871 <outptr><jmethodID/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2872 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2873 On return, points to the method for the current location.
a61af66fc99e Initial load
duke
parents:
diff changeset
2874 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2875 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2876 <param id="location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2877 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2878 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2879 On return, points to the index of the currently
a61af66fc99e Initial load
duke
parents:
diff changeset
2880 executing instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
2881 Is set to <code>-1</code> if the frame is executing
a61af66fc99e Initial load
duke
parents:
diff changeset
2882 a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2883 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2884 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2885 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2886 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2887 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2888 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2889
a61af66fc99e Initial load
duke
parents:
diff changeset
2890 <function id="NotifyFramePop" num="20">
a61af66fc99e Initial load
duke
parents:
diff changeset
2891 <synopsis>Notify Frame Pop</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2892 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2893 When the frame that is currently at <paramlink id="depth"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2894 is popped from the stack, generate a
a61af66fc99e Initial load
duke
parents:
diff changeset
2895 <eventlink id="FramePop"></eventlink> event. See the
a61af66fc99e Initial load
duke
parents:
diff changeset
2896 <eventlink id="FramePop"></eventlink> event for details.
a61af66fc99e Initial load
duke
parents:
diff changeset
2897 Only frames corresponding to non-native Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
2898 methods can receive notification.
a61af66fc99e Initial load
duke
parents:
diff changeset
2899 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2900 The specified thread must either be the current thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2901 or the thread must be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2902 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2903 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2904 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2905 <required id="can_generate_frame_pop_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2906 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2907 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2908 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2909 <jthread null="current" frame="depth"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2910 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2911 The thread of the frame for which the frame pop event will be generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2912 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2913 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2914 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2915 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2916 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2917 The depth of the frame for which the frame pop event will be generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2918 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2919 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2920 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2921 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2922 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2923 The frame at <code>depth</code> is executing a
a61af66fc99e Initial load
duke
parents:
diff changeset
2924 native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2925 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2926 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2927 Thread was not suspended and was not the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2928 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2929 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2930 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2931
a61af66fc99e Initial load
duke
parents:
diff changeset
2932 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2933
a61af66fc99e Initial load
duke
parents:
diff changeset
2934 <category id="ForceEarlyReturn" label="Force Early Return">
a61af66fc99e Initial load
duke
parents:
diff changeset
2935 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2936 These functions allow an agent to force a method
a61af66fc99e Initial load
duke
parents:
diff changeset
2937 to return at any point during its execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
2938 The method which will return early is referred to as the <i>called method</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2939 The called method is the current method
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2940 (as defined by
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2941 <vmspec chapter="3.6"/>)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2942 for the specified thread at
a61af66fc99e Initial load
duke
parents:
diff changeset
2943 the time the function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
2944 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2945 The specified thread must be suspended or must be the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2946 The return occurs when execution of Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2947 language code is resumed on this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2948 Between calling one of these functions and resumption
a61af66fc99e Initial load
duke
parents:
diff changeset
2949 of thread execution, the state of the stack is undefined.
a61af66fc99e Initial load
duke
parents:
diff changeset
2950 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2951 No further instructions are executed in the called method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2952 Specifically, finally blocks are not executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2953 Note: this can cause inconsistent states in the application.
a61af66fc99e Initial load
duke
parents:
diff changeset
2954 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2955 A lock acquired by calling the called method
a61af66fc99e Initial load
duke
parents:
diff changeset
2956 (if it is a <code>synchronized</code> method)
a61af66fc99e Initial load
duke
parents:
diff changeset
2957 and locks acquired by entering <code>synchronized</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2958 blocks within the called method are released.
a61af66fc99e Initial load
duke
parents:
diff changeset
2959 Note: this does not apply to native locks or
a61af66fc99e Initial load
duke
parents:
diff changeset
2960 <code>java.util.concurrent.locks</code> locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
2961 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2962 Events, such as <eventlink id="MethodExit"></eventlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2963 are generated as they would be in a normal return.
a61af66fc99e Initial load
duke
parents:
diff changeset
2964 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2965 The called method must be a non-native Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2966 language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2967 Forcing return on a thread with only one frame on the
a61af66fc99e Initial load
duke
parents:
diff changeset
2968 stack causes the thread to exit when resumed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2969 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2970
a61af66fc99e Initial load
duke
parents:
diff changeset
2971 <function id="ForceEarlyReturnObject" num="81" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2972 <synopsis>Force Early Return - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2973 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2974 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
2975 result type is <code>Object</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2976 or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2977 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2978 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2979 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2980 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2981 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2982 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2983 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2984 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2985 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2986 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
2987 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2988 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2989 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
2990 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2991 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2992 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2993 An object or <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2994 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2995 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2996 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2997 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2998 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2999 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3000 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3001 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3002 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3003 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3004 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3005 The result type of the called method is not
a61af66fc99e Initial load
duke
parents:
diff changeset
3006 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3007 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3008 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3009 The supplied <paramlink id="value"/> is not compatible with the
a61af66fc99e Initial load
duke
parents:
diff changeset
3010 result type of the called method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3011 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3012 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3013 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3014 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3015 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3016 There are no more frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3017 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3018 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3019 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3020
a61af66fc99e Initial load
duke
parents:
diff changeset
3021 <function id="ForceEarlyReturnInt" num="82" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3022 <synopsis>Force Early Return - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3023 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3024 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3025 result type is <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3026 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
3027 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3028 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3029 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3030 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3031 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3032 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3033 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3034 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3035 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3036 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3037 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3038 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3039 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3040 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3041 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3042 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3043 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3044 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3045 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3046 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3047 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3048 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3049 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3050 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3051 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3052 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3053 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3054 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3055 The result type of the called method is not
a61af66fc99e Initial load
duke
parents:
diff changeset
3056 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3057 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
3058 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3059 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3060 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3061 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3062 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3063 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3064 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3065 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3066 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3067 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3068
a61af66fc99e Initial load
duke
parents:
diff changeset
3069 <function id="ForceEarlyReturnLong" num="83" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3070 <synopsis>Force Early Return - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3071 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3072 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3073 result type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3074 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3075 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3076 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3077 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3078 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3079 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3080 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3081 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3082 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3083 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3084 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3085 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3086 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3087 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3088 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3089 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3090 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3091 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3092 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3093 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3094 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3095 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3096 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3097 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3098 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3099 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3100 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3101 The result type of the called method is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3102 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3103 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3104 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3105 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3106 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3107 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3108 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3109 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3110 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3111
a61af66fc99e Initial load
duke
parents:
diff changeset
3112 <function id="ForceEarlyReturnFloat" num="84" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3113 <synopsis>Force Early Return - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3114 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3115 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3116 result type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3117 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3118 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3119 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3120 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3121 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3122 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3123 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3124 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3125 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3126 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3127 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3128 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3129 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3130 <jfloat/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3131 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3132 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3133 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3134 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3135 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3136 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3137 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3138 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3139 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3140 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3141 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3142 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3143 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3144 The result type of the called method is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3145 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3146 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3147 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3148 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3149 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3150 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3151 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3152 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3153 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3154
a61af66fc99e Initial load
duke
parents:
diff changeset
3155 <function id="ForceEarlyReturnDouble" num="85" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3156 <synopsis>Force Early Return - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3157 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3158 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3159 result type is <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3160 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3161 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3162 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3163 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3164 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3165 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3166 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3167 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3168 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3169 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3170 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3171 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3172 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3173 <jdouble/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3174 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3175 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3176 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3177 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3178 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3179 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3180 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3181 Attempted to return early from a frame corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3182 Or the implementation is unable to provide this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3183 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3184 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3185 The result type of the called method is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3186 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3187 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3188 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3189 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3190 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3191 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3192 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3193 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3194 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3195
a61af66fc99e Initial load
duke
parents:
diff changeset
3196 <function id="ForceEarlyReturnVoid" num="86" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3197 <synopsis>Force Early Return - Void</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3198 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3199 This function can be used to return from a method with no result type.
a61af66fc99e Initial load
duke
parents:
diff changeset
3200 That is, the called method must be declared <code>void</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3201 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3202 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3203 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3204 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3205 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3206 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3207 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3208 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3209 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3210 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3211 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3212 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3213 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3214 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3215 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3216 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3217 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3218 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3219 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3220 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3221 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3222 The called method has a result type.
a61af66fc99e Initial load
duke
parents:
diff changeset
3223 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3224 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3225 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3226 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3227 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3228 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3229 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3230 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3231 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3232
a61af66fc99e Initial load
duke
parents:
diff changeset
3233 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
3234
a61af66fc99e Initial load
duke
parents:
diff changeset
3235 <category id="Heap" label="Heap">
a61af66fc99e Initial load
duke
parents:
diff changeset
3236 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3237 These functions are used to analyze the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
3238 Functionality includes the ability to view the objects in the
a61af66fc99e Initial load
duke
parents:
diff changeset
3239 heap and to tag these objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
3240 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3241
a61af66fc99e Initial load
duke
parents:
diff changeset
3242 <intro id="objectTags" label="Object Tags">
a61af66fc99e Initial load
duke
parents:
diff changeset
3243 A <i>tag</i> is a value associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3244 Tags are explicitly set by the agent using the
a61af66fc99e Initial load
duke
parents:
diff changeset
3245 <functionlink id="SetTag"></functionlink> function or by
a61af66fc99e Initial load
duke
parents:
diff changeset
3246 callback functions such as <functionlink id="jvmtiHeapIterationCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3247 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3248 Tags are local to the environment; that is, the tags of one
a61af66fc99e Initial load
duke
parents:
diff changeset
3249 environment are not visible in another.
a61af66fc99e Initial load
duke
parents:
diff changeset
3250 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3251 Tags are <code>jlong</code> values which can be used
a61af66fc99e Initial load
duke
parents:
diff changeset
3252 simply to mark an object or to store a pointer to more detailed
a61af66fc99e Initial load
duke
parents:
diff changeset
3253 information. Objects which have not been tagged have a
a61af66fc99e Initial load
duke
parents:
diff changeset
3254 tag of zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
3255 Setting a tag to zero makes the object untagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3256 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3257
a61af66fc99e Initial load
duke
parents:
diff changeset
3258 <intro id="heapCallbacks" label="Heap Callback Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
3259 Heap functions which iterate through the heap and recursively
a61af66fc99e Initial load
duke
parents:
diff changeset
3260 follow object references use agent supplied callback functions
a61af66fc99e Initial load
duke
parents:
diff changeset
3261 to deliver the information.
a61af66fc99e Initial load
duke
parents:
diff changeset
3262 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3263 These heap callback functions must adhere to the following restrictions --
a61af66fc99e Initial load
duke
parents:
diff changeset
3264 These callbacks must not use JNI functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
3265 These callbacks must not use <jvmti/> functions except
a61af66fc99e Initial load
duke
parents:
diff changeset
3266 <i>callback safe</i> functions which
a61af66fc99e Initial load
duke
parents:
diff changeset
3267 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
3268 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
3269 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3270 An implementation may invoke a callback on an internal thread or
a61af66fc99e Initial load
duke
parents:
diff changeset
3271 the thread which called the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3272 Heap callbacks are single threaded -- no more than one callback will
a61af66fc99e Initial load
duke
parents:
diff changeset
3273 be invoked at a time.
a61af66fc99e Initial load
duke
parents:
diff changeset
3274 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3275 The Heap Filter Flags can be used to prevent reporting
a61af66fc99e Initial load
duke
parents:
diff changeset
3276 based on the tag status of an object or its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3277 If no flags are set (the <code>jint</code> is zero), objects
a61af66fc99e Initial load
duke
parents:
diff changeset
3278 will not be filtered out.
a61af66fc99e Initial load
duke
parents:
diff changeset
3279
a61af66fc99e Initial load
duke
parents:
diff changeset
3280 <constants id="jvmtiHeapFilter" label="Heap Filter Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
3281 <constant id="JVMTI_HEAP_FILTER_TAGGED" num="0x4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3282 Filter out tagged objects. Objects which are tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3283 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3284 <constant id="JVMTI_HEAP_FILTER_UNTAGGED" num="0x8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3285 Filter out untagged objects. Objects which are not tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3286 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3287 <constant id="JVMTI_HEAP_FILTER_CLASS_TAGGED" num="0x10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3288 Filter out objects with tagged classes. Objects whose class is tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3289 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3290 <constant id="JVMTI_HEAP_FILTER_CLASS_UNTAGGED" num="0x20">
a61af66fc99e Initial load
duke
parents:
diff changeset
3291 Filter out objects with untagged classes. Objects whose class is not tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3292 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3293 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3294
a61af66fc99e Initial load
duke
parents:
diff changeset
3295 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3296 The Heap Visit Control Flags are returned by the heap callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
3297 and can be used to abort the iteration. For the
a61af66fc99e Initial load
duke
parents:
diff changeset
3298 <functionlink id="jvmtiHeapReferenceCallback">Heap
a61af66fc99e Initial load
duke
parents:
diff changeset
3299 Reference Callback</functionlink>, it can also be used
a61af66fc99e Initial load
duke
parents:
diff changeset
3300 to prune the graph of traversed references
a61af66fc99e Initial load
duke
parents:
diff changeset
3301 (<code>JVMTI_VISIT_OBJECTS</code> is not set).
a61af66fc99e Initial load
duke
parents:
diff changeset
3302
a61af66fc99e Initial load
duke
parents:
diff changeset
3303 <constants id="jvmtiHeapVisitControl"
a61af66fc99e Initial load
duke
parents:
diff changeset
3304 label="Heap Visit Control Flags"
a61af66fc99e Initial load
duke
parents:
diff changeset
3305 kind="bits"
a61af66fc99e Initial load
duke
parents:
diff changeset
3306 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3307 <constant id="JVMTI_VISIT_OBJECTS" num="0x100">
a61af66fc99e Initial load
duke
parents:
diff changeset
3308 If we are visiting an object and if this callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3309 was initiated by <functionlink id="FollowReferences"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3310 traverse the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3311 Otherwise ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
3312 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3313 <constant id="JVMTI_VISIT_ABORT" num="0x8000">
a61af66fc99e Initial load
duke
parents:
diff changeset
3314 Abort the iteration. Ignore all other bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
3315 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3316 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3317
a61af66fc99e Initial load
duke
parents:
diff changeset
3318 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3319 The Heap Reference Enumeration is provided by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3320 <functionlink id="jvmtiHeapReferenceCallback">Heap
a61af66fc99e Initial load
duke
parents:
diff changeset
3321 Reference Callback</functionlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
3322 <functionlink id="jvmtiPrimitiveFieldCallback">Primitive Field
a61af66fc99e Initial load
duke
parents:
diff changeset
3323 Callback</functionlink> to
a61af66fc99e Initial load
duke
parents:
diff changeset
3324 describe the kind of reference
a61af66fc99e Initial load
duke
parents:
diff changeset
3325 being reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
3326
a61af66fc99e Initial load
duke
parents:
diff changeset
3327 <constants id="jvmtiHeapReferenceKind"
a61af66fc99e Initial load
duke
parents:
diff changeset
3328 label="Heap Reference Enumeration"
a61af66fc99e Initial load
duke
parents:
diff changeset
3329 kind="enum"
a61af66fc99e Initial load
duke
parents:
diff changeset
3330 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3331 <constant id="JVMTI_HEAP_REFERENCE_CLASS" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3332 Reference from an object to its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3333 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3334 <constant id="JVMTI_HEAP_REFERENCE_FIELD" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
3335 Reference from an object to the value of one of its instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
3336 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3337 <constant id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
3338 Reference from an array to one of its elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
3339 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3340 <constant id="JVMTI_HEAP_REFERENCE_CLASS_LOADER" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3341 Reference from a class to its class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
3342 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3343 <constant id="JVMTI_HEAP_REFERENCE_SIGNERS" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3344 Reference from a class to its signers array.
a61af66fc99e Initial load
duke
parents:
diff changeset
3345 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3346 <constant id="JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3347 Reference from a class to its protection domain.
a61af66fc99e Initial load
duke
parents:
diff changeset
3348 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3349 <constant id="JVMTI_HEAP_REFERENCE_INTERFACE" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3350 Reference from a class to one of its interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
3351 Note: interfaces are defined via a constant pool reference,
a61af66fc99e Initial load
duke
parents:
diff changeset
3352 so the referenced interfaces may also be reported with a
a61af66fc99e Initial load
duke
parents:
diff changeset
3353 <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
3354 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3355 <constant id="JVMTI_HEAP_REFERENCE_STATIC_FIELD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3356 Reference from a class to the value of one of its static fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
3357 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3358 <constant id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
3359 Reference from a class to a resolved entry in the constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
3360 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3361 <constant id="JVMTI_HEAP_REFERENCE_SUPERCLASS" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3362 Reference from a class to its superclass.
a61af66fc99e Initial load
duke
parents:
diff changeset
3363 A callback is bot sent if the superclass is <code>java.lang.Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3364 Note: loaded classes define superclasses via a constant pool
a61af66fc99e Initial load
duke
parents:
diff changeset
3365 reference, so the referenced superclass may also be reported with
a61af66fc99e Initial load
duke
parents:
diff changeset
3366 a <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
3367 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3368 <constant id="JVMTI_HEAP_REFERENCE_JNI_GLOBAL" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
3369 Heap root reference: JNI global reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3370 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3371 <constant id="JVMTI_HEAP_REFERENCE_SYSTEM_CLASS" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
3372 Heap root reference: System class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3373 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3374 <constant id="JVMTI_HEAP_REFERENCE_MONITOR" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
3375 Heap root reference: monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
3376 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3377 <constant id="JVMTI_HEAP_REFERENCE_STACK_LOCAL" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
3378 Heap root reference: local variable on the stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3379 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3380 <constant id="JVMTI_HEAP_REFERENCE_JNI_LOCAL" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
3381 Heap root reference: JNI local reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3382 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3383 <constant id="JVMTI_HEAP_REFERENCE_THREAD" num="26">
a61af66fc99e Initial load
duke
parents:
diff changeset
3384 Heap root reference: Thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
3385 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3386 <constant id="JVMTI_HEAP_REFERENCE_OTHER" num="27">
a61af66fc99e Initial load
duke
parents:
diff changeset
3387 Heap root reference: other heap root reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3388 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3389 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3390
a61af66fc99e Initial load
duke
parents:
diff changeset
3391 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3392 Definitions for the single character type descriptors of
a61af66fc99e Initial load
duke
parents:
diff changeset
3393 primitive types.
a61af66fc99e Initial load
duke
parents:
diff changeset
3394
a61af66fc99e Initial load
duke
parents:
diff changeset
3395 <constants id="jvmtiPrimitiveType"
a61af66fc99e Initial load
duke
parents:
diff changeset
3396 label="Primitive Type Enumeration"
a61af66fc99e Initial load
duke
parents:
diff changeset
3397 kind="enum"
a61af66fc99e Initial load
duke
parents:
diff changeset
3398 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3399 <constant id="JVMTI_PRIMITIVE_TYPE_BOOLEAN" num="90">
a61af66fc99e Initial load
duke
parents:
diff changeset
3400 'Z' - Java programming language <code>boolean</code> - JNI <code>jboolean</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3401 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3402 <constant id="JVMTI_PRIMITIVE_TYPE_BYTE" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
3403 'B' - Java programming language <code>byte</code> - JNI <code>jbyte</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3404 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3405 <constant id="JVMTI_PRIMITIVE_TYPE_CHAR" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
3406 'C' - Java programming language <code>char</code> - JNI <code>jchar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3407 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3408 <constant id="JVMTI_PRIMITIVE_TYPE_SHORT" num="83">
a61af66fc99e Initial load
duke
parents:
diff changeset
3409 'S' - Java programming language <code>short</code> - JNI <code>jshort</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3410 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3411 <constant id="JVMTI_PRIMITIVE_TYPE_INT" num="73">
a61af66fc99e Initial load
duke
parents:
diff changeset
3412 'I' - Java programming language <code>int</code> - JNI <code>jint</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3413 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3414 <constant id="JVMTI_PRIMITIVE_TYPE_LONG" num="74">
a61af66fc99e Initial load
duke
parents:
diff changeset
3415 'J' - Java programming language <code>long</code> - JNI <code>jlong</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3416 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3417 <constant id="JVMTI_PRIMITIVE_TYPE_FLOAT" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
3418 'F' - Java programming language <code>float</code> - JNI <code>jfloat</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3419 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3420 <constant id="JVMTI_PRIMITIVE_TYPE_DOUBLE" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
3421 'D' - Java programming language <code>double</code> - JNI <code>jdouble</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3422 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3423 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3424 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3425
a61af66fc99e Initial load
duke
parents:
diff changeset
3426 <typedef id="jvmtiHeapReferenceInfoField"
a61af66fc99e Initial load
duke
parents:
diff changeset
3427 label="Reference information structure for Field references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3428 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3429 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3430 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3431 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
3432 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3433 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3434 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3435 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3436 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3437 For <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>, the
a61af66fc99e Initial load
duke
parents:
diff changeset
3438 referrer object is not a class or an inteface.
a61af66fc99e Initial load
duke
parents:
diff changeset
3439 In this case, <code>index</code> is the index of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3440 in the class of the referrer object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3441 This class is referred to below as <i>C</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3442 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3443 For <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3444 the referrer object is a class (referred to below as <i>C</i>)
a61af66fc99e Initial load
duke
parents:
diff changeset
3445 or an interface (referred to below as <i>I</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
3446 In this case, <code>index</code> is the index of the field in
a61af66fc99e Initial load
duke
parents:
diff changeset
3447 that class or interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
3448 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3449 If the referrer object is not an interface, then the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3450 indices are determined as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
3451 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3452 <li>make a list of all the fields in <i>C</i> and its
a61af66fc99e Initial load
duke
parents:
diff changeset
3453 superclasses, starting with all the fields in
a61af66fc99e Initial load
duke
parents:
diff changeset
3454 <code>java.lang.Object</code> and ending with all the
a61af66fc99e Initial load
duke
parents:
diff changeset
3455 fields in <i>C</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3456 <li>Within this list, put
a61af66fc99e Initial load
duke
parents:
diff changeset
3457 the fields for a given class in the order returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
3458 <functionlink id="GetClassFields"/>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3459 <li>Assign the fields in this list indices
a61af66fc99e Initial load
duke
parents:
diff changeset
3460 <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
3461 is the count of the fields in all the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3462 implemented by <i>C</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3463 Note that <i>C</i> implements all interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3464 directly implemented by its superclasses; as well
a61af66fc99e Initial load
duke
parents:
diff changeset
3465 as all superinterfaces of these interfaces.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3466 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3467 If the referrer object is an interface, then the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3468 indices are determined as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
3469 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3470 <li>make a list of the fields directly declared in
a61af66fc99e Initial load
duke
parents:
diff changeset
3471 <i>I</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3472 <li>Within this list, put
a61af66fc99e Initial load
duke
parents:
diff changeset
3473 the fields in the order returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
3474 <functionlink id="GetClassFields"/>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3475 <li>Assign the fields in this list indices
a61af66fc99e Initial load
duke
parents:
diff changeset
3476 <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
3477 is the count of the fields in all the superinterfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3478 of <i>I</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3479 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3480 All fields are included in this computation, regardless of
a61af66fc99e Initial load
duke
parents:
diff changeset
3481 field modifier (static, public, private, etc).
a61af66fc99e Initial load
duke
parents:
diff changeset
3482 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3483 For example, given the following classes and interfaces:
a61af66fc99e Initial load
duke
parents:
diff changeset
3484 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
3485 interface I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3486 int p = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
3487 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3488
a61af66fc99e Initial load
duke
parents:
diff changeset
3489 interface I1 extends I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3490 int x = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
3491 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3492
a61af66fc99e Initial load
duke
parents:
diff changeset
3493 interface I2 extends I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3494 int y = 2;
a61af66fc99e Initial load
duke
parents:
diff changeset
3495 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3496
a61af66fc99e Initial load
duke
parents:
diff changeset
3497 class C1 implements I1 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3498 public static int a = 3;
a61af66fc99e Initial load
duke
parents:
diff changeset
3499 private int b = 4;
a61af66fc99e Initial load
duke
parents:
diff changeset
3500 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3501
a61af66fc99e Initial load
duke
parents:
diff changeset
3502 class C2 extends C1 implements I2 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3503 static int q = 5;
a61af66fc99e Initial load
duke
parents:
diff changeset
3504 final int r = 6;
a61af66fc99e Initial load
duke
parents:
diff changeset
3505 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3506 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
3507 Assume that <functionlink id="GetClassFields"/> called on
a61af66fc99e Initial load
duke
parents:
diff changeset
3508 <code>C1</code> returns the fields of <code>C1</code> in the
a61af66fc99e Initial load
duke
parents:
diff changeset
3509 order: a, b; and that the fields of <code>C2</code> are
a61af66fc99e Initial load
duke
parents:
diff changeset
3510 returned in the order: q, r.
a61af66fc99e Initial load
duke
parents:
diff changeset
3511 An instance of class <code>C1</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3512 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3513 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3514 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3515 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3516 a
a61af66fc99e Initial load
duke
parents:
diff changeset
3517 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3518 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3519 2
a61af66fc99e Initial load
duke
parents:
diff changeset
3520 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3521 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3522 The count of the fields in the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3523 implemented by <code>C1</code> is two (<i>n</i>=2):
a61af66fc99e Initial load
duke
parents:
diff changeset
3524 <code>p</code> of <code>I0</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3525 and <code>x</code> of <code>I1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3526 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3527 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3528 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3529 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3530 b
a61af66fc99e Initial load
duke
parents:
diff changeset
3531 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3532 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3533 3
a61af66fc99e Initial load
duke
parents:
diff changeset
3534 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3535 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3536 the subsequent index.
a61af66fc99e Initial load
duke
parents:
diff changeset
3537 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3538 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3539 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3540 The class <code>C1</code> will have the same field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
3541 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3542 An instance of class <code>C2</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3543 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3544 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3545 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3546 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3547 a
a61af66fc99e Initial load
duke
parents:
diff changeset
3548 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3549 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3550 3
a61af66fc99e Initial load
duke
parents:
diff changeset
3551 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3552 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3553 The count of the fields in the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3554 implemented by <code>C2</code> is three (<i>n</i>=3):
a61af66fc99e Initial load
duke
parents:
diff changeset
3555 <code>p</code> of <code>I0</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3556 <code>x</code> of <code>I1</code> and <code>y</code> of <code>I2</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3557 (an interface of <code>C2</code>). Note that the field <code>p</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3558 of <code>I0</code> is only included once.
a61af66fc99e Initial load
duke
parents:
diff changeset
3559 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3560 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3561 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3562 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3563 b
a61af66fc99e Initial load
duke
parents:
diff changeset
3564 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3565 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3566 4
a61af66fc99e Initial load
duke
parents:
diff changeset
3567 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3568 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3569 the subsequent index to "a".
a61af66fc99e Initial load
duke
parents:
diff changeset
3570 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3571 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3572 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3573 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3574 q
a61af66fc99e Initial load
duke
parents:
diff changeset
3575 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3576 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3577 5
a61af66fc99e Initial load
duke
parents:
diff changeset
3578 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3579 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3580 the subsequent index to "b".
a61af66fc99e Initial load
duke
parents:
diff changeset
3581 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3582 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3583 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3584 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3585 r
a61af66fc99e Initial load
duke
parents:
diff changeset
3586 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3587 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3588 6
a61af66fc99e Initial load
duke
parents:
diff changeset
3589 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3590 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3591 the subsequent index to "q".
a61af66fc99e Initial load
duke
parents:
diff changeset
3592 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3593 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3594 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3595 The class <code>C2</code> will have the same field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
3596 Note that a field may have a different index depending on the
a61af66fc99e Initial load
duke
parents:
diff changeset
3597 object that is viewing it -- for example field "a" above.
a61af66fc99e Initial load
duke
parents:
diff changeset
3598 Note also: not all field indices may be visible from the
a61af66fc99e Initial load
duke
parents:
diff changeset
3599 callbacks, but all indices are shown for illustrative purposes.
a61af66fc99e Initial load
duke
parents:
diff changeset
3600 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3601 The interface <code>I1</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3602 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3603 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3604 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3605 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3606 x
a61af66fc99e Initial load
duke
parents:
diff changeset
3607 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3608 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3609 1
a61af66fc99e Initial load
duke
parents:
diff changeset
3610 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3611 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3612 The count of the fields in the superinterfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3613 of <code>I1</code> is one (<i>n</i>=1):
a61af66fc99e Initial load
duke
parents:
diff changeset
3614 <code>p</code> of <code>I0</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3615 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3616 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3617 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3618 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3619 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3620 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3621
a61af66fc99e Initial load
duke
parents:
diff changeset
3622 <typedef id="jvmtiHeapReferenceInfoArray"
a61af66fc99e Initial load
duke
parents:
diff changeset
3623 label="Reference information structure for Array references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3624 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3625 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3626 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3627 <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3628 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3629 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3630 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3631 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3632 The array index.
a61af66fc99e Initial load
duke
parents:
diff changeset
3633 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3634 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3635 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3636
a61af66fc99e Initial load
duke
parents:
diff changeset
3637 <typedef id="jvmtiHeapReferenceInfoConstantPool"
a61af66fc99e Initial load
duke
parents:
diff changeset
3638 label="Reference information structure for Constant Pool references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3639 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3640 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3641 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3642 <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3644 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3645 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3646 <description>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
3647 The index into the constant pool of the class. See the description in
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
3648 <vmspec chapter="4.4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3649 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3650 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3651 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3652
a61af66fc99e Initial load
duke
parents:
diff changeset
3653 <typedef id="jvmtiHeapReferenceInfoStackLocal"
a61af66fc99e Initial load
duke
parents:
diff changeset
3654 label="Reference information structure for Local Variable references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3655 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3656 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3657 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3658 <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3659 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3660 <field id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
3661 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3662 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3663 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3664 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3665 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3666 <field id="thread_id">
a61af66fc99e Initial load
duke
parents:
diff changeset
3667 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3668 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3669 The unique thread ID of the thread corresponding to this stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3670 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3671 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3672 <field id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
3673 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3674 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3675 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3676 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3677 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3678 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
3679 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3680 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3681 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3682 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3683 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3684 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
3685 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3687 The currently executing location in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3688 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3689 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3690 <field id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
3691 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3692 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3693 The slot number of the local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
3694 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3695 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3696 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3697
a61af66fc99e Initial load
duke
parents:
diff changeset
3698 <typedef id="jvmtiHeapReferenceInfoJniLocal"
a61af66fc99e Initial load
duke
parents:
diff changeset
3699 label="Reference information structure for JNI local references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3700 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3701 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3702 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3703 <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3704 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3705 <field id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
3706 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3707 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3708 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3709 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3710 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3711 <field id="thread_id">
a61af66fc99e Initial load
duke
parents:
diff changeset
3712 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3713 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3714 The unique thread ID of the thread corresponding to this stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3715 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3716 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3717 <field id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
3718 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3719 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3720 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3721 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3722 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3723 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
3724 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3725 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3726 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3727 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3728 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3729 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3730
a61af66fc99e Initial load
duke
parents:
diff changeset
3731 <typedef id="jvmtiHeapReferenceInfoReserved"
a61af66fc99e Initial load
duke
parents:
diff changeset
3732 label="Reference information structure for Other references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3733 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3734 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3735 Reference information returned for other references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3736 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3737 <field id="reserved1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3738 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3739 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3740 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3741 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3742 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3743 <field id="reserved2">
a61af66fc99e Initial load
duke
parents:
diff changeset
3744 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3745 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3746 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3747 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3748 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3749 <field id="reserved3">
a61af66fc99e Initial load
duke
parents:
diff changeset
3750 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3751 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3752 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3753 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3754 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3755 <field id="reserved4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3756 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3757 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3758 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3759 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3760 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3761 <field id="reserved5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3762 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3763 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3764 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3765 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3766 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3767 <field id="reserved6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3768 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3769 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3770 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3771 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3772 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3773 <field id="reserved7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3774 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3775 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3776 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3777 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3778 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3779 <field id="reserved8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3780 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3781 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3782 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3783 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3784 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3785 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3786
a61af66fc99e Initial load
duke
parents:
diff changeset
3787 <uniontypedef id="jvmtiHeapReferenceInfo"
a61af66fc99e Initial load
duke
parents:
diff changeset
3788 label="Reference information structure"
a61af66fc99e Initial load
duke
parents:
diff changeset
3789 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3790 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3791 The information returned about referrers.
a61af66fc99e Initial load
duke
parents:
diff changeset
3792 Represented as a union of the various kinds of reference information.
a61af66fc99e Initial load
duke
parents:
diff changeset
3793 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3794 <field id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
3795 <struct>jvmtiHeapReferenceInfoField</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3796 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3797 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3798 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3799 and <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3800 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3801 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3802 <field id="array">
a61af66fc99e Initial load
duke
parents:
diff changeset
3803 <struct>jvmtiHeapReferenceInfoArray</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3804 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3805 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3806 For <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3807 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3808 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3809 <field id="constant_pool">
a61af66fc99e Initial load
duke
parents:
diff changeset
3810 <struct>jvmtiHeapReferenceInfoConstantPool</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3811 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3812 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3813 For <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3814 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3815 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3816 <field id="stack_local">
a61af66fc99e Initial load
duke
parents:
diff changeset
3817 <struct>jvmtiHeapReferenceInfoStackLocal</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3818 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3819 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3820 For <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3821 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3822 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3823 <field id="jni_local">
a61af66fc99e Initial load
duke
parents:
diff changeset
3824 <struct>jvmtiHeapReferenceInfoJniLocal</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3825 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3826 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3827 For <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3828 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3829 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3830 <field id="other">
a61af66fc99e Initial load
duke
parents:
diff changeset
3831 <struct>jvmtiHeapReferenceInfoReserved</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3832 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3833 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3834 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3835 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3836 </uniontypedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3837
a61af66fc99e Initial load
duke
parents:
diff changeset
3838 <typedef id="jvmtiHeapCallbacks"
a61af66fc99e Initial load
duke
parents:
diff changeset
3839 label="Heap callback function structure"
a61af66fc99e Initial load
duke
parents:
diff changeset
3840 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3841 <field id="heap_iteration_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3842 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3843 <struct>jvmtiHeapIterationCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3844 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3845 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3846 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3847 object in the heap. Used by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3848 <functionlink id="IterateThroughHeap"/> function, ignored by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3849 <functionlink id="FollowReferences"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3850 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3851 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3852 <field id="heap_reference_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3853 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3854 <struct>jvmtiHeapReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3855 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3856 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3857 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3858 object reference. Used by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3859 <functionlink id="FollowReferences"/> function, ignored by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3860 <functionlink id="IterateThroughHeap"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3861 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3862 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3863 <field id="primitive_field_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3864 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3865 <struct>jvmtiPrimitiveFieldCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3866 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3867 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3868 The callback to be called to describe a
a61af66fc99e Initial load
duke
parents:
diff changeset
3869 primitive field.
a61af66fc99e Initial load
duke
parents:
diff changeset
3870 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3871 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3872 <field id="array_primitive_value_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3873 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3874 <struct>jvmtiArrayPrimitiveValueCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3875 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3876 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3877 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3878 array of primitive values.
a61af66fc99e Initial load
duke
parents:
diff changeset
3879 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3880 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3881 <field id="string_primitive_value_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3882 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3883 <struct>jvmtiStringPrimitiveValueCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3884 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3885 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3886 The callback to be called to describe a String value.
a61af66fc99e Initial load
duke
parents:
diff changeset
3887 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3888 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3889 <field id="reserved5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3890 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3891 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3892 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3893 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3894 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3895 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3896 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3897 <field id="reserved6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3898 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3899 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3900 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3901 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3902 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3903 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3904 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3905 <field id="reserved7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3906 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3907 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3908 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3909 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3910 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3911 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3912 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3913 <field id="reserved8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3914 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3915 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3916 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3917 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3918 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3919 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3920 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3921 <field id="reserved9">
a61af66fc99e Initial load
duke
parents:
diff changeset
3922 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3923 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3924 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3925 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3926 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3927 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3928 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3929 <field id="reserved10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3930 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3931 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3932 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3933 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3934 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3935 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3936 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3937 <field id="reserved11">
a61af66fc99e Initial load
duke
parents:
diff changeset
3938 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3939 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3940 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3941 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3942 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3943 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3944 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3945 <field id="reserved12">
a61af66fc99e Initial load
duke
parents:
diff changeset
3946 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3947 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3948 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3949 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3950 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3951 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3952 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3953 <field id="reserved13">
a61af66fc99e Initial load
duke
parents:
diff changeset
3954 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3955 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3956 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3957 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3958 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3959 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3960 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3961 <field id="reserved14">
a61af66fc99e Initial load
duke
parents:
diff changeset
3962 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3963 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3964 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3965 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3966 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3967 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3968 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3969 <field id="reserved15">
a61af66fc99e Initial load
duke
parents:
diff changeset
3970 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3971 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3972 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3973 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3974 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3975 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3976 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3977 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3978
a61af66fc99e Initial load
duke
parents:
diff changeset
3979
a61af66fc99e Initial load
duke
parents:
diff changeset
3980 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3981 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
3982 The heap dumping functionality (below) uses a callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3983 for each object. While it would seem that a buffered approach
a61af66fc99e Initial load
duke
parents:
diff changeset
3984 would provide better throughput, tests do
a61af66fc99e Initial load
duke
parents:
diff changeset
3985 not show this to be the case--possibly due to locality of
a61af66fc99e Initial load
duke
parents:
diff changeset
3986 memory reference or array access overhead.
a61af66fc99e Initial load
duke
parents:
diff changeset
3987 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
3988
a61af66fc99e Initial load
duke
parents:
diff changeset
3989 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3990 Still under investigation as to if java.lang.ref references
a61af66fc99e Initial load
duke
parents:
diff changeset
3991 are reported as a different type of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3992 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3993
a61af66fc99e Initial load
duke
parents:
diff changeset
3994 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3995 Should or can an indication of the cost or relative cost of
a61af66fc99e Initial load
duke
parents:
diff changeset
3996 these operations be included?
a61af66fc99e Initial load
duke
parents:
diff changeset
3997 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3998
a61af66fc99e Initial load
duke
parents:
diff changeset
3999 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
4000
a61af66fc99e Initial load
duke
parents:
diff changeset
4001 <callback id="jvmtiHeapIterationCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4002 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4003 <synopsis>Heap Iteration Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4004 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4005 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4006 Describes (but does not pass in) an object in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
4007 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4008 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4009 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4010 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4011 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4012 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4013 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4014 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4015 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4016 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4017 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4018 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4019 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4020 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4021 If the object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4022 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4023 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4024 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4025 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4026 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4027 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4028 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4029 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4030 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4031 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4032 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4033 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4034 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4036 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4037 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4038 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4039 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4040 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4041 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4042 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4043 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4044 If this object is an array, the length of the array. Otherwise negative one (-1).
a61af66fc99e Initial load
duke
parents:
diff changeset
4045 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4046 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4047 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4048 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4049 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4050 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4051 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4052 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4053 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4054 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4055
a61af66fc99e Initial load
duke
parents:
diff changeset
4056 <callback id="jvmtiHeapReferenceCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4057 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4058 <synopsis>Heap Reference Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4059 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4060 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4061 Describes a reference from an object or the VM (the referrer) to another object
a61af66fc99e Initial load
duke
parents:
diff changeset
4062 (the referree) or a heap root to a referree.
a61af66fc99e Initial load
duke
parents:
diff changeset
4063 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4064 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4065 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4066 This will determine if the objects referenced by the referree
a61af66fc99e Initial load
duke
parents:
diff changeset
4067 should be visited or if the entire iteration should be aborted.
a61af66fc99e Initial load
duke
parents:
diff changeset
4068 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4069 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4070 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4071 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4072 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4073 <param id="reference_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
4074 <enum>jvmtiHeapReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4075 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4076 The kind of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4077 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4078 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4079 <param id="reference_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
4080 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4081 <struct>jvmtiHeapReferenceInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4082 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4083 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4084 Details about the reference.
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4085 Set when the <datalink id="jvmtiHeapReferenceCallback.reference_kind">reference_kind</datalink> is
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4086 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4087 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4088 <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4089 <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4090 <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4091 or <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4092 Otherwise <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4093 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4094 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4095 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4096 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4097 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4098 The tag of the class of referree object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4099 If the referree object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4100 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4101 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4102 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4103 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4104 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4105 <param id="referrer_class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4106 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4107 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4108 The tag of the class of the referrer object (zero if the class is not tagged
a61af66fc99e Initial load
duke
parents:
diff changeset
4109 or the referree is a heap root). If the referrer object represents a runtime
a61af66fc99e Initial load
duke
parents:
diff changeset
4110 class, the <code>referrer_class_tag</code> is the tag associated with
a61af66fc99e Initial load
duke
parents:
diff changeset
4111 the <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4112 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4113 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4114 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4115 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4116 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4117 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4118 Size of the referree object (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4119 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4120 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4121 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4122 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4123 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4124 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4125 Points to the referree object tag value, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4126 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4127 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4128 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4129 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4130 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4131 <param id="referrer_tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4132 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4133 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4134 Points to the tag of the referrer object, or
a61af66fc99e Initial load
duke
parents:
diff changeset
4135 points to the zero if the referrer
a61af66fc99e Initial load
duke
parents:
diff changeset
4136 object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4137 <code>NULL</code> if the referrer in not an object (that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
4138 this callback is reporting a heap root).
a61af66fc99e Initial load
duke
parents:
diff changeset
4139 To set the tag value to be associated with the referrer object
a61af66fc99e Initial load
duke
parents:
diff changeset
4140 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4141 If this callback is reporting a reference from an object to itself,
a61af66fc99e Initial load
duke
parents:
diff changeset
4142 <code>referrer_tag_ptr == tag_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4143 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4144 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4145 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4146 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4147 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4148 If this object is an array, the length of the array. Otherwise negative one (-1).
a61af66fc99e Initial load
duke
parents:
diff changeset
4149 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4150 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4151 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4152 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4153 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4154 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4155 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4156 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4157 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4158 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4159
a61af66fc99e Initial load
duke
parents:
diff changeset
4160 <callback id="jvmtiPrimitiveFieldCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4161 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4162 <synopsis>Primitive Field Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4163 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4164 Agent supplied callback function which
a61af66fc99e Initial load
duke
parents:
diff changeset
4165 describes a primitive field of an object (<i>the object</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
4166 A primitive field is a field whose type is a primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
4167 This callback will describe a static field if the object is a class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4168 and otherwise will describe an instance field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4169 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4170 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4171 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4172 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4173 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4174 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4175 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4176 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4177 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4178 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4179 <param id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
4180 <enum>jvmtiHeapReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4181 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4182 The kind of field -- instance or static (<datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4183 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
4184 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4185 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4186 <param id="info">
a61af66fc99e Initial load
duke
parents:
diff changeset
4187 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4188 <struct>jvmtiHeapReferenceInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4189 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4190 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4191 Which field (the field index).
a61af66fc99e Initial load
duke
parents:
diff changeset
4192 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4193 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4194 <param id="object_class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4195 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4196 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4197 The tag of the class of the object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4198 If the object represents a runtime class, the
a61af66fc99e Initial load
duke
parents:
diff changeset
4199 <code>object_class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4200 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4201 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4202 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4203 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4204 <param id="object_tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4205 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4206 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4207 Points to the tag of the object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4208 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4209 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4210 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4211 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4212 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4213 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
4214 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4215 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4216 The value of the field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4217 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4218 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4219 <param id="value_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
4220 <enum>jvmtiPrimitiveType</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4221 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4222 The type of the field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4223 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4224 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4225 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4226 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4227 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4228 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4229 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4230 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4231 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4232 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4233
a61af66fc99e Initial load
duke
parents:
diff changeset
4234 <callback id="jvmtiArrayPrimitiveValueCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4235 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4236 <synopsis>Array Primitive Value Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4237 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4238 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4239 Describes the values in an array of a primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
4240 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4241 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4242 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4243 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4244 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4245 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4246 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4247 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4248 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4249 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4250 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4251 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4252 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4253 The tag of the class of the array object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4254 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4255 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4256 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4257 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4258 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4259 Size of the array (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4260 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4261 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4262 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4263 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4264 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4265 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4266 Points to the tag of the array object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4267 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4268 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4269 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4270 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4271 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4272 <param id="element_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4273 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4274 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4275 The length of the primitive array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4276 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4277 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4278 <param id="element_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
4279 <enum>jvmtiPrimitiveType</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4280 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4281 The type of the elements of the array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4282 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4283 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4284 <param id="elements">
a61af66fc99e Initial load
duke
parents:
diff changeset
4285 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4286 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4287 The elements of the array in a packed array of <code>element_count</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4288 items of <code>element_type</code> size each.
a61af66fc99e Initial load
duke
parents:
diff changeset
4289 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4290 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4291 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4292 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4293 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4294 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4295 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4296 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4297 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4298 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4299
a61af66fc99e Initial load
duke
parents:
diff changeset
4300 <callback id="jvmtiStringPrimitiveValueCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4301 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4302 <synopsis>String Primitive Value Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4303 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4304 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4305 Describes the value of a java.lang.String.
a61af66fc99e Initial load
duke
parents:
diff changeset
4306 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4307 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4308 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4309 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4310 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4311 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4312 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4313 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4314 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4315 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4316 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4317 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4318 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4319 The tag of the class of the String class (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4320 <issue>Is this needed?</issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
4321 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4322 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4323 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4324 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4325 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4326 Size of the string (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4327 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4328 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4329 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4330 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4331 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4332 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4333 Points to the tag of the String object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4334 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4335 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4336 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4337 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4338 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4339 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
4340 <vmbuf><jchar/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4341 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4342 The value of the String, encoded as a Unicode string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4343 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4344 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4345 <param id="value_length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4346 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4347 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4348 The length of the string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4349 The length is equal to the number of 16-bit Unicode
a61af66fc99e Initial load
duke
parents:
diff changeset
4350 characters in the string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4351 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4352 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4353 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4354 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4355 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4356 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4357 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4358 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4359 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4360 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4361
a61af66fc99e Initial load
duke
parents:
diff changeset
4362
a61af66fc99e Initial load
duke
parents:
diff changeset
4363 <callback id="jvmtiReservedCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4364 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4365 <synopsis>reserved for future use Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4366 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4367 Placeholder -- reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
4368 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4369 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4370 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4371 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4372
a61af66fc99e Initial load
duke
parents:
diff changeset
4373 <function id="FollowReferences" num="115" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4374 <synopsis>Follow References</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4375 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4376 This function initiates a traversal over the objects that are
a61af66fc99e Initial load
duke
parents:
diff changeset
4377 directly and indirectly reachable from the specified object or,
a61af66fc99e Initial load
duke
parents:
diff changeset
4378 if <code>initial_object</code> is not specified, all objects
a61af66fc99e Initial load
duke
parents:
diff changeset
4379 reachable from the heap roots.
a61af66fc99e Initial load
duke
parents:
diff changeset
4380 The heap root are the set of system classes,
a61af66fc99e Initial load
duke
parents:
diff changeset
4381 JNI globals, references from thread stacks, and other objects used as roots
a61af66fc99e Initial load
duke
parents:
diff changeset
4382 for the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
4383 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4384 This function operates by traversing the reference graph.
a61af66fc99e Initial load
duke
parents:
diff changeset
4385 Let <i>A</i>, <i>B</i>, ... represent objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
4386 When a reference from <i>A</i> to <i>B</i> is traversed,
a61af66fc99e Initial load
duke
parents:
diff changeset
4387 when a reference from a heap root to <i>B</i> is traversed,
a61af66fc99e Initial load
duke
parents:
diff changeset
4388 or when <i>B</i> is specified as the <paramlink id="initial_object"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4389 then <i>B</i> is said to be <i>visited</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4390 A reference from <i>A</i> to <i>B</i> is not traversed until <i>A</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
4391 is visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4392 References are reported in the same order that the references are traversed.
a61af66fc99e Initial load
duke
parents:
diff changeset
4393 Object references are reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4394 callback function <functionlink id="jvmtiHeapReferenceCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4395 In a reference from <i>A</i> to <i>B</i>, <i>A</i> is known
a61af66fc99e Initial load
duke
parents:
diff changeset
4396 as the <i>referrer</i> and <i>B</i> as the <i>referree</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4397 The callback is invoked exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
4398 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
4399 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
4400 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
4401 each reference is reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4402 These references may be distinguished by examining the
a61af66fc99e Initial load
duke
parents:
diff changeset
4403 <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
4404 id="jvmtiHeapReferenceCallback.reference_kind"><code>reference_kind</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4405 and
a61af66fc99e Initial load
duke
parents:
diff changeset
4406 <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
4407 id="jvmtiHeapReferenceCallback.reference_info"><code>reference_info</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4408 parameters of the <functionlink id="jvmtiHeapReferenceCallback"/> callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4409 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4410 This function reports a Java programming language view of object references,
a61af66fc99e Initial load
duke
parents:
diff changeset
4411 not a virtual machine implementation view. The following object references
a61af66fc99e Initial load
duke
parents:
diff changeset
4412 are reported when they are non-null:
a61af66fc99e Initial load
duke
parents:
diff changeset
4413 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4414 <li>Instance objects report references to each non-primitive instance fields
a61af66fc99e Initial load
duke
parents:
diff changeset
4415 (including inherited fields).</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4416 <li>Instance objects report a reference to the object type (class).</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4417 <li>Classes report a reference to the superclass and directly
a61af66fc99e Initial load
duke
parents:
diff changeset
4418 implemented/extended interfaces.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4419 <li>Classes report a reference to the class loader, protection domain,
a61af66fc99e Initial load
duke
parents:
diff changeset
4420 signers, and resolved entries in the constant pool.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4421 <li>Classes report a reference to each directly declared non-primitive
a61af66fc99e Initial load
duke
parents:
diff changeset
4422 static field.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4423 <li>Arrays report a reference to the array type (class) and each
a61af66fc99e Initial load
duke
parents:
diff changeset
4424 array element.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4425 <li>Primitive arrays report a reference to the array type.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4426 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4427 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4428 This function can also be used to examine primitive (non-object) values.
a61af66fc99e Initial load
duke
parents:
diff changeset
4429 The primitive value of an array or String
a61af66fc99e Initial load
duke
parents:
diff changeset
4430 is reported after the object has been visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4431 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4432 <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4433 <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4434 A primitive field
a61af66fc99e Initial load
duke
parents:
diff changeset
4435 is reported after the object with that field is visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4436 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4437 <functionlink id="jvmtiPrimitiveFieldCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4438 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4439 Whether a callback is provided or is <code>NULL</code> only determines
a61af66fc99e Initial load
duke
parents:
diff changeset
4440 whether the callback will be invoked, it does not influence
a61af66fc99e Initial load
duke
parents:
diff changeset
4441 which objects are visited nor does it influence whether other callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
4442 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
4443 However, the
a61af66fc99e Initial load
duke
parents:
diff changeset
4444 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4445 returned by <functionlink id="jvmtiHeapReferenceCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4446 do determine if the objects referenced by the
a61af66fc99e Initial load
duke
parents:
diff changeset
4447 current object as visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4448 The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4449 and <paramlink id="klass"/> provided as parameters to this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4450 do not control which objects are visited but they do control which
a61af66fc99e Initial load
duke
parents:
diff changeset
4451 objects and primitive values are reported by the callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4452 For example, if the only callback that was set is
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4453 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4454 is set to the array of bytes class, then only arrays of byte will be
a61af66fc99e Initial load
duke
parents:
diff changeset
4455 reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4456 The table below summarizes this:
a61af66fc99e Initial load
duke
parents:
diff changeset
4457 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4458 <table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4459 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4460 <th/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4461 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4462 Controls objects visited
a61af66fc99e Initial load
duke
parents:
diff changeset
4463 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4464 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4465 Controls objects reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4466 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4467 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4468 Controls primitives reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4469 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4470 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4471 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4472 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4473 the
a61af66fc99e Initial load
duke
parents:
diff changeset
4474 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4475 returned by <functionlink id="jvmtiHeapReferenceCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4476 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4477 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4478 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4479 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4480 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4481 <b>Yes</b>, since visits are controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
4482 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4483 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4484 <b>Yes</b>, since visits are controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
4485 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4486 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4487 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4488 <th align="left">
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4489 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4490 in <paramlink id="callbacks"/> set
a61af66fc99e Initial load
duke
parents:
diff changeset
4491 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4492 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4493 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4494 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4495 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4496 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4497 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4498 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4499 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4500 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4501 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4502 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4503 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4504 <paramlink id="heap_filter"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4505 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4506 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4507 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4508 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4509 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4510 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4511 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4512 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4513 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4514 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4515 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4516 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4517 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4518 <paramlink id="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4519 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4520 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4521 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4522 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4523 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4524 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4525 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4526 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4527 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4528 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4529 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4530 </table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4531 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4532 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
4533 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
4534 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
4535 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
4536 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
4537 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
4538 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
4539 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
4540 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4541 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4542 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4543 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4544 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4545 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4546 <param id="heap_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
4547 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4548 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4549 This bit vector of
a61af66fc99e Initial load
duke
parents:
diff changeset
4550 <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4551 restricts the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
4552 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4553 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4554 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4555 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
4556 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4557 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4558 <nullok>callbacks are not limited to instances of a particular
a61af66fc99e Initial load
duke
parents:
diff changeset
4559 class</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4560 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4561 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4562 Callbacks are only reported when the object is an instance of
a61af66fc99e Initial load
duke
parents:
diff changeset
4563 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4564 Objects which are instances of a subclass of <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4565 are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4566 If <code>klass</code> is an interface, no objects are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4567 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4568 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4569 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4570 <param id="initial_object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4571 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4572 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4573 <nullok>references are followed from the heap roots</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4574 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4575 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4576 The object to follow
a61af66fc99e Initial load
duke
parents:
diff changeset
4577 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4578 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4579 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
4580 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4581 <struct>jvmtiHeapCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4582 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4583 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4584 Structure defining the set of callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
4585 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4586 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4587 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4588 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4589 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4590 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4591 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4592 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4593 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4594 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4595 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4596 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4597 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4598 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
4599 <paramlink id="klass"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4600 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4601 <error id="JVMTI_ERROR_INVALID_OBJECT">
a61af66fc99e Initial load
duke
parents:
diff changeset
4602 <paramlink id="initial_object"/> is not a valid object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4603 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4604 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4605 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4606
a61af66fc99e Initial load
duke
parents:
diff changeset
4607
a61af66fc99e Initial load
duke
parents:
diff changeset
4608 <function id="IterateThroughHeap" num="116" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4609 <synopsis>Iterate Through Heap</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4610 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4611 Initiate an iteration over all objects in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
4612 This includes both reachable and
a61af66fc99e Initial load
duke
parents:
diff changeset
4613 unreachable objects. Objects are visited in no particular order.
a61af66fc99e Initial load
duke
parents:
diff changeset
4614 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4615 Heap objects are reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4616 callback function <functionlink id="jvmtiHeapIterationCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4617 References between objects are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4618 If only reachable objects are desired, or if object reference information
a61af66fc99e Initial load
duke
parents:
diff changeset
4619 is needed, use <functionlink id="FollowReferences"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4620 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4621 This function can also be used to examine primitive (non-object) values.
a61af66fc99e Initial load
duke
parents:
diff changeset
4622 The primitive value of an array or String
a61af66fc99e Initial load
duke
parents:
diff changeset
4623 is reported after the object has been visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4624 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4625 <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4626 <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4627 A primitive field
a61af66fc99e Initial load
duke
parents:
diff changeset
4628 is reported after the object with that field is visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4629 it is reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4630 callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4631 <functionlink id="jvmtiPrimitiveFieldCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4632 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4633 Unless the iteration is aborted by the
a61af66fc99e Initial load
duke
parents:
diff changeset
4634 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4635 returned by a callback, all objects in the heap are visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4636 Whether a callback is provided or is <code>NULL</code> only determines
a61af66fc99e Initial load
duke
parents:
diff changeset
4637 whether the callback will be invoked, it does not influence
a61af66fc99e Initial load
duke
parents:
diff changeset
4638 which objects are visited nor does it influence whether other callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
4639 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
4640 The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4641 and <paramlink id="klass"/> provided as parameters to this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4642 do not control which objects are visited but they do control which
a61af66fc99e Initial load
duke
parents:
diff changeset
4643 objects and primitive values are reported by the callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4644 For example, if the only callback that was set is
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4645 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4646 is set to the array of bytes class, then only arrays of byte will be
a61af66fc99e Initial load
duke
parents:
diff changeset
4647 reported. The table below summarizes this (contrast this with
a61af66fc99e Initial load
duke
parents:
diff changeset
4648 <functionlink id="FollowReferences"/>):
a61af66fc99e Initial load
duke
parents:
diff changeset
4649 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4650 <table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4651 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4652 <th/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4653 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4654 Controls objects visited
a61af66fc99e Initial load
duke
parents:
diff changeset
4655 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4656 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4657 Controls objects reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4658 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4659 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4660 Controls primitives reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4661 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4662 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4663 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4664 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4665 the
a61af66fc99e Initial load
duke
parents:
diff changeset
4666 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4667 returned by <functionlink id="jvmtiHeapIterationCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4668 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4669 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4670 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4671 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4672 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4673 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4674 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4675 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4676 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4677 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4678 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4679 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4680 <th align="left">
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4681 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4682 in <paramlink id="callbacks"/> set
a61af66fc99e Initial load
duke
parents:
diff changeset
4683 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4684 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4685 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4686 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4687 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4688 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4689 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4690 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4691 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4692 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4693 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4694 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4695 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4696 <paramlink id="heap_filter"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4697 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4698 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4699 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4700 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4701 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4702 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4703 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4704 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4705 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4706 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4707 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4708 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4709 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4710 <paramlink id="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4711 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4712 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4713 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4714 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4715 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4716 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4717 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4718 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4719 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4720 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4721 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4722 </table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4723 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4724 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
4725 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
4726 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
4727 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
4728 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
4729 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
4730 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
4731 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
4732 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4733 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4734 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4735 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4736 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4737 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4738 <param id="heap_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
4739 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4740 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4741 This bit vector of
a61af66fc99e Initial load
duke
parents:
diff changeset
4742 <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4743 restricts the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
4744 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4745 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4746 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4747 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
4748 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4749 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4750 <nullok>callbacks are not limited to instances of a particular class</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4751 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4752 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4753 Callbacks are only reported when the object is an instance of
a61af66fc99e Initial load
duke
parents:
diff changeset
4754 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4755 Objects which are instances of a subclass of <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4756 are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4757 If <code>klass</code> is an interface, no objects are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4758 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4759 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4760 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4761 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
4762 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4763 <struct>jvmtiHeapCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4764 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4765 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4766 Structure defining the set callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
4767 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4768 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4769 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4770 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4771 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4772 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4773 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4774 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4775 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4776 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4777 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4778 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4779 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4780 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
4781 <paramlink id="klass"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4782 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4783 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4784 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4785
a61af66fc99e Initial load
duke
parents:
diff changeset
4786 <function id="GetTag" phase="start" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
4787 <synopsis>Get Tag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4788 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4789 Retrieve the tag associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4790 The tag is a long value typically used to store a
a61af66fc99e Initial load
duke
parents:
diff changeset
4791 unique identifier or pointer to object information.
a61af66fc99e Initial load
duke
parents:
diff changeset
4792 The tag is set with
a61af66fc99e Initial load
duke
parents:
diff changeset
4793 <functionlink id="SetTag"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4794 Objects for which no tags have been set return a
a61af66fc99e Initial load
duke
parents:
diff changeset
4795 tag value of zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
4796 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4797 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4798 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4799 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4800 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4801 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4802 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4803 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4804 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4805 The object whose tag is to be retrieved.
a61af66fc99e Initial load
duke
parents:
diff changeset
4806 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4807 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4808 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4809 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4810 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4811 On return, the referenced long is set to the value
a61af66fc99e Initial load
duke
parents:
diff changeset
4812 of the tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
4813 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4814 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4815 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4816 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4817 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4818 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4819
a61af66fc99e Initial load
duke
parents:
diff changeset
4820 <function id="SetTag" phase="start" num="107">
a61af66fc99e Initial load
duke
parents:
diff changeset
4821 <synopsis>Set Tag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4822 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4823 Set the tag associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4824 The tag is a long value typically used to store a
a61af66fc99e Initial load
duke
parents:
diff changeset
4825 unique identifier or pointer to object information.
a61af66fc99e Initial load
duke
parents:
diff changeset
4826 The tag is visible with
a61af66fc99e Initial load
duke
parents:
diff changeset
4827 <functionlink id="GetTag"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4828 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4829 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4830 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4831 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4832 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4833 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4834 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4835 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4836 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4837 The object whose tag is to be set.
a61af66fc99e Initial load
duke
parents:
diff changeset
4838 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4839 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4840 <param id="tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4841 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4842 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4843 The new value of the tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
4844 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4845 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4846 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4847 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4848 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4849 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4850
a61af66fc99e Initial load
duke
parents:
diff changeset
4851 <function id="GetObjectsWithTags" num="114">
a61af66fc99e Initial load
duke
parents:
diff changeset
4852 <synopsis>Get Objects With Tags</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4853 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4854 Return objects in the heap with the specified tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4855 The format is parallel arrays of objects and tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4856 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4857 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4858 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4859 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4860 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4861 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4862 <param id="tag_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4863 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4864 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4865 Number of tags to scan for.
a61af66fc99e Initial load
duke
parents:
diff changeset
4866 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4867 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4868 <param id="tags">
a61af66fc99e Initial load
duke
parents:
diff changeset
4869 <inbuf incount="tag_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4870 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4871 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4872 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4873 Scan for objects with these tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4874 Zero is not permitted in this array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4875 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4876 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4877 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4878 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4879 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4880 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4881 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4882 Return the number of objects with any of the tags
a61af66fc99e Initial load
duke
parents:
diff changeset
4883 in <paramlink id="tags"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4884 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4885 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4886 <param id="object_result_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4887 <allocbuf outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4888 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4889 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4890 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4891 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4892 Returns the array of objects with any of the tags
a61af66fc99e Initial load
duke
parents:
diff changeset
4893 in <paramlink id="tags"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4894 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4895 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4896 <param id="tag_result_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4897 <allocbuf outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4898 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4899 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4900 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4901 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4902 For each object in <paramlink id="object_result_ptr"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4903 return the tag at the corresponding index.
a61af66fc99e Initial load
duke
parents:
diff changeset
4904 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4905 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4906 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4907 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4908 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
4909 Zero is present in <paramlink id="tags"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4910 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4911 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4912 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4913
a61af66fc99e Initial load
duke
parents:
diff changeset
4914 <function id="ForceGarbageCollection" num="108">
a61af66fc99e Initial load
duke
parents:
diff changeset
4915 <synopsis>Force Garbage Collection</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4916 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4917 Force the VM to perform a garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
4918 The garbage collection is as complete as possible.
a61af66fc99e Initial load
duke
parents:
diff changeset
4919 This function does not cause finalizers to be run.
a61af66fc99e Initial load
duke
parents:
diff changeset
4920 This function does not return until the garbage collection
a61af66fc99e Initial load
duke
parents:
diff changeset
4921 is finished.
a61af66fc99e Initial load
duke
parents:
diff changeset
4922 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4923 Although garbage collection is as complete
a61af66fc99e Initial load
duke
parents:
diff changeset
4924 as possible there is no guarantee that all
a61af66fc99e Initial load
duke
parents:
diff changeset
4925 <eventlink id="ObjectFree"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4926 events will have been
a61af66fc99e Initial load
duke
parents:
diff changeset
4927 sent by the time that this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4928 returns. In particular, an object may be
a61af66fc99e Initial load
duke
parents:
diff changeset
4929 prevented from being freed because it
a61af66fc99e Initial load
duke
parents:
diff changeset
4930 is awaiting finalization.
a61af66fc99e Initial load
duke
parents:
diff changeset
4931 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4932 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4933 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4934 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4935 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4936 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4937 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4938 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4939 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4940
a61af66fc99e Initial load
duke
parents:
diff changeset
4941
a61af66fc99e Initial load
duke
parents:
diff changeset
4942 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
4943
a61af66fc99e Initial load
duke
parents:
diff changeset
4944 <category id="Heap_1_0" label="Heap (1.0)">
a61af66fc99e Initial load
duke
parents:
diff changeset
4945 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
4946 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4947 These functions and data types were introduced in the original
a61af66fc99e Initial load
duke
parents:
diff changeset
4948 <jvmti/> version 1.0 and have been superseded by more
a61af66fc99e Initial load
duke
parents:
diff changeset
4949 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4950 <internallink id="Heap"><b>powerful and flexible versions</b></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4951 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4952 which:
a61af66fc99e Initial load
duke
parents:
diff changeset
4953 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4954 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4955 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4956 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4957 Allow access to primitive values (the value of Strings, arrays,
a61af66fc99e Initial load
duke
parents:
diff changeset
4958 and primitive fields)
a61af66fc99e Initial load
duke
parents:
diff changeset
4959 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4960 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4961 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4962 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4963 Allow the tag of the referrer to be set, thus enabling more
a61af66fc99e Initial load
duke
parents:
diff changeset
4964 efficient localized reference graph building
a61af66fc99e Initial load
duke
parents:
diff changeset
4965 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4966 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4967 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4968 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4969 Provide more extensive filtering abilities
a61af66fc99e Initial load
duke
parents:
diff changeset
4970 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4971 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4972 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4973 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4974 Are extensible, allowing their abilities to grow in future versions of <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4975 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4976 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4977 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4978 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4979 <b>Please use the </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4980 <internallink id="Heap"><b>current Heap functions</b></internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4981 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4982 <constants id="jvmtiHeapObjectFilter" label="Heap Object Filter Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4983 <constant id="JVMTI_HEAP_OBJECT_TAGGED" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4984 Tagged objects only.
a61af66fc99e Initial load
duke
parents:
diff changeset
4985 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4986 <constant id="JVMTI_HEAP_OBJECT_UNTAGGED" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4987 Untagged objects only.
a61af66fc99e Initial load
duke
parents:
diff changeset
4988 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4989 <constant id="JVMTI_HEAP_OBJECT_EITHER" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
4990 Either tagged or untagged objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
4991 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4992 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
4993
a61af66fc99e Initial load
duke
parents:
diff changeset
4994 <constants id="jvmtiHeapRootKind" label="Heap Root Kind Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4995 <constant id="JVMTI_HEAP_ROOT_JNI_GLOBAL" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4996 JNI global reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4997 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4998 <constant id="JVMTI_HEAP_ROOT_SYSTEM_CLASS" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4999 System class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5000 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5001 <constant id="JVMTI_HEAP_ROOT_MONITOR" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
5002 Monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
5003 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5004 <constant id="JVMTI_HEAP_ROOT_STACK_LOCAL" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
5005 Stack local.
a61af66fc99e Initial load
duke
parents:
diff changeset
5006 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5007 <constant id="JVMTI_HEAP_ROOT_JNI_LOCAL" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
5008 JNI local reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5009 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5010 <constant id="JVMTI_HEAP_ROOT_THREAD" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
5011 Thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
5012 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5013 <constant id="JVMTI_HEAP_ROOT_OTHER" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
5014 Other.
a61af66fc99e Initial load
duke
parents:
diff changeset
5015 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5016 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5017
a61af66fc99e Initial load
duke
parents:
diff changeset
5018 <constants id="jvmtiObjectReferenceKind" label="Object Reference Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
5019 <constant id="JVMTI_REFERENCE_CLASS" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
5020 Reference from an object to its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5021 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5022 <constant id="JVMTI_REFERENCE_FIELD" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
5023 Reference from an object to the value of one of its instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
5024 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5025 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5026 jvmtiObjectReferenceCallback</internallink> is the index of the
a61af66fc99e Initial load
duke
parents:
diff changeset
5027 the instance field. The index is based on the order of all the
a61af66fc99e Initial load
duke
parents:
diff changeset
5028 object's fields. This includes all fields of the directly declared
a61af66fc99e Initial load
duke
parents:
diff changeset
5029 static and instance fields in the class, and includes all fields (both
a61af66fc99e Initial load
duke
parents:
diff changeset
5030 public and private) fields declared in superclasses and superinterfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
5031 The index is thus calculated by summing the index of the field in the directly
a61af66fc99e Initial load
duke
parents:
diff changeset
5032 declared class (see <functionlink id="GetClassFields"/>), with the total
a61af66fc99e Initial load
duke
parents:
diff changeset
5033 number of fields (both public and private) declared in all superclasses
a61af66fc99e Initial load
duke
parents:
diff changeset
5034 and superinterfaces. The index starts at zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
5035 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5036 <constant id="JVMTI_REFERENCE_ARRAY_ELEMENT" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
5037 Reference from an array to one of its elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
5038 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5039 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5040 jvmtiObjectReferenceCallback</internallink> is the array index.
a61af66fc99e Initial load
duke
parents:
diff changeset
5041 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5042 <constant id="JVMTI_REFERENCE_CLASS_LOADER" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
5043 Reference from a class to its class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
5044 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5045 <constant id="JVMTI_REFERENCE_SIGNERS" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
5046 Reference from a class to its signers array.
a61af66fc99e Initial load
duke
parents:
diff changeset
5047 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5048 <constant id="JVMTI_REFERENCE_PROTECTION_DOMAIN" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
5049 Reference from a class to its protection domain.
a61af66fc99e Initial load
duke
parents:
diff changeset
5050 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5051 <constant id="JVMTI_REFERENCE_INTERFACE" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
5052 Reference from a class to one of its interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
5053 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5054 <constant id="JVMTI_REFERENCE_STATIC_FIELD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
5055 Reference from a class to the value of one of its static fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
5056 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5057 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5058 jvmtiObjectReferenceCallback</internallink> is the index of the
a61af66fc99e Initial load
duke
parents:
diff changeset
5059 the static field. The index is based on the order of all the
a61af66fc99e Initial load
duke
parents:
diff changeset
5060 object's fields. This includes all fields of the directly declared
a61af66fc99e Initial load
duke
parents:
diff changeset
5061 static and instance fields in the class, and includes all fields (both
a61af66fc99e Initial load
duke
parents:
diff changeset
5062 public and private) fields declared in superclasses and superinterfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
5063 The index is thus calculated by summing the index of the field in the directly
a61af66fc99e Initial load
duke
parents:
diff changeset
5064 declared class (see <functionlink id="GetClassFields"/>), with the total
a61af66fc99e Initial load
duke
parents:
diff changeset
5065 number of fields (both public and private) declared in all superclasses
a61af66fc99e Initial load
duke
parents:
diff changeset
5066 and superinterfaces. The index starts at zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
5067 Note: this definition differs from that in the <jvmti/> 1.0 Specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
5068 <rationale>No known implementations used the 1.0 definition.</rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
5069 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5070 <constant id="JVMTI_REFERENCE_CONSTANT_POOL" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
5071 Reference from a class to a resolved entry in the constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
5072 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5073 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5074 jvmtiObjectReferenceCallback</internallink> is the index into
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
5075 constant pool table of the class, starting at 1. See
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
5076 <vmspec chapter="4.4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
5077 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5078 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5079
a61af66fc99e Initial load
duke
parents:
diff changeset
5080 <constants id="jvmtiIterationControl" label="Iteration Control Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
5081 <constant id="JVMTI_ITERATION_CONTINUE" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
5082 Continue the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5083 If this is a reference iteration, follow the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5084 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5085 <constant id="JVMTI_ITERATION_IGNORE" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
5086 Continue the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5087 If this is a reference iteration, ignore the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5088 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5089 <constant id="JVMTI_ITERATION_ABORT" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
5090 Abort the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5091 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5092 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5093 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5094
a61af66fc99e Initial load
duke
parents:
diff changeset
5095 <callback id="jvmtiHeapObjectCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5096 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5097 <synopsis>Heap Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5098 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5099 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5100 Describes (but does not pass in) an object in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
5101 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5102 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5103 or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5104 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5105 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5106 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5107 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5108 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5109 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5110 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5111 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5112 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5113 If the object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
5114 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5115 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5116 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5117 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5118 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5119 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5120 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5121 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5122 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5123 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5124 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5125 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5126 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5127 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5128 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5129 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5130 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5131 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5132 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5133 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5134 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5135 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5136 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5137 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5138 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5139 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5140 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5141
a61af66fc99e Initial load
duke
parents:
diff changeset
5142 <callback id="jvmtiHeapRootCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5143 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5144 <synopsis>Heap Root Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5145 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5146 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5147 Describes (but does not pass in) an object that is a root for the purposes
a61af66fc99e Initial load
duke
parents:
diff changeset
5148 of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5149 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5150 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5151 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5152 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5153 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5154 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5155 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5156 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5157 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5158 <param id="root_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5159 <enum>jvmtiHeapRootKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5160 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5161 The kind of heap root.
a61af66fc99e Initial load
duke
parents:
diff changeset
5162 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5163 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5164 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5165 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5166 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5167 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5168 If the object represents a runtime class, the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5169 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5170 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5171 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5172 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5173 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5174 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5175 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5176 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5177 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5178 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5179 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5180 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5181 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5182 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5183 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5184 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5185 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5186 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5187 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5188 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5189 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5190 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5191 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5192 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5193 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5194 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5195
a61af66fc99e Initial load
duke
parents:
diff changeset
5196 <callback id="jvmtiStackReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5197 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5198 <synopsis>Stack Reference Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5199 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5200 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5201 Describes (but does not pass in) an object on the stack that is a root for
a61af66fc99e Initial load
duke
parents:
diff changeset
5202 the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5203 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5204 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5205 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5206 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5207 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5208 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5209 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5210 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5211 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5212 <param id="root_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5213 <enum>jvmtiHeapRootKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5214 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5215 The kind of root (either <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5216 <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
5217 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5218 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5219 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5220 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5221 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5222 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5223 If the object represents a runtime class, the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5224 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5225 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5226 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5227 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5228 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5229 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5230 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5231 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5232 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5233 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5234 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5235 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5236 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5237 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5238 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5239 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5240 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5241 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5242 <param id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5243 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5244 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5245 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5246 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5247 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5248 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5249 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5250 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5251 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5252 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5253 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5254 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
5255 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5256 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5257 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5258 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5259 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5260 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5261 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5262 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5263 The slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5264 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5265 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5266 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5267 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5268 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5269 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5270 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5271 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5272 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5273 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5274
a61af66fc99e Initial load
duke
parents:
diff changeset
5275 <callback id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5276 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5277 <synopsis>Object Reference Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5278 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5279 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5280 Describes a reference from an object (the referrer) to another object
a61af66fc99e Initial load
duke
parents:
diff changeset
5281 (the referree).
a61af66fc99e Initial load
duke
parents:
diff changeset
5282 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5283 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5284 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5285 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5286 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5287 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5288 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5289 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5290 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5291 <param id="reference_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5292 <enum>jvmtiObjectReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5293 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5294 The type of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5295 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5296 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5297 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5298 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5299 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5300 The tag of the class of referree object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5301 If the referree object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
5302 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5303 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5304 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5305 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5306 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5307 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5308 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5309 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5310 Size of the referree object (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
5311 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5312 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5313 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5314 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5315 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5316 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5317 The referree object tag value, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5318 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5319 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5320 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5321 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5322 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5323 <param id="referrer_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5324 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5325 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5326 The tag of the referrer object, or zero if the referrer
a61af66fc99e Initial load
duke
parents:
diff changeset
5327 object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5328 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5329 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5330 <param id="referrer_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
5331 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5332 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5333 For references of type <code>JVMTI_REFERENCE_FIELD</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5334 <code>JVMTI_REFERENCE_STATIC_FIELD</code> the index
a61af66fc99e Initial load
duke
parents:
diff changeset
5335 of the field in the referrer object. The index is based on the
a61af66fc99e Initial load
duke
parents:
diff changeset
5336 order of all the object's fields - see <internallink
a61af66fc99e Initial load
duke
parents:
diff changeset
5337 id="JVMTI_REFERENCE_FIELD">JVMTI_REFERENCE_FIELD</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5338 or <internallink
a61af66fc99e Initial load
duke
parents:
diff changeset
5339 id="JVMTI_REFERENCE_STATIC_FIELD">JVMTI_REFERENCE_STATIC_FIELD
a61af66fc99e Initial load
duke
parents:
diff changeset
5340 </internallink> for further description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5341 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5342 For references of type <code>JVMTI_REFERENCE_ARRAY_ELEMENT</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5343 the array index - see <internallink id="JVMTI_REFERENCE_ARRAY_ELEMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5344 JVMTI_REFERENCE_ARRAY_ELEMENT</internallink> for further description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5345 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5346 For references of type <code>JVMTI_REFERENCE_CONSTANT_POOL</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5347 the index into the constant pool of the class - see
a61af66fc99e Initial load
duke
parents:
diff changeset
5348 <internallink id="JVMTI_REFERENCE_CONSTANT_POOL">
a61af66fc99e Initial load
duke
parents:
diff changeset
5349 JVMTI_REFERENCE_CONSTANT_POOL</internallink> for further
a61af66fc99e Initial load
duke
parents:
diff changeset
5350 description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5351 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5352 For references of other kinds the <code>referrer_index</code> is
a61af66fc99e Initial load
duke
parents:
diff changeset
5353 <code>-1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5354 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5355 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5356 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5357 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5358 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5359 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5360 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5361 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5362 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5363 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5364
a61af66fc99e Initial load
duke
parents:
diff changeset
5365 <function id="IterateOverObjectsReachableFromObject" num="109">
a61af66fc99e Initial load
duke
parents:
diff changeset
5366 <synopsis>Iterate Over Objects Reachable From Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5367 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5368 This function iterates over all objects that are directly
a61af66fc99e Initial load
duke
parents:
diff changeset
5369 and indirectly reachable from the specified object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5370 For each object <i>A</i> (known
a61af66fc99e Initial load
duke
parents:
diff changeset
5371 as the referrer) with a reference to object <i>B</i> the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
5372 callback function is called to describe the object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5373 The callback is called exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
5374 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
5375 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5376 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
5377 These may be distinguished by the
a61af66fc99e Initial load
duke
parents:
diff changeset
5378 <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
5379 <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5380 The callback for an object will always occur after the callback for
a61af66fc99e Initial load
duke
parents:
diff changeset
5381 its referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5382 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5383 See <functionlink id="FollowReferences"/> for the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5384 references which are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
5385 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5386 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5387 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5388 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5389 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5390 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5391 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5392 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5393 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5394 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5395 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5396 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5397 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5398 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5399 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5400 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
5401 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5402 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5403 The object
a61af66fc99e Initial load
duke
parents:
diff changeset
5404 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5405 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5406 <param id="object_reference_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5407 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5408 <struct>jvmtiObjectReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5409 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5410 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5411 The callback to be called to describe each
a61af66fc99e Initial load
duke
parents:
diff changeset
5412 object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5413 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5414 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5415 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5416 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5417 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5418 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5419 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5420 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5421 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5422 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5423 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5424 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5425 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5426 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5427 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5428
a61af66fc99e Initial load
duke
parents:
diff changeset
5429 <function id="IterateOverReachableObjects" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
5430 <synopsis>Iterate Over Reachable Objects</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5431 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5432 This function iterates over the root objects and all objects that
a61af66fc99e Initial load
duke
parents:
diff changeset
5433 are directly and indirectly reachable from the root objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5434 The root objects comprise the set of system classes,
a61af66fc99e Initial load
duke
parents:
diff changeset
5435 JNI globals, references from thread stacks, and other objects used as roots
a61af66fc99e Initial load
duke
parents:
diff changeset
5436 for the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5437 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5438 For each root the <paramlink id="heap_root_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5439 or <paramlink id="stack_ref_callback"></paramlink> callback is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5440 An object can be a root object for more than one reason and in that case
a61af66fc99e Initial load
duke
parents:
diff changeset
5441 the appropriate callback is called for each reason.
a61af66fc99e Initial load
duke
parents:
diff changeset
5442 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5443 For each object reference the <paramlink id="object_ref_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5444 callback function is called to describe the object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5445 The callback is called exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
5446 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
5447 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5448 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
5449 These may be distinguished by the
a61af66fc99e Initial load
duke
parents:
diff changeset
5450 <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
5451 <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5452 The callback for an object will always occur after the callback for
a61af66fc99e Initial load
duke
parents:
diff changeset
5453 its referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5454 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5455 See <functionlink id="FollowReferences"/> for the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5456 references which are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
5457 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5458 Roots are always reported to the profiler before any object references
a61af66fc99e Initial load
duke
parents:
diff changeset
5459 are reported. In other words, the <paramlink id="object_ref_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5460 callback will not be called until the appropriate callback has been called
a61af66fc99e Initial load
duke
parents:
diff changeset
5461 for all roots. If the <paramlink id="object_ref_callback"></paramlink> callback is
a61af66fc99e Initial load
duke
parents:
diff changeset
5462 specified as <code>NULL</code> then this function returns after
a61af66fc99e Initial load
duke
parents:
diff changeset
5463 reporting the root objects to the profiler.
a61af66fc99e Initial load
duke
parents:
diff changeset
5464 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5465 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5466 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5467 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5468 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5469 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5470 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5471 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5472 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5473 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5474 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5475 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5476 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5477 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5478 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5479 <param id="heap_root_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5480 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5481 <struct>jvmtiHeapRootCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5482 <nullok>do not report heap roots</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5483 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5484 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5485 The callback function to be called for each heap root of type
a61af66fc99e Initial load
duke
parents:
diff changeset
5486 <code>JVMTI_HEAP_ROOT_JNI_GLOBAL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5487 <code>JVMTI_HEAP_ROOT_SYSTEM_CLASS</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5488 <code>JVMTI_HEAP_ROOT_MONITOR</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5489 <code>JVMTI_HEAP_ROOT_THREAD</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5490 <code>JVMTI_HEAP_ROOT_OTHER</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5491 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5492 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5493 <param id="stack_ref_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5494 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5495 <struct>jvmtiStackReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5496 <nullok>do not report stack references</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5497 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5498 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5499 The callback function to be called for each heap root of
a61af66fc99e Initial load
duke
parents:
diff changeset
5500 <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5501 <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5502 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5503 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5504 <param id="object_ref_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5505 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5506 <struct>jvmtiObjectReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5507 <nullok>do not follow references from the root objects</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5508 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5509 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5510 The callback function to be called for each object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5511 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5512 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5513 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5514 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5515 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5516 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5517 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5518 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5519 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5520 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5521 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5522 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5523 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5524 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5525 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5526
a61af66fc99e Initial load
duke
parents:
diff changeset
5527 <function id="IterateOverHeap" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
5528 <synopsis>Iterate Over Heap</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5529 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5530 Iterate over all objects in the heap. This includes both reachable and
a61af66fc99e Initial load
duke
parents:
diff changeset
5531 unreachable objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5532 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5533 The <paramlink id="object_filter"></paramlink> parameter indicates the
a61af66fc99e Initial load
duke
parents:
diff changeset
5534 objects for which the callback function is called. If this parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5535 is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5536 called for every object that is tagged. If the parameter is
a61af66fc99e Initial load
duke
parents:
diff changeset
5537 <code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5538 for objects that are not tagged. If the parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5539 is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
a61af66fc99e Initial load
duke
parents:
diff changeset
5540 called for every object in the heap, irrespective of whether it is
a61af66fc99e Initial load
duke
parents:
diff changeset
5541 tagged or not.
a61af66fc99e Initial load
duke
parents:
diff changeset
5542 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5543 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5544 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5545 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5546 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5547 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5548 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5549 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5550 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5551 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5552 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5553 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5554 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5555 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5556 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5557 <param id="object_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
5558 <enum>jvmtiHeapObjectFilter</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5559 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5560 Indicates the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5561 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5562 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5563 <param id="heap_object_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5564 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5565 <struct>jvmtiHeapObjectCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5566 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5567 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5568 The iterator function to be called for each
a61af66fc99e Initial load
duke
parents:
diff changeset
5569 object matching the <paramlink id="object_filter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5570 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5571 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5572 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5573 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5574 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5575 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5576 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5577 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5578 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5579 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5580 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5581 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5582 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5583 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5584 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5585
a61af66fc99e Initial load
duke
parents:
diff changeset
5586 <function id="IterateOverInstancesOfClass" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
5587 <synopsis>Iterate Over Instances Of Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5588 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5589 Iterate over all objects in the heap that are instances of the specified class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5590 This includes direct instances of the specified class and
a61af66fc99e Initial load
duke
parents:
diff changeset
5591 instances of all subclasses of the specified class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5592 This includes both reachable and unreachable objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5593 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5594 The <paramlink id="object_filter"></paramlink> parameter indicates the
a61af66fc99e Initial load
duke
parents:
diff changeset
5595 objects for which the callback function is called. If this parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5596 is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5597 called for every object that is tagged. If the parameter is
a61af66fc99e Initial load
duke
parents:
diff changeset
5598 <code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5599 called for objects that are not tagged. If the parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5600 is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
a61af66fc99e Initial load
duke
parents:
diff changeset
5601 called for every object in the heap, irrespective of whether it is
a61af66fc99e Initial load
duke
parents:
diff changeset
5602 tagged or not.
a61af66fc99e Initial load
duke
parents:
diff changeset
5603 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5604 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5605 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5606 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5607 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5608 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5609 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5610 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5611 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5612 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5613 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5614 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5615 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5616 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5617 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5618 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
5619 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5620 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5621 Iterate over objects of this class only.
a61af66fc99e Initial load
duke
parents:
diff changeset
5622 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5623 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5624 <param id="object_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
5625 <enum>jvmtiHeapObjectFilter</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5626 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5627 Indicates the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5628 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5629 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5630 <param id="heap_object_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5631 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5632 <struct>jvmtiHeapObjectCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5633 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5634 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5635 The iterator function to be called for each
a61af66fc99e Initial load
duke
parents:
diff changeset
5636 <paramlink id="klass"/> instance matching
a61af66fc99e Initial load
duke
parents:
diff changeset
5637 the <paramlink id="object_filter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5638 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5639 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5640 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5641 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5642 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5643 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5644 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5645 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5646 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5647 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5648 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5649 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5650 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5651 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5652 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5653
a61af66fc99e Initial load
duke
parents:
diff changeset
5654 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
5655
a61af66fc99e Initial load
duke
parents:
diff changeset
5656 <category id="local" label="Local Variable">
a61af66fc99e Initial load
duke
parents:
diff changeset
5657
a61af66fc99e Initial load
duke
parents:
diff changeset
5658 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5659 These functions are used to retrieve or set the value of a local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5660 The variable is identified by the depth of the frame containing its
a61af66fc99e Initial load
duke
parents:
diff changeset
5661 value and the variable's slot number within that frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5662 The mapping of variables to
a61af66fc99e Initial load
duke
parents:
diff changeset
5663 slot numbers can be obtained with the function
a61af66fc99e Initial load
duke
parents:
diff changeset
5664 <functionlink id="GetLocalVariableTable"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5665 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5666
a61af66fc99e Initial load
duke
parents:
diff changeset
5667 <function id="GetLocalObject" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
5668 <synopsis>Get Local Variable - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5669 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5670 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5671 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5672 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5673 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5674 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5675 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5676 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5677 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5678 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5679 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5680 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5681 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5682 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5683 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5684 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5685 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5687 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5688 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5689 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5690 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5691 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5692 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5693 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5694 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5695 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5696 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5697 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5698 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5699 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5700 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5701 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5702 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5703 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5704 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5705 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5706 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5707 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5708 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5709 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5710 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5711 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5712 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5713 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5714 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5715 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5716
2019
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5717 <function id="GetLocalInstance" num="155" since="1.2">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5718 <synopsis>Get Local Instance</synopsis>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5719 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5720 This function can be used to retrieve the value of the local object
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5721 variable at slot 0 (the "<code>this</code>" object) from non-static
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5722 frames. This function can retrieve the "<code>this</code>" object from
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5723 native method frames, whereas <code>GetLocalObject()</code> would
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5724 return <code>JVMTI_ERROR_OPAQUE_FRAME</code> in those cases.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5725 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5726 <origin>new</origin>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5727 <capabilities>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5728 <required id="can_access_local_variables"></required>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5729 </capabilities>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5730 <parameters>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5731 <param id="thread">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5732 <jthread null="current" frame="frame"/>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5733 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5734 The thread of the frame containing the variable's value.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5735 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5736 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5737 <param id="depth">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5738 <jframeID thread="thread"/>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5739 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5740 The depth of the frame containing the variable's value.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5741 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5742 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5743 <param id="value_ptr">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5744 <outptr><jobject/></outptr>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5745 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5746 On return, points to the variable's value.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5747 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5748 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5749 </parameters>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5750 <errors>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5751 <error id="JVMTI_ERROR_INVALID_SLOT">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5752 If the specified frame is a static method frame.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5753 </error>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5754 </errors>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5755 </function>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
5756 <function id="GetLocalInt" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
5757 <synopsis>Get Local Variable - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5758 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5759 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5760 variable whose type is <code>int</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5761 <code>short</code>, <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5762 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5763 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5764 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5765 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5766 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5767 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5768 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5769 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5770 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5771 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5772 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5773 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5774 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5775 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5776 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5777 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5778 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5779 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5780 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5781 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5782 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5783 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5784 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5785 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5786 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5787 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5788 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5789 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5790 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5791 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5792 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5793 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5794 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5795 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5796 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5797 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5798 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5799 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5800 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5801 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5802 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5803 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5804 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5805 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5806 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5807 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5808 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5809
a61af66fc99e Initial load
duke
parents:
diff changeset
5810 <function id="GetLocalLong" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
5811 <synopsis>Get Local Variable - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5812 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5813 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5814 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5815 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5816 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5817 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5818 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5819 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5820 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5821 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5822 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5823 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5824 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5825 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5826 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5827 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5828 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5829 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5830 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5831 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5832 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5833 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5834 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5835 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5836 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5837 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5838 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5839 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5840 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5841 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5842 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5843 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5844 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5845 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5846 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5847 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5848 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5849 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5850 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5851 The variable type is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5852 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5853 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5854 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5855 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5856 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5857 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5858
a61af66fc99e Initial load
duke
parents:
diff changeset
5859 <function id="GetLocalFloat" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
5860 <synopsis>Get Local Variable - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5861 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5862 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5863 variable whose type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5864 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5865 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5866 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5867 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5868 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5869 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5870 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5871 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5872 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5873 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5874 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5875 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5876 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5877 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5878 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5879 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5880 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5881 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5882 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5883 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5884 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5885 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5886 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5887 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5888 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5889 <outptr><jfloat/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5890 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5891 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5892 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5893 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5894 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5895 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5896 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5897 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5898 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5899 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5900 The variable type is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5901 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5902 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5903 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5904 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5905 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5906 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5907
a61af66fc99e Initial load
duke
parents:
diff changeset
5908 <function id="GetLocalDouble" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
5909 <synopsis>Get Local Variable - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5910 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5911 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5912 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5913 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5914 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5915 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5916 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5917 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5918 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5919 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5920 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5921 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5922 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5923 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5924 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5925 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5926 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5927 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5928 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5929 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5930 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5931 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5932 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5933 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5934 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5935 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5936 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5937 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5938 <outptr><jdouble/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5939 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5940 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5941 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5942 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5943 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5944 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5945 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5946 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5947 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5948 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5949 The variable type is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5950 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5951 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5952 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5953 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5954 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5955 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5956
a61af66fc99e Initial load
duke
parents:
diff changeset
5957 <function id="SetLocalObject" num="26">
a61af66fc99e Initial load
duke
parents:
diff changeset
5958 <synopsis>Set Local Variable - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5959 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5960 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5961 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5962 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5963 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5964 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5965 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5966 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5967 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5968 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5969 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5970 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5971 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5972 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5973 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5974 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5975 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5976 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5977 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5978 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5979 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5980 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5981 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5982 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5983 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5984 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5985 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5986 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
5987 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5988 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5989 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5990 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5991 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5992 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5993 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5994 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5995 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5996 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5997 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5998 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5999 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6000 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6001 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6002 The supplied <paramlink id="value"/> is not compatible
a61af66fc99e Initial load
duke
parents:
diff changeset
6003 with the variable type.
a61af66fc99e Initial load
duke
parents:
diff changeset
6004 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6005 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6006 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6007 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6008 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6009 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6010
a61af66fc99e Initial load
duke
parents:
diff changeset
6011 <function id="SetLocalInt" num="27">
a61af66fc99e Initial load
duke
parents:
diff changeset
6012 <synopsis>Set Local Variable - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6013 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6014 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6015 variable whose type is <code>int</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6016 <code>short</code>, <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
6017 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6018 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6019 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6020 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6021 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6022 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6023 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6024 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6025 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6026 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6027 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6028 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6029 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6030 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6031 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6032 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6033 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6034 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6035 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6036 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6037 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6038 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6039 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6040 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6041 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6042 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6043 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6044 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6045 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6046 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6047 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6048 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6049 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6050 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6051 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6052 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6053 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6054 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
6055 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6056 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
6057 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6058 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6059 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6060 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6061 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6062 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6063 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6064
a61af66fc99e Initial load
duke
parents:
diff changeset
6065 <function id="SetLocalLong" num="28">
a61af66fc99e Initial load
duke
parents:
diff changeset
6066 <synopsis>Set Local Variable - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6067 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6068 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6069 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6070 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6071 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6072 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6073 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6074 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6075 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6076 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6077 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6078 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6079 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6080 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6081 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6082 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6083 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6084 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6085 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6086 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6087 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6088 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6089 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6090 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6091 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6092 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6093 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6094 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6095 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6096 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6097 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6098 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6099 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6100 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6101 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6102 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6103 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6104 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6105 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6106 The variable type is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6107 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6108 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6109 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6110 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6111 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6112 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6113
a61af66fc99e Initial load
duke
parents:
diff changeset
6114 <function id="SetLocalFloat" num="29">
a61af66fc99e Initial load
duke
parents:
diff changeset
6115 <synopsis>Set Local Variable - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6116 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6117 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6118 variable whose type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6119 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6120 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6121 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6122 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6123 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6124 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6125 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6126 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6127 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6128 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6129 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6130 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6131 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6132 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6133 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6134 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6135 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6136 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6137 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6138 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6139 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6140 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6141 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6142 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6143 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6144 <jfloat/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6145 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6146 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6147 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6148 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6149 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6150 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6151 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6152 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6153 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6154 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6155 The variable type is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6156 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6157 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6158 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6159 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6160 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6161 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6162
a61af66fc99e Initial load
duke
parents:
diff changeset
6163 <function id="SetLocalDouble" num="30">
a61af66fc99e Initial load
duke
parents:
diff changeset
6164 <synopsis>Set Local Variable - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6165 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6166 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6167 variable whose type is <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6168 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6169 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6170 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6171 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6172 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6173 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6174 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6175 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6176 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6177 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6178 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6179 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6180 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6181 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6182 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6183 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6184 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6185 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6186 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6187 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6188 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6189 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6190 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6191 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6192 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6193 <jdouble/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6194 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6195 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6196 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6197 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6198 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6199 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6200 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6201 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6202 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6203 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6204 The variable type is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6205 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6206 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6207 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6208 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6209 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6210 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6211 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6212
a61af66fc99e Initial load
duke
parents:
diff changeset
6213 <category id="breakpointCategory" label="Breakpoint">
a61af66fc99e Initial load
duke
parents:
diff changeset
6214
a61af66fc99e Initial load
duke
parents:
diff changeset
6215 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6216 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6217
a61af66fc99e Initial load
duke
parents:
diff changeset
6218 <function id="SetBreakpoint" num="38">
a61af66fc99e Initial load
duke
parents:
diff changeset
6219 <synopsis>Set Breakpoint</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6220 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6221 Set a breakpoint at the instruction indicated by
a61af66fc99e Initial load
duke
parents:
diff changeset
6222 <code>method</code> and <code>location</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6223 An instruction can only have one breakpoint.
a61af66fc99e Initial load
duke
parents:
diff changeset
6224 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6225 Whenever the designated instruction is about to be executed, a
a61af66fc99e Initial load
duke
parents:
diff changeset
6226 <eventlink id="Breakpoint"></eventlink> event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
6227 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6228 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6229 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6230 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6231 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6232 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6233 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6234 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6235 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6236 The class in which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6237 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6238 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6239 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
6240 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6241 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6242 The method in which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6243 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6244 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6245 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
6246 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6247 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6248 the index of the instruction at which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6249
a61af66fc99e Initial load
duke
parents:
diff changeset
6250 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6251 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6252 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6253 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6254 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6255 The designated bytecode already has a breakpoint.
a61af66fc99e Initial load
duke
parents:
diff changeset
6256 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6257 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6258 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6259
a61af66fc99e Initial load
duke
parents:
diff changeset
6260 <function id="ClearBreakpoint" num="39">
a61af66fc99e Initial load
duke
parents:
diff changeset
6261 <synopsis>Clear Breakpoint</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6262 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6263 Clear the breakpoint at the bytecode indicated by
a61af66fc99e Initial load
duke
parents:
diff changeset
6264 <code>method</code> and <code>location</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6265 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6266 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6267 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6268 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6269 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6270 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6271 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6272 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6273 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6274 The class in which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6275 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6276 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6277 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
6278 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6279 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6280 The method in which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6281 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6282 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6283 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
6284 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6285 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6286 the index of the instruction at which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6287 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6288 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6289 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6290 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6291 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6292 There's no breakpoint at the designated bytecode.
a61af66fc99e Initial load
duke
parents:
diff changeset
6293 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6294 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6295 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6296
a61af66fc99e Initial load
duke
parents:
diff changeset
6297 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6298
a61af66fc99e Initial load
duke
parents:
diff changeset
6299 <category id="fieldWatch" label="Watched Field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6300
a61af66fc99e Initial load
duke
parents:
diff changeset
6301 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6302 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6303
a61af66fc99e Initial load
duke
parents:
diff changeset
6304 <function id="SetFieldAccessWatch" num="41">
a61af66fc99e Initial load
duke
parents:
diff changeset
6305 <synopsis>Set Field Access Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6306 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6307 Generate a <eventlink id="FieldAccess"></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
6308 when the field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6309 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6310 <code>field</code> is about to be accessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
6311 An event will be generated for each access of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
6312 until it is canceled with
a61af66fc99e Initial load
duke
parents:
diff changeset
6313 <functionlink id="ClearFieldAccessWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6314 Field accesses from Java programming language code or from JNI code are watched,
a61af66fc99e Initial load
duke
parents:
diff changeset
6315 fields modified by other means are not watched.
a61af66fc99e Initial load
duke
parents:
diff changeset
6316 Note that <jvmti/> users should be aware that their own field accesses
a61af66fc99e Initial load
duke
parents:
diff changeset
6317 will trigger the watch.
a61af66fc99e Initial load
duke
parents:
diff changeset
6318 A field can only have one field access watch set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6319 Modification of a field is not considered an access--use
a61af66fc99e Initial load
duke
parents:
diff changeset
6320 <functionlink id="SetFieldModificationWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
6321 to monitor modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6322 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6323 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6324 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6325 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6326 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6327 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6328 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6329 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6330 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6331 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6332 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6333 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6334 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6335 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6336 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6337 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6338
a61af66fc99e Initial load
duke
parents:
diff changeset
6339 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6340 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6341 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6342 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6343 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6344 The designated field is already being watched for accesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
6345 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6346 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6347 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6348
a61af66fc99e Initial load
duke
parents:
diff changeset
6349 <function id="ClearFieldAccessWatch" num="42">
a61af66fc99e Initial load
duke
parents:
diff changeset
6350 <synopsis>Clear Field Access Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6351 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6352 Cancel a field access watch previously set by
a61af66fc99e Initial load
duke
parents:
diff changeset
6353 <functionlink id="SetFieldAccessWatch"></functionlink>, on the
a61af66fc99e Initial load
duke
parents:
diff changeset
6354 field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6355 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6356 <code>field</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6357 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6358 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6359 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6360 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6361 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6362 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6363 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6364 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6365 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6366 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6367 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6368 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6369 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6370 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6371 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6372 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6373
a61af66fc99e Initial load
duke
parents:
diff changeset
6374 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6375 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6376 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6377 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6378 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6379 The designated field is not being watched for accesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
6380 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6381 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6382 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6383
a61af66fc99e Initial load
duke
parents:
diff changeset
6384 <function id="SetFieldModificationWatch" num="43">
a61af66fc99e Initial load
duke
parents:
diff changeset
6385 <synopsis>Set Field Modification Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6386 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6387 Generate a <eventlink id="FieldModification"></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
6388 when the field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6389 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6390 <code>field</code> is about to be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
6391 An event will be generated for each modification of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
6392 until it is canceled with
a61af66fc99e Initial load
duke
parents:
diff changeset
6393 <functionlink id="ClearFieldModificationWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6394 Field modifications from Java programming language code or from JNI code are watched,
a61af66fc99e Initial load
duke
parents:
diff changeset
6395 fields modified by other means are not watched.
a61af66fc99e Initial load
duke
parents:
diff changeset
6396 Note that <jvmti/> users should be aware that their own field modifications
a61af66fc99e Initial load
duke
parents:
diff changeset
6397 will trigger the watch.
a61af66fc99e Initial load
duke
parents:
diff changeset
6398 A field can only have one field modification watch set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6399 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6400 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6401 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6402 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6403 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6404 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6405 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6406 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6407 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6408 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6409 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6410 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6411 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6412 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6413 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6414 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6415
a61af66fc99e Initial load
duke
parents:
diff changeset
6416 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6417 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6418 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6419 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6420 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6421 The designated field is already being watched for modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6422 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6423 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6424 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6425
a61af66fc99e Initial load
duke
parents:
diff changeset
6426 <function id="ClearFieldModificationWatch" num="44">
a61af66fc99e Initial load
duke
parents:
diff changeset
6427 <synopsis>Clear Field Modification Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6428 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6429
a61af66fc99e Initial load
duke
parents:
diff changeset
6430 Cancel a field modification watch previously set by
a61af66fc99e Initial load
duke
parents:
diff changeset
6431 <functionlink id="SetFieldModificationWatch"></functionlink>, on the
a61af66fc99e Initial load
duke
parents:
diff changeset
6432 field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6433 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6434 <code>field</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6435 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6436 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6437 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6438 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6439 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6440 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6441 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6442 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6443 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6444 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6445 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6446 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6447 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6448 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6449 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6450 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6451
a61af66fc99e Initial load
duke
parents:
diff changeset
6452 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6453 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6454 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6455 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6456 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6457 The designated field is not being watched for modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6458 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6459 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6460 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6461 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6462
a61af66fc99e Initial load
duke
parents:
diff changeset
6463 <category id="class" label="Class">
a61af66fc99e Initial load
duke
parents:
diff changeset
6464
a61af66fc99e Initial load
duke
parents:
diff changeset
6465 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6466 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6467
a61af66fc99e Initial load
duke
parents:
diff changeset
6468 <function id="GetLoadedClasses" jkernel="yes" num="78">
a61af66fc99e Initial load
duke
parents:
diff changeset
6469 <synopsis>Get Loaded Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6470 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6471 Return an array of all classes loaded in the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
6472 The number of classes in the array is returned via
a61af66fc99e Initial load
duke
parents:
diff changeset
6473 <code>class_count_ptr</code>, and the array itself via
a61af66fc99e Initial load
duke
parents:
diff changeset
6474 <code>classes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6475 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6476 Array classes of all types (including arrays of primitive types) are
a61af66fc99e Initial load
duke
parents:
diff changeset
6477 included in the returned list. Primitive classes (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
6478 <code>java.lang.Integer.TYPE</code>) are <i>not</i> included in this list.
a61af66fc99e Initial load
duke
parents:
diff changeset
6479 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6480 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6481 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6482 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6483 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6484 <param id="class_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6485 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6486 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6487 On return, points to the number of classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
6488 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6489 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6490 <param id="classes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6491 <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6492 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6493 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
6494 for each class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6495 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6496 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6497 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6498 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6499 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6500 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6501
a61af66fc99e Initial load
duke
parents:
diff changeset
6502 <function id="GetClassLoaderClasses" jkernel="yes" num="79">
a61af66fc99e Initial load
duke
parents:
diff changeset
6503 <synopsis>Get Classloader Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6504 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6505 Returns an array of those classes for which this class loader has
a61af66fc99e Initial load
duke
parents:
diff changeset
6506 been recorded as an initiating loader. Each
a61af66fc99e Initial load
duke
parents:
diff changeset
6507 class in the returned array was created by this class loader,
a61af66fc99e Initial load
duke
parents:
diff changeset
6508 either by defining it directly or by delegation to another class loader.
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
6509 See <vmspec chapter="5.3"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6510 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6511 For JDK version 1.1 implementations that don't
a61af66fc99e Initial load
duke
parents:
diff changeset
6512 recognize the distinction between initiating and defining class loaders,
a61af66fc99e Initial load
duke
parents:
diff changeset
6513 this function should return all classes loaded in the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
6514 The number of classes in the array is returned via
a61af66fc99e Initial load
duke
parents:
diff changeset
6515 <code>class_count_ptr</code>, and the array itself via
a61af66fc99e Initial load
duke
parents:
diff changeset
6516 <code>classes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6517 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6518 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6519 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6520 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6521 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6522 <param id="initiating_loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
6523 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
6524 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6525 <nullok>the classes initiated by the bootstrap loader will be returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6526 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
6527 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6528 An initiating class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
6529 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6530 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6531 <param id="class_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6532 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6533 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6534 On return, points to the number of classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
6535 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6536 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6537 <param id="classes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6538 <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6539 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6540 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
6541 for each class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6542 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6543 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6544 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6545 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6546 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6547 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6548
a61af66fc99e Initial load
duke
parents:
diff changeset
6549 <function id="GetClassSignature" phase="start" num="48">
a61af66fc99e Initial load
duke
parents:
diff changeset
6550 <synopsis>Get Class Signature</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6551 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6552 For the class indicated by <code>klass</code>, return the
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
6553 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp16432">JNI
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6554 type signature</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
6555 and the generic signature of the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6556 For example, <code>java.util.List</code> is <code>"Ljava/util/List;"</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6557 and <code>int[]</code> is <code>"[I"</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6558 The returned name for primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6559 is the type signature character of the corresponding primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
6560 For example, <code>java.lang.Integer.TYPE</code> is <code>"I"</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6561 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6562 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6563 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6564 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6565 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6566 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6567 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6568 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6569 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6570 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6571 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6572 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6573 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6574 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6575 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6576 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6577 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6578 On return, points to the JNI type signature of the class, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6579 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6580 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6581 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6582 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6583 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6584 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6585 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6586 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6587 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6588 On return, points to the generic signature of the class, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6589 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6590 If there is no generic signature attribute for the class, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
6591 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6592 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6593 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6594 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6595 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6596 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6597 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6598
a61af66fc99e Initial load
duke
parents:
diff changeset
6599 <function id="GetClassStatus" phase="start" num="49">
a61af66fc99e Initial load
duke
parents:
diff changeset
6600 <synopsis>Get Class Status</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6601 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6602 Get the status of the class. Zero or more of the following bits can be
a61af66fc99e Initial load
duke
parents:
diff changeset
6603 set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6604 <constants id="jvmtiClassStatus" label="Class Status Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
6605 <constant id="JVMTI_CLASS_STATUS_VERIFIED" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6606 Class bytecodes have been verified
a61af66fc99e Initial load
duke
parents:
diff changeset
6607 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6608 <constant id="JVMTI_CLASS_STATUS_PREPARED" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
6609 Class preparation is complete
a61af66fc99e Initial load
duke
parents:
diff changeset
6610 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6611 <constant id="JVMTI_CLASS_STATUS_INITIALIZED" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
6612 Class initialization is complete. Static initializer has been run.
a61af66fc99e Initial load
duke
parents:
diff changeset
6613 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6614 <constant id="JVMTI_CLASS_STATUS_ERROR" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
6615 Error during initialization makes class unusable
a61af66fc99e Initial load
duke
parents:
diff changeset
6616 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6617 <constant id="JVMTI_CLASS_STATUS_ARRAY" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
6618 Class is an array. If set, all other bits are zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
6619 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6620 <constant id="JVMTI_CLASS_STATUS_PRIMITIVE" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
6621 Class is a primitive class (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6622 If set, all other bits are zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
6623 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6624 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
6625 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6626 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6627 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6628 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6629 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6630 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6631 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6632 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6633 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6634 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6635 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6636 <param id="status_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6637 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6638 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6639 On return, points to the current state of this class as one or
a61af66fc99e Initial load
duke
parents:
diff changeset
6640 more of the <internallink id="jvmtiClassStatus">class status flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6641 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6642 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6643 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6644 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6645 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6646 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6647
a61af66fc99e Initial load
duke
parents:
diff changeset
6648 <function id="GetSourceFileName" phase="start" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
6649 <synopsis>Get Source File Name</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6650 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6651 For the class indicated by <code>klass</code>, return the source file
a61af66fc99e Initial load
duke
parents:
diff changeset
6652 name via <code>source_name_ptr</code>. The returned string
a61af66fc99e Initial load
duke
parents:
diff changeset
6653 is a file name only and never contains a directory name.
a61af66fc99e Initial load
duke
parents:
diff changeset
6654 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6655 For primitive classes (for example, <code>java.lang.Integer.TYPE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
6656 and for arrays this function returns
a61af66fc99e Initial load
duke
parents:
diff changeset
6657 <errorlink id="JVMTI_ERROR_ABSENT_INFORMATION"></errorlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6658 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6659 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6660 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6661 <required id="can_get_source_file_name"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6662 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6663 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6664 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6665 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6666 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6667 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6668 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6669 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6670 <param id="source_name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6671 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6672 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6673 On return, points to the class's source file name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6674 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6675 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6676 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6677 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6678 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6679 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6680 Class information does not include a source file name. This includes
a61af66fc99e Initial load
duke
parents:
diff changeset
6681 cases where the class is an array class or primitive class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6682 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6683 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6684 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6685
a61af66fc99e Initial load
duke
parents:
diff changeset
6686 <function id="GetClassModifiers" phase="start" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
6687 <synopsis>Get Class Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6688 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6689 For the class indicated by <code>klass</code>, return the access
a61af66fc99e Initial load
duke
parents:
diff changeset
6690 flags
a61af66fc99e Initial load
duke
parents:
diff changeset
6691 via <code>modifiers_ptr</code>.
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
6692 Access flags are defined in <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6693 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6694 If the class is an array class, then its public, private, and protected
a61af66fc99e Initial load
duke
parents:
diff changeset
6695 modifiers are the same as those of its component type. For arrays of
a61af66fc99e Initial load
duke
parents:
diff changeset
6696 primitives, this component type is represented by one of the primitive
a61af66fc99e Initial load
duke
parents:
diff changeset
6697 classes (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6698 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6699 If the class is a primitive class, its public modifier is always true,
a61af66fc99e Initial load
duke
parents:
diff changeset
6700 and its protected and private modifiers are always false.
a61af66fc99e Initial load
duke
parents:
diff changeset
6701 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6702 If the class is an array class or a primitive class then its final
a61af66fc99e Initial load
duke
parents:
diff changeset
6703 modifier is always true and its interface modifier is always false.
a61af66fc99e Initial load
duke
parents:
diff changeset
6704 The values of its other modifiers are not determined by this specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
6705
a61af66fc99e Initial load
duke
parents:
diff changeset
6706 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6707 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6708 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6709 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6710 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6711 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6712 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6713 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6714 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6715 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6716 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6717 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6718 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6719 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6720 On return, points to the current access flags of this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6721
a61af66fc99e Initial load
duke
parents:
diff changeset
6722 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6723 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6724 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6725 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6726 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6727 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6728
a61af66fc99e Initial load
duke
parents:
diff changeset
6729 <function id="GetClassMethods" phase="start" num="52">
a61af66fc99e Initial load
duke
parents:
diff changeset
6730 <synopsis>Get Class Methods</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6731 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6732 For the class indicated by <code>klass</code>, return a count of
a61af66fc99e Initial load
duke
parents:
diff changeset
6733 methods via <code>method_count_ptr</code> and a list of
a61af66fc99e Initial load
duke
parents:
diff changeset
6734 method IDs via <code>methods_ptr</code>. The method list contains
a61af66fc99e Initial load
duke
parents:
diff changeset
6735 constructors and static initializers as well as true methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
6736 Only directly declared methods are returned (not inherited methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
6737 An empty method list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6738 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6739 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6740 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6741 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6742 <capability id="can_maintain_original_method_order"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6743 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6744 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6745 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6746 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6747 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6748 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6749 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6750 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6751 <param id="method_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6752 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6753 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6754 On return, points to the number of methods declared in this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6755 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6756 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6757 <param id="methods_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6758 <allocbuf outcount="method_count_ptr"><jmethodID class="klass"/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6759 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6760 On return, points to the method ID array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6761 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6762 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6763 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6764 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6765 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6766 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6767 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6768 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6769 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6770
a61af66fc99e Initial load
duke
parents:
diff changeset
6771 <function id="GetClassFields" phase="start" num="53">
a61af66fc99e Initial load
duke
parents:
diff changeset
6772 <synopsis>Get Class Fields</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6773 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6774 For the class indicated by <code>klass</code>, return a count of fields
a61af66fc99e Initial load
duke
parents:
diff changeset
6775 via <code>field_count_ptr</code> and a list of field IDs via
a61af66fc99e Initial load
duke
parents:
diff changeset
6776 <code>fields_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6777 Only directly declared fields are returned (not inherited fields).
a61af66fc99e Initial load
duke
parents:
diff changeset
6778 Fields are returned in the order they occur in the class file.
a61af66fc99e Initial load
duke
parents:
diff changeset
6779 An empty field list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6780 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6781 Use JNI to determine the length of an array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6782 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6783 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6784 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6785 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6786 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6787 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6788 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6789 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6790 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6791 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6792 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6793 <param id="field_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6794 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6795 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6796 On return, points to the number of fields declared in this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6797 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6798 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6799 <param id="fields_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6800 <allocbuf outcount="field_count_ptr"><jfieldID/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6801 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6802 On return, points to the field ID array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6803 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6804 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6805 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6806 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6807 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6808 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6809 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6810 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6811 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6812
a61af66fc99e Initial load
duke
parents:
diff changeset
6813 <function id="GetImplementedInterfaces" phase="start" num="54">
a61af66fc99e Initial load
duke
parents:
diff changeset
6814 <synopsis>Get Implemented Interfaces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6815 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6816 Return the direct super-interfaces of this class. For a class, this
a61af66fc99e Initial load
duke
parents:
diff changeset
6817 function returns the interfaces declared in its <code>implements</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6818 clause. For an interface, this function returns the interfaces declared in
a61af66fc99e Initial load
duke
parents:
diff changeset
6819 its <code>extends</code> clause.
a61af66fc99e Initial load
duke
parents:
diff changeset
6820 An empty interface list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6821 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6822 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6823 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6824 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6825 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6826 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6827 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6828 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6829 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6830 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6831 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6832 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6833 <param id="interface_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6834 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6835 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6836 On return, points to the number of interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
6837 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6838 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6839 <param id="interfaces_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6840 <allocbuf outcount="interface_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6841 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6842 On return, points to the interface array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6843 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6844 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6845 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6846 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6847 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6848 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6849 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6850 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6851 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6852
a61af66fc99e Initial load
duke
parents:
diff changeset
6853 <function id="GetClassVersionNumbers" phase="start" num="145" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6854 <synopsis>Get Class Version Numbers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6855 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6856 For the class indicated by <code>klass</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6857 return the minor and major version numbers,
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
6858 as defined in
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
6859 <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6860 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6861 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6862 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6863 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6864 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6865 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6866 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6867 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6868 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6869 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6870 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6871 <param id="minor_version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6872 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6873 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6874 On return, points to the value of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6875 <code>minor_version</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6876 Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6877 Note: to be consistent with the Class File Format,
a61af66fc99e Initial load
duke
parents:
diff changeset
6878 the minor version number is the first parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
6879 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6880 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6881 <param id="major_version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6882 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6883 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6884 On return, points to the value of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6885 <code>major_version</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6886 Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6887 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6888 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6889 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6890 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6891 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6892 The class is a primitive or array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6893 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6894 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6895 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6896
a61af66fc99e Initial load
duke
parents:
diff changeset
6897 <function id="GetConstantPool" phase="start" num="146" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6898 <synopsis>Get Constant Pool</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6899 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6900 For the class indicated by <code>klass</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6901 return the raw bytes of the constant pool in the format of the
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
6902 <code>constant_pool</code> item of
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
6903 <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6904 The format of the constant pool may differ between versions
a61af66fc99e Initial load
duke
parents:
diff changeset
6905 of the Class File Format, so, the
a61af66fc99e Initial load
duke
parents:
diff changeset
6906 <functionlink id="GetClassVersionNumbers">minor and major
a61af66fc99e Initial load
duke
parents:
diff changeset
6907 class version numbers</functionlink> should be checked for
a61af66fc99e Initial load
duke
parents:
diff changeset
6908 compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
6909 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6910 The returned constant pool might not have the same layout or
a61af66fc99e Initial load
duke
parents:
diff changeset
6911 contents as the constant pool in the defining class file.
a61af66fc99e Initial load
duke
parents:
diff changeset
6912 The constant pool returned by GetConstantPool() may have
a61af66fc99e Initial load
duke
parents:
diff changeset
6913 more or fewer entries than the defining constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6914 Entries may be in a different order.
a61af66fc99e Initial load
duke
parents:
diff changeset
6915 The constant pool returned by GetConstantPool() will match the
a61af66fc99e Initial load
duke
parents:
diff changeset
6916 constant pool used by
a61af66fc99e Initial load
duke
parents:
diff changeset
6917 <functionlink id="GetBytecodes">GetBytecodes()</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6918 That is, the bytecodes returned by GetBytecodes() will have
a61af66fc99e Initial load
duke
parents:
diff changeset
6919 constant pool indices which refer to constant pool entries returned
a61af66fc99e Initial load
duke
parents:
diff changeset
6920 by GetConstantPool().
a61af66fc99e Initial load
duke
parents:
diff changeset
6921 Note that since <functionlink id="RetransformClasses"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6922 and <functionlink id="RedefineClasses"/> can change
a61af66fc99e Initial load
duke
parents:
diff changeset
6923 the constant pool, the constant pool returned by this function
a61af66fc99e Initial load
duke
parents:
diff changeset
6924 can change accordingly. Thus, the correspondence between
a61af66fc99e Initial load
duke
parents:
diff changeset
6925 GetConstantPool() and GetBytecodes() does not hold if there
a61af66fc99e Initial load
duke
parents:
diff changeset
6926 is an intervening class retransformation or redefinition.
a61af66fc99e Initial load
duke
parents:
diff changeset
6927 The value of a constant pool entry used by a given bytecode will
a61af66fc99e Initial load
duke
parents:
diff changeset
6928 match that of the defining class file (even if the indices don't match).
a61af66fc99e Initial load
duke
parents:
diff changeset
6929 Constant pool entries which are not used directly or indirectly by
a61af66fc99e Initial load
duke
parents:
diff changeset
6930 bytecodes (for example, UTF-8 strings associated with annotations) are
a61af66fc99e Initial load
duke
parents:
diff changeset
6931 not required to exist in the returned constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6932 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6933 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6934 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6935 <required id="can_get_constant_pool"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6936 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6937 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6938 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6939 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6940 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6941 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6942 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6943 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6944 <param id="constant_pool_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6945 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6946 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6947 On return, points to the number of entries
a61af66fc99e Initial load
duke
parents:
diff changeset
6948 in the constant pool table plus one.
a61af66fc99e Initial load
duke
parents:
diff changeset
6949 This corresponds to the <code>constant_pool_count</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6950 item of the Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6951 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6952 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6953 <param id="constant_pool_byte_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6954 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6955 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6956 On return, points to the number of bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
6957 in the returned raw constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6958 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6959 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6960 <param id="constant_pool_bytes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6961 <allocbuf outcount="constant_pool_byte_count_ptr"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6962 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6963 On return, points to the raw constant pool, that is the bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
6964 defined by the <code>constant_pool</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6965 Class File Format
a61af66fc99e Initial load
duke
parents:
diff changeset
6966 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6967 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6968 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6969 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6970 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6971 The class is a primitive or array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6972 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6973 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6974 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6975
a61af66fc99e Initial load
duke
parents:
diff changeset
6976 <function id="IsInterface" phase="start" num="55">
a61af66fc99e Initial load
duke
parents:
diff changeset
6977 <synopsis>Is Interface</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6978 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6979 Determines whether a class object reference represents an interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
6980 The <code>jboolean</code> result is
a61af66fc99e Initial load
duke
parents:
diff changeset
6981 <code>JNI_TRUE</code> if the "class" is actually an interface,
a61af66fc99e Initial load
duke
parents:
diff changeset
6982 <code>JNI_FALSE</code> otherwise.
a61af66fc99e Initial load
duke
parents:
diff changeset
6983 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6984 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6985 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6986 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6987 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6988 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6989 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6990 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6991 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6992 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6993 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6994 <param id="is_interface_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6995 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6996 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6997 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
6998
a61af66fc99e Initial load
duke
parents:
diff changeset
6999 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7000 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7001 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7002 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7003 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7004 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7005
a61af66fc99e Initial load
duke
parents:
diff changeset
7006 <function id="IsArrayClass" phase="start" num="56">
a61af66fc99e Initial load
duke
parents:
diff changeset
7007 <synopsis>Is Array Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7008 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7009 Determines whether a class object reference represents an array.
a61af66fc99e Initial load
duke
parents:
diff changeset
7010 The <code>jboolean</code> result is
a61af66fc99e Initial load
duke
parents:
diff changeset
7011 <code>JNI_TRUE</code> if the class is an array,
a61af66fc99e Initial load
duke
parents:
diff changeset
7012 <code>JNI_FALSE</code> otherwise.
a61af66fc99e Initial load
duke
parents:
diff changeset
7013 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7014 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7015 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7016 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7017 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7018 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7019 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7020 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7021 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7022 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7023 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7024 <param id="is_array_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7025 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7026 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7027 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7028
a61af66fc99e Initial load
duke
parents:
diff changeset
7029 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7030 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7031 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7032 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7033 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7034 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7035
a61af66fc99e Initial load
duke
parents:
diff changeset
7036 <function id="IsModifiableClass" jkernel="yes" phase="start" num="45" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
7037 <synopsis>Is Modifiable Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7038 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7039 Determines whether a class is modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
7040 If a class is modifiable (<paramlink id="is_modifiable_class_ptr"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7041 returns <code>JNI_TRUE</code>) the class can be
a61af66fc99e Initial load
duke
parents:
diff changeset
7042 redefined with <functionlink id="RedefineClasses"/> (assuming
a61af66fc99e Initial load
duke
parents:
diff changeset
7043 the agent possesses the
a61af66fc99e Initial load
duke
parents:
diff changeset
7044 <fieldlink id="can_redefine_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7045 capability) or
a61af66fc99e Initial load
duke
parents:
diff changeset
7046 retransformed with <functionlink id="RetransformClasses"/> (assuming
a61af66fc99e Initial load
duke
parents:
diff changeset
7047 the agent possesses the
a61af66fc99e Initial load
duke
parents:
diff changeset
7048 <fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7049 capability).
a61af66fc99e Initial load
duke
parents:
diff changeset
7050 If a class is not modifiable (<paramlink id="is_modifiable_class_ptr"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7051 returns <code>JNI_FALSE</code>) the class can be neither
a61af66fc99e Initial load
duke
parents:
diff changeset
7052 redefined nor retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7053 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7054 Primitive classes (for example, <code>java.lang.Integer.TYPE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7055 and array classes are never modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
7056 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7057 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7058 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7059 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7060 <capability id="can_redefine_any_class">
a61af66fc99e Initial load
duke
parents:
diff changeset
7061 If possessed then all classes (except primitive and array classes)
a61af66fc99e Initial load
duke
parents:
diff changeset
7062 are modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
7063 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7064 <capability id="can_redefine_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7065 No effect on the result of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7066 But must additionally be possessed to modify the class with
a61af66fc99e Initial load
duke
parents:
diff changeset
7067 <functionlink id="RedefineClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7068 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7069 <capability id="can_retransform_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7070 No effect on the result of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7071 But must additionally be possessed to modify the class with
a61af66fc99e Initial load
duke
parents:
diff changeset
7072 <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7073 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7074 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7075 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7076 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7077 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7078 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7079 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7080 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7081 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7082 <param id="is_modifiable_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7083 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7084 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7085 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7086 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7087 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7088 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7089 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7090 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7091 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7092
a61af66fc99e Initial load
duke
parents:
diff changeset
7093 <function id="GetClassLoader" phase="start" num="57">
a61af66fc99e Initial load
duke
parents:
diff changeset
7094 <synopsis>Get Class Loader</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7095 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7096 For the class indicated by <code>klass</code>, return via
a61af66fc99e Initial load
duke
parents:
diff changeset
7097 <code>classloader_ptr</code> a reference to the class loader for the
a61af66fc99e Initial load
duke
parents:
diff changeset
7098 class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7099 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7100 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7101 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7102 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7103 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7104 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7105 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7106 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7107 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7108 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7109 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7110 <param id="classloader_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7111 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7112 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7113 On return, points to the class loader that loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
7114 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7115 If the class was not created by a class loader
a61af66fc99e Initial load
duke
parents:
diff changeset
7116 or if the class loader is the bootstrap class loader,
a61af66fc99e Initial load
duke
parents:
diff changeset
7117 points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7118 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7119 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7120 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7121 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7122 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7123
a61af66fc99e Initial load
duke
parents:
diff changeset
7124 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7125
a61af66fc99e Initial load
duke
parents:
diff changeset
7126 <function id="GetSourceDebugExtension" phase="start" num="90">
a61af66fc99e Initial load
duke
parents:
diff changeset
7127 <synopsis>Get Source Debug Extension</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7128 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7129 For the class indicated by <code>klass</code>, return the debug
a61af66fc99e Initial load
duke
parents:
diff changeset
7130 extension via <code>source_debug_extension_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7131 The returned string
a61af66fc99e Initial load
duke
parents:
diff changeset
7132 contains exactly the debug extension information present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7133 class file of <code>klass</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7134 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7135 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7136 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7137 <required id="can_get_source_debug_extension"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7138 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7139 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7140 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7141 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7142 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7143 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7144 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7145 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7146 <param id="source_debug_extension_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7147 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7148 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7149 On return, points to the class's debug extension, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7150 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7151 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7152 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7153 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7154 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7155 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7156 Class information does not include a debug extension.
a61af66fc99e Initial load
duke
parents:
diff changeset
7157 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7158 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7159 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7160
a61af66fc99e Initial load
duke
parents:
diff changeset
7161 <function id="RetransformClasses" jkernel="yes" num="152" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
7162 <synopsis>Retransform Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7163 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7164 This function facilitates the
a61af66fc99e Initial load
duke
parents:
diff changeset
7165 <internallink id="bci">bytecode instrumentation</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7166 of already loaded classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7167 To replace the class definition without reference to the existing
a61af66fc99e Initial load
duke
parents:
diff changeset
7168 bytecodes, as one might do when recompiling from source for
a61af66fc99e Initial load
duke
parents:
diff changeset
7169 fix-and-continue debugging, <functionlink id="RedefineClasses"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7170 function should be used instead.
a61af66fc99e Initial load
duke
parents:
diff changeset
7171 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7172 When classes are initially loaded or when they are
a61af66fc99e Initial load
duke
parents:
diff changeset
7173 <functionlink id="RedefineClasses">redefined</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7174 the initial class file bytes can be transformed with the
a61af66fc99e Initial load
duke
parents:
diff changeset
7175 <eventlink id="ClassFileLoadHook"/> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
7176 This function reruns the transformation process
a61af66fc99e Initial load
duke
parents:
diff changeset
7177 (whether or not a transformation has previously occurred).
a61af66fc99e Initial load
duke
parents:
diff changeset
7178 This retransformation follows these steps:
a61af66fc99e Initial load
duke
parents:
diff changeset
7179 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7180 <li>starting from the initial class file bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
7181 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7182 <li>for each <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
7183 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
7184 incapable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7185 agent which received a
a61af66fc99e Initial load
duke
parents:
diff changeset
7186 <code>ClassFileLoadHook</code> event during the previous
a61af66fc99e Initial load
duke
parents:
diff changeset
7187 load or redefine, the bytes it returned
a61af66fc99e Initial load
duke
parents:
diff changeset
7188 (via the <code>new_class_data</code> parameter)
a61af66fc99e Initial load
duke
parents:
diff changeset
7189 are reused as the output of the transformation;
a61af66fc99e Initial load
duke
parents:
diff changeset
7190 note that this is equivalent to reapplying
a61af66fc99e Initial load
duke
parents:
diff changeset
7191 the previous transformation, unaltered. except that
a61af66fc99e Initial load
duke
parents:
diff changeset
7192 the <code>ClassFileLoadHook</code> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7193 is <b>not</b> sent to these agents
a61af66fc99e Initial load
duke
parents:
diff changeset
7194 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7195 <li>for each <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
7196 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
7197 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7198 agent, the <code>ClassFileLoadHook</code> event is sent,
a61af66fc99e Initial load
duke
parents:
diff changeset
7199 allowing a new transformation to be applied
a61af66fc99e Initial load
duke
parents:
diff changeset
7200 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7201 <li>the transformed class file bytes are installed as the new
a61af66fc99e Initial load
duke
parents:
diff changeset
7202 definition of the class
a61af66fc99e Initial load
duke
parents:
diff changeset
7203 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7204 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7205 See the <eventlink id="ClassFileLoadHook"/> event for more details.
a61af66fc99e Initial load
duke
parents:
diff changeset
7206 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7207 The initial class file bytes represent the bytes passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
7208 <code>ClassLoader.defineClass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7209 or <code>RedefineClasses</code> (before any transformations
a61af66fc99e Initial load
duke
parents:
diff changeset
7210 were applied), however they may not exactly match them.
a61af66fc99e Initial load
duke
parents:
diff changeset
7211 The constant pool may differ in ways described in
a61af66fc99e Initial load
duke
parents:
diff changeset
7212 <functionlink id="GetConstantPool"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7213 Constant pool indices in the bytecodes of methods will correspond.
a61af66fc99e Initial load
duke
parents:
diff changeset
7214 Some attributes may not be present.
a61af66fc99e Initial load
duke
parents:
diff changeset
7215 Where order is not meaningful, for example the order of methods,
a61af66fc99e Initial load
duke
parents:
diff changeset
7216 order may not be preserved.
a61af66fc99e Initial load
duke
parents:
diff changeset
7217 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7218 Retransformation can cause new versions of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7219 Old method versions may become
a61af66fc99e Initial load
duke
parents:
diff changeset
7220 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7221 The new method version will be used on new invokes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7222 If a method has active stack frames, those active frames continue to
a61af66fc99e Initial load
duke
parents:
diff changeset
7223 run the bytecodes of the original method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7224 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7225 This function does not cause any initialization except that which
a61af66fc99e Initial load
duke
parents:
diff changeset
7226 would occur under the customary JVM semantics.
a61af66fc99e Initial load
duke
parents:
diff changeset
7227 In other words, retransforming a class does not cause its initializers to be
a61af66fc99e Initial load
duke
parents:
diff changeset
7228 run. The values of static fields will remain as they were
a61af66fc99e Initial load
duke
parents:
diff changeset
7229 prior to the call.
a61af66fc99e Initial load
duke
parents:
diff changeset
7230 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7231 Threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
7232 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7233 All breakpoints in the class are cleared.
a61af66fc99e Initial load
duke
parents:
diff changeset
7234 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7235 All attributes are updated.
a61af66fc99e Initial load
duke
parents:
diff changeset
7236 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7237 Instances of the retransformed class are not affected -- fields retain their
a61af66fc99e Initial load
duke
parents:
diff changeset
7238 previous values.
a61af66fc99e Initial load
duke
parents:
diff changeset
7239 <functionlink id="GetTag">Tags</functionlink> on the instances are
a61af66fc99e Initial load
duke
parents:
diff changeset
7240 also unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
7241 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7242 In response to this call, no events other than the
a61af66fc99e Initial load
duke
parents:
diff changeset
7243 <eventlink id="ClassFileLoadHook"/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7244 will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
7245 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7246 The retransformation may change method bodies, the constant pool and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7247 The retransformation must not add, remove or rename fields or methods, change the
a61af66fc99e Initial load
duke
parents:
diff changeset
7248 signatures of methods, change modifiers, or change inheritance.
a61af66fc99e Initial load
duke
parents:
diff changeset
7249 These restrictions may be lifted in future versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7250 See the error return description below for information on error codes
a61af66fc99e Initial load
duke
parents:
diff changeset
7251 returned if an unsupported retransformation is attempted.
a61af66fc99e Initial load
duke
parents:
diff changeset
7252 The class file bytes are not verified or installed until they have passed
a61af66fc99e Initial load
duke
parents:
diff changeset
7253 through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
a61af66fc99e Initial load
duke
parents:
diff changeset
7254 returned error code reflects the result of the transformations.
a61af66fc99e Initial load
duke
parents:
diff changeset
7255 If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7256 none of the classes to be retransformed will have a new definition installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7257 When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7258 all of the classes to be retransformed will have their new definitions installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7259 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7260 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7261 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7262 <required id="can_retransform_classes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7263 <capability id="can_retransform_any_class"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7264 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7265 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7266 <param id="class_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7267 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7268 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7269 The number of classes to be retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7270 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7271 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7272 <param id="classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7273 <inbuf incount="class_count"><jclass/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7274 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7275 The array of classes to be retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7276 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7277 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7278 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7279 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7280 <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7281 One of the <paramlink id="classes"/> cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
7282 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7283 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7284 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7285 One of the <paramlink id="classes"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7286 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7287 <error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7288 A retransformed class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7289 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7290 <error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
a61af66fc99e Initial load
duke
parents:
diff changeset
7291 A retransformed class file is malformed (The VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7292 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7293 <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7294 The retransformed class file definitions would lead to a circular definition
a61af66fc99e Initial load
duke
parents:
diff changeset
7295 (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7296 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7297 <error id="JVMTI_ERROR_FAILS_VERIFICATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7298 The retransformed class file bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
7299 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7300 <error id="JVMTI_ERROR_NAMES_DONT_MATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
7301 The class name defined in a retransformed class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
7302 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7303 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7304 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7305 A retransformed class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
7306 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7307 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7308 A retransformed class file changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
7309 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7310 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7311 A direct superclass is different for a retransformed class file,
a61af66fc99e Initial load
duke
parents:
diff changeset
7312 or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
7313 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
7314 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7315 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7316 A retransformed class file does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
7317 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7318 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7319 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7320 A retransformed class file has different class modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
7321 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7322 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7323 A method in the retransformed class file has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
7324 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7325 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7326 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7327 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7328
a61af66fc99e Initial load
duke
parents:
diff changeset
7329 <function id="RedefineClasses" jkernel="yes" num="87">
a61af66fc99e Initial load
duke
parents:
diff changeset
7330 <synopsis>Redefine Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7331 <typedef id="jvmtiClassDefinition" label="Class redefinition description">
a61af66fc99e Initial load
duke
parents:
diff changeset
7332 <field id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7333 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7334 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7335 Class object for this class
a61af66fc99e Initial load
duke
parents:
diff changeset
7336 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7337 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7338 <field id="class_byte_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7339 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7340 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7341 Number of bytes defining class (below)
a61af66fc99e Initial load
duke
parents:
diff changeset
7342 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7343 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7344 <field id="class_bytes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7345 <inbuf incount="class_byte_count"><uchar/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7346 <description>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7347 Bytes defining class (in <vmspec chapter="4"/>)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7348 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7349 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7350 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
7351 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7352 All classes given are redefined according to the definitions
a61af66fc99e Initial load
duke
parents:
diff changeset
7353 supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
7354 This function is used to replace the definition of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
7355 with a new definition, as might be needed in fix-and-continue
a61af66fc99e Initial load
duke
parents:
diff changeset
7356 debugging.
a61af66fc99e Initial load
duke
parents:
diff changeset
7357 Where the existing class file bytes are to be transformed, for
a61af66fc99e Initial load
duke
parents:
diff changeset
7358 example in
a61af66fc99e Initial load
duke
parents:
diff changeset
7359 <internallink id="bci">bytecode instrumentation</internallink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7360 <functionlink id="RetransformClasses"/> should be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
7361 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7362 Redefinition can cause new versions of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7363 Old method versions may become
a61af66fc99e Initial load
duke
parents:
diff changeset
7364 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7365 The new method version will be used on new invokes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7366 If a method has active stack frames, those active frames continue to
a61af66fc99e Initial load
duke
parents:
diff changeset
7367 run the bytecodes of the original method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7368 If resetting of stack frames is desired, use
a61af66fc99e Initial load
duke
parents:
diff changeset
7369 <functionlink id="PopFrame"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7370 to pop frames with obsolete method versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7371 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7372 This function does not cause any initialization except that which
a61af66fc99e Initial load
duke
parents:
diff changeset
7373 would occur under the customary JVM semantics.
a61af66fc99e Initial load
duke
parents:
diff changeset
7374 In other words, redefining a class does not cause its initializers to be
a61af66fc99e Initial load
duke
parents:
diff changeset
7375 run. The values of static fields will remain as they were
a61af66fc99e Initial load
duke
parents:
diff changeset
7376 prior to the call.
a61af66fc99e Initial load
duke
parents:
diff changeset
7377 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7378 Threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
7379 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7380 All breakpoints in the class are cleared.
a61af66fc99e Initial load
duke
parents:
diff changeset
7381 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7382 All attributes are updated.
a61af66fc99e Initial load
duke
parents:
diff changeset
7383 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7384 Instances of the redefined class are not affected -- fields retain their
a61af66fc99e Initial load
duke
parents:
diff changeset
7385 previous values.
a61af66fc99e Initial load
duke
parents:
diff changeset
7386 <functionlink id="GetTag">Tags</functionlink> on the instances are
a61af66fc99e Initial load
duke
parents:
diff changeset
7387 also unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
7388 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7389 In response to this call, the <jvmti/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7390 <eventlink id="ClassFileLoadHook">Class File Load Hook</eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7391 will be sent (if enabled), but no other <jvmti/> events will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
7392 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7393 The redefinition may change method bodies, the constant pool and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7394 The redefinition must not add, remove or rename fields or methods, change the
a61af66fc99e Initial load
duke
parents:
diff changeset
7395 signatures of methods, change modifiers, or change inheritance.
a61af66fc99e Initial load
duke
parents:
diff changeset
7396 These restrictions may be lifted in future versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7397 See the error return description below for information on error codes
a61af66fc99e Initial load
duke
parents:
diff changeset
7398 returned if an unsupported redefinition is attempted.
a61af66fc99e Initial load
duke
parents:
diff changeset
7399 The class file bytes are not verified or installed until they have passed
a61af66fc99e Initial load
duke
parents:
diff changeset
7400 through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
a61af66fc99e Initial load
duke
parents:
diff changeset
7401 returned error code reflects the result of the transformations applied
a61af66fc99e Initial load
duke
parents:
diff changeset
7402 to the bytes passed into <paramlink id="class_definitions"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7403 If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7404 none of the classes to be redefined will have a new definition installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7405 When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7406 all of the classes to be redefined will have their new definitions installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7407 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7408 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7409 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7410 <required id="can_redefine_classes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7411 <capability id="can_redefine_any_class"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7412 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7413 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7414 <param id="class_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7415 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7416 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7417 The number of classes specified in <code>class_definitions</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7418 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7419 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7420 <param id="class_definitions">
a61af66fc99e Initial load
duke
parents:
diff changeset
7421 <inbuf incount="class_count"><struct>jvmtiClassDefinition</struct></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7422 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7423 The array of new class definitions
a61af66fc99e Initial load
duke
parents:
diff changeset
7424 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7425 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7426 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7427 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7428 <error id="JVMTI_ERROR_NULL_POINTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
7429 One of <code>class_bytes</code> is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7430 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7431 <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7432 An element of <code>class_definitions</code> cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
7433 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7434 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7435 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7436 An element of <code>class_definitions</code> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7437 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7438 <error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7439 A new class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7440 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7441 <error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
a61af66fc99e Initial load
duke
parents:
diff changeset
7442 A new class file is malformed (The VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7443 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7444 <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7445 The new class file definitions would lead to a circular definition
a61af66fc99e Initial load
duke
parents:
diff changeset
7446 (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7447 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7448 <error id="JVMTI_ERROR_FAILS_VERIFICATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7449 The class bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
7450 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7451 <error id="JVMTI_ERROR_NAMES_DONT_MATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
7452 The class name defined in a new class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
7453 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7454 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7455 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7456 A new class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
7457 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7458 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7459 A new class version changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
7460 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7461 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7462 A direct superclass is different for a new class
a61af66fc99e Initial load
duke
parents:
diff changeset
7463 version, or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
7464 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
7465 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7466 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7467 A new class version does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
7468 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7469 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7470 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7471 A new class version has different modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
7472 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7473 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7474 A method in the new class version has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
7475 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7476 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7477 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7478 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7479
a61af66fc99e Initial load
duke
parents:
diff changeset
7480 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7481
a61af66fc99e Initial load
duke
parents:
diff changeset
7482 <category id="object" label="Object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7483
a61af66fc99e Initial load
duke
parents:
diff changeset
7484 <function id="GetObjectSize" jkernel="yes" phase="start" num="154">
a61af66fc99e Initial load
duke
parents:
diff changeset
7485 <synopsis>Get Object Size</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7486 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7487 For the object indicated by <code>object</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7488 return via <code>size_ptr</code> the size of the object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7489 This size is an implementation-specific approximation of
a61af66fc99e Initial load
duke
parents:
diff changeset
7490 the amount of storage consumed by this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7491 It may include some or all of the object's overhead, and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
7492 is useful for comparison within an implementation but not
a61af66fc99e Initial load
duke
parents:
diff changeset
7493 between implementations.
a61af66fc99e Initial load
duke
parents:
diff changeset
7494 The estimate may change during a single invocation of the JVM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7495 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7496 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7497 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7498 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7499 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7500 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7501 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7502 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7503 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7504 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7505 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7506 <param id="size_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7507 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7508 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7509 On return, points to the object's size in bytes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7510 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7511 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7512 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7513 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7514 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7515 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7516
a61af66fc99e Initial load
duke
parents:
diff changeset
7517 <function id="GetObjectHashCode" phase="start" num="58">
a61af66fc99e Initial load
duke
parents:
diff changeset
7518 <synopsis>Get Object Hash Code</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7519 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7520 For the object indicated by <code>object</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7521 return via <code>hash_code_ptr</code> a hash code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7522 This hash code could be used to maintain a hash table of object references,
a61af66fc99e Initial load
duke
parents:
diff changeset
7523 however, on some implementations this can cause significant performance
a61af66fc99e Initial load
duke
parents:
diff changeset
7524 impacts--in most cases
a61af66fc99e Initial load
duke
parents:
diff changeset
7525 <internallink id="Heap">tags</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7526 will be a more efficient means of associating information with objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
7527 This function guarantees
a61af66fc99e Initial load
duke
parents:
diff changeset
7528 the same hash code value for a particular object throughout its life
a61af66fc99e Initial load
duke
parents:
diff changeset
7529 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7530 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7531 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7532 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7533 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7534 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7535 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7536 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7537 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7538 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7539 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7540 <param id="hash_code_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7541 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7542 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7543 On return, points to the object's hash code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7544 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7545 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7546 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7547 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7548 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7549 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7550
a61af66fc99e Initial load
duke
parents:
diff changeset
7551 <function id="GetObjectMonitorUsage" num="59">
a61af66fc99e Initial load
duke
parents:
diff changeset
7552 <synopsis>Get Object Monitor Usage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7553 <typedef id="jvmtiMonitorUsage" label="Object monitor usage information">
a61af66fc99e Initial load
duke
parents:
diff changeset
7554 <field id="owner">
a61af66fc99e Initial load
duke
parents:
diff changeset
7555 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7556 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7557 The thread owning this monitor, or <code>NULL</code> if unused
a61af66fc99e Initial load
duke
parents:
diff changeset
7558 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7559 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7560 <field id="entry_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7561 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7562 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7563 The number of times the owning thread has entered the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7564 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7565 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7566 <field id="waiter_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7567 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7568 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7569 The number of threads waiting to own this monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7570 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7571 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7572 <field id="waiters">
a61af66fc99e Initial load
duke
parents:
diff changeset
7573 <allocfieldbuf><jthread/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7574 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7575 The <code>waiter_count</code> waiting threads
a61af66fc99e Initial load
duke
parents:
diff changeset
7576 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7577 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7578 <field id="notify_waiter_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7579 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7580 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7581 The number of threads waiting to be notified by this monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7582 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7583 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7584 <field id="notify_waiters">
a61af66fc99e Initial load
duke
parents:
diff changeset
7585 <allocfieldbuf><jthread/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7586 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7587 The <code>notify_waiter_count</code> threads waiting to be notified
a61af66fc99e Initial load
duke
parents:
diff changeset
7588 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7589 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7590 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
7591 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7592 Get information about the object's monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
7593 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
7594 are filled in with information about usage of the monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
7595 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
7596 Decide and then clarify suspend requirements.
a61af66fc99e Initial load
duke
parents:
diff changeset
7597 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
7598 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7599 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7600 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7601 <required id="can_get_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7602 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7603 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7604 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7605 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7606 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7607 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7608 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7609 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7610 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7611 <outptr><struct>jvmtiMonitorUsage</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7612 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7613 On return, filled with monitor information for the
a61af66fc99e Initial load
duke
parents:
diff changeset
7614 specified object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7615 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7616 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7617 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7618 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7619 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7620 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7621
a61af66fc99e Initial load
duke
parents:
diff changeset
7622 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
7623 <function id="GetObjectMonitors" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
7624 <synopsis>Get Object Monitors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7625 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7626 Return the list of object monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
7627 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7628 Note: details about each monitor can be examined with
a61af66fc99e Initial load
duke
parents:
diff changeset
7629 <functionlink id="GetObjectMonitorUsage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7630 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7631 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7632 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7633 <required id="can_get_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7634 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7635 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7636 <param id="monitorCnt">
a61af66fc99e Initial load
duke
parents:
diff changeset
7637 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7638 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7639 On return, pointer to the number
a61af66fc99e Initial load
duke
parents:
diff changeset
7640 of monitors returned in <code>monitors_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7641 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7642 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7643 <param id="monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7644 <allocbuf outcount="monitorCnt"><jobject/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7645 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7646 On return, pointer to the monitor list.
a61af66fc99e Initial load
duke
parents:
diff changeset
7647 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7648 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7649 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7650 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7651 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7652 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7653 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
7654
a61af66fc99e Initial load
duke
parents:
diff changeset
7655 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7656
a61af66fc99e Initial load
duke
parents:
diff changeset
7657 <category id="fieldCategory" label="Field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7658
a61af66fc99e Initial load
duke
parents:
diff changeset
7659 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7660 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7661
a61af66fc99e Initial load
duke
parents:
diff changeset
7662 <function id="GetFieldName" phase="start" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
7663 <synopsis>Get Field Name (and Signature)</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7664 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7665 For the field indicated by <paramlink id="klass"/> and <paramlink id="field"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7666 return the field name via <paramlink id="name_ptr"/> and field signature via
a61af66fc99e Initial load
duke
parents:
diff changeset
7667 <paramlink id="signature_ptr"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7668 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7669 Field signatures are defined in the JNI Specification and
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7670 are referred to as <code>field descriptors</code> in
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7671 <vmspec chapter="4.3.2"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7672 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7673 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7674 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7675 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7676 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7677 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7678 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7679 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7680 The class of the field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7681 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7682 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7683 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7684 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7685 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7686 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7687 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7688 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7689 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7690 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7691 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7692 <nullok>the name is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7693 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7694 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7695 On return, points to the field name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7696 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7697 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7698 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7699 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7700 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7701 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7702 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7703 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7704 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7705 On return, points to the field signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7706 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7707 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7708 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7709 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7710 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7711 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7712 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7713 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7714 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7715 On return, points to the generic signature of the field, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7716 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7717 If there is no generic signature attribute for the field, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
7718 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7719 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7720 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7721 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7722 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7723 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7724 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7725
a61af66fc99e Initial load
duke
parents:
diff changeset
7726 <function id="GetFieldDeclaringClass" phase="start" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
7727 <synopsis>Get Field Declaring Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7728 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7729 For the field indicated by <code>klass</code> and <code>field</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7730 return the class that defined it via <code>declaring_class_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7731 The declaring class will either be <code>klass</code>, a superclass, or
a61af66fc99e Initial load
duke
parents:
diff changeset
7732 an implemented interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
7733 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7734 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7735 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7736 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7737 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7738 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7739 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7740 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7741 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7742 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7743 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7744 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7745 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7746 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7747 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7748 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7749 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7750 <param id="declaring_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7751 <outptr><jclass/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7752 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7753 On return, points to the declaring class
a61af66fc99e Initial load
duke
parents:
diff changeset
7754 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7755 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7756 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7757 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7758 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7759 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7760
a61af66fc99e Initial load
duke
parents:
diff changeset
7761 <function id="GetFieldModifiers" phase="start" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
7762 <synopsis>Get Field Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7763 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7764 For the field indicated by <code>klass</code> and <code>field</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7765 return the access flags via <code>modifiers_ptr</code>.
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7766 Access flags are defined in <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7767 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7768 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7769 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7770 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7771 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7772 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7773 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7774 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7775 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7776 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7777 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7778 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7779 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7780 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7781 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7782 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7783 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7784 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7785 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7786 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7787 On return, points to the access flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
7788 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7789 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7790 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7791 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7792 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7793 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7794
a61af66fc99e Initial load
duke
parents:
diff changeset
7795 <function id="IsFieldSynthetic" phase="start" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
7796 <synopsis>Is Field Synthetic</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7797 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7798 For the field indicated by <code>klass</code> and <code>field</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
7799 value indicating whether the field is synthetic via <code>is_synthetic_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7800 Synthetic fields are generated by the compiler but not present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7801 original source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7802 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7803 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7804 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7805 <required id="can_get_synthetic_attribute"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7806 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7807 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7808 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7809 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7810 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7811 The class of the field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7812 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7813 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7814 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7815 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7816 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7817 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7818 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7819 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7820 <param id="is_synthetic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7821 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7822 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7823 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7824 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7825 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7826 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7827 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7828 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7829 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7830
a61af66fc99e Initial load
duke
parents:
diff changeset
7831 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7832
a61af66fc99e Initial load
duke
parents:
diff changeset
7833 <category id="method" label="Method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7834
a61af66fc99e Initial load
duke
parents:
diff changeset
7835 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7836 These functions provide information about a method (represented as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7837 <typelink id="jmethodID"/>) and set how methods are processed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7838 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7839
a61af66fc99e Initial load
duke
parents:
diff changeset
7840 <intro id="obsoleteMethods" label="Obsolete Methods">
a61af66fc99e Initial load
duke
parents:
diff changeset
7841 The functions <functionlink id="RetransformClasses"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
7842 <functionlink id="RedefineClasses"/> can cause new versions
a61af66fc99e Initial load
duke
parents:
diff changeset
7843 of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7844 An original version of a method is considered equivalent
a61af66fc99e Initial load
duke
parents:
diff changeset
7845 to the new version if:
a61af66fc99e Initial load
duke
parents:
diff changeset
7846 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7847 <li>their bytecodes are the same except for indices into the
a61af66fc99e Initial load
duke
parents:
diff changeset
7848 constant pool and </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7849 <li>the referenced constants are equal.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7850 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7851 An original method version which is not equivalent to the
a61af66fc99e Initial load
duke
parents:
diff changeset
7852 new method version is called obsolete and is assigned a new method ID;
a61af66fc99e Initial load
duke
parents:
diff changeset
7853 the original method ID now refers to the new method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7854 A method ID can be tested for obsolescence with
a61af66fc99e Initial load
duke
parents:
diff changeset
7855 <functionlink id="IsMethodObsolete"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7856 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7857
a61af66fc99e Initial load
duke
parents:
diff changeset
7858 <function id="GetMethodName" phase="start" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
7859 <synopsis>Get Method Name (and Signature)</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7860 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7861 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7862 return the method name via <code>name_ptr</code> and method signature via
a61af66fc99e Initial load
duke
parents:
diff changeset
7863 <code>signature_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7864 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7865 Method signatures are defined in the JNI Specification and are
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7866 referred to as <code>method descriptors</code> in
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7867 <vmspec chapter="4.3.3"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7868 Note this is different
a61af66fc99e Initial load
duke
parents:
diff changeset
7869 than method signatures as defined in the <i>Java Language Specification</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7870 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7871 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7872 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7873 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7874 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7875 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7876 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7877 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7878 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7879 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7880 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7881 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7882 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7883 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7884 <nullok>the name is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7885 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7886 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7887 On return, points to the method name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7888 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7889 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7890 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7891 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7892 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7893 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7894 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7895 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7896 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7897 On return, points to the method signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7898 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7899 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7900 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7901 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7902 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7903 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7904 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7905 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7906 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7907 On return, points to the generic signature of the method, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7908 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7909 If there is no generic signature attribute for the method, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
7910 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7911 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7912 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7913 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7914 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7915 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7916 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7917
a61af66fc99e Initial load
duke
parents:
diff changeset
7918 <function id="GetMethodDeclaringClass" phase="start" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
7919 <synopsis>Get Method Declaring Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7920 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7921 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7922 return the class that defined it via <code>declaring_class_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7923 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7924 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7925 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7926 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7927 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7928 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7929 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7930 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7931 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7932 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7933 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7934 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7935 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7936 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7937 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7938 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7939 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7940 <param id="declaring_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7941 <outptr><jclass/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7942 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7943 On return, points to the declaring class
a61af66fc99e Initial load
duke
parents:
diff changeset
7944 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7945 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7946 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7947 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7948 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7949 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7950
a61af66fc99e Initial load
duke
parents:
diff changeset
7951 <function id="GetMethodModifiers" phase="start" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
7952 <synopsis>Get Method Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7953 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7954 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7955 return the access flags via <code>modifiers_ptr</code>.
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7956 Access flags are defined in <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7957 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7958 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7959 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7960 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7961 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7962 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7963 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7964 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7965 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7966 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7967 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7968 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7969 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7970 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7971 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7972 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7973 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7974 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7975 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7976 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7977 On return, points to the access flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
7978 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7979 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7980 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7981 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7982 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7983 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7984
a61af66fc99e Initial load
duke
parents:
diff changeset
7985 <function id="GetMaxLocals" phase="start" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
7986 <synopsis>Get Max Locals</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7987 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7988 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7989 return the number of local variable slots used by the method,
a61af66fc99e Initial load
duke
parents:
diff changeset
7990 including the local variables used to pass parameters to the
a61af66fc99e Initial load
duke
parents:
diff changeset
7991 method on its invocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
7992 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7993 See <code>max_locals</code> in <vmspec chapter="4.7.3"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7994 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7995 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7996 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7997 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7998 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7999 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8000 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8001 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8002 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8003 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8004 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8005 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8006 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8007 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8008 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8009 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8010 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8011 <param id="max_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8012 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8013 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8014 On return, points to the maximum number of local slots
a61af66fc99e Initial load
duke
parents:
diff changeset
8015 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8016 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8017 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8018 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8019 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8020 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8021
a61af66fc99e Initial load
duke
parents:
diff changeset
8022 <function id="GetArgumentsSize" phase="start" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
8023 <synopsis>Get Arguments Size</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8024 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8025 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8026 return via <code>max_ptr</code> the number of local variable slots used
a61af66fc99e Initial load
duke
parents:
diff changeset
8027 by the method's arguments.
a61af66fc99e Initial load
duke
parents:
diff changeset
8028 Note that two-word arguments use two slots.
a61af66fc99e Initial load
duke
parents:
diff changeset
8029 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8030 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8031 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8032 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8033 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8034 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8035 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8036 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8037 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8038 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8039 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8040 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8041 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8042 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8043 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8044 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8045 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8046 <param id="size_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8047 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8048 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8049 On return, points to the number of argument slots
a61af66fc99e Initial load
duke
parents:
diff changeset
8050 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8051 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8052 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8053 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8054 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8055 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8056
a61af66fc99e Initial load
duke
parents:
diff changeset
8057 <function id="GetLineNumberTable" phase="start" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
8058 <synopsis>Get Line Number Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8059 <typedef id="jvmtiLineNumberEntry" label="Line number table entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
8060 <field id="start_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
8061 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8062 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8063 the <datalink id="jlocation"></datalink> where the line begins
a61af66fc99e Initial load
duke
parents:
diff changeset
8064 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8065 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8066 <field id="line_number">
a61af66fc99e Initial load
duke
parents:
diff changeset
8067 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8068 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8069 the line number
a61af66fc99e Initial load
duke
parents:
diff changeset
8070 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8071 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8072 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
8073 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8074 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8075 return a table of source line number entries. The size of the table is
a61af66fc99e Initial load
duke
parents:
diff changeset
8076 returned via <code>entry_count_ptr</code> and the table itself is
a61af66fc99e Initial load
duke
parents:
diff changeset
8077 returned via <code>table_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8078 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8079 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8080 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8081 <required id="can_get_line_numbers"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8082 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8083 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8084 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8085 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8086 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8087 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8088 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8089 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8090 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8091 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8092 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8093 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8094 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8095 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8096 <param id="entry_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8097 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8098 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8099 On return, points to the number of entries in the table
a61af66fc99e Initial load
duke
parents:
diff changeset
8100 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8101 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8102 <param id="table_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8103 <allocbuf outcount="entry_count_ptr"><struct>jvmtiLineNumberEntry</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8104 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8105 On return, points to the line number table pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
8106 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8107 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8108 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8109 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8110 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8111 Class information does not include line numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
8112 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8113 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8114 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8115
a61af66fc99e Initial load
duke
parents:
diff changeset
8116 <function id="GetMethodLocation" phase="start" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
8117 <synopsis>Get Method Location</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8118 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8119 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8120 return the beginning and ending addresses through
a61af66fc99e Initial load
duke
parents:
diff changeset
8121 <code>start_location_ptr</code> and <code>end_location_ptr</code>. In a
a61af66fc99e Initial load
duke
parents:
diff changeset
8122 conventional byte code indexing scheme,
a61af66fc99e Initial load
duke
parents:
diff changeset
8123 <code>start_location_ptr</code> will always point to zero
a61af66fc99e Initial load
duke
parents:
diff changeset
8124 and <code>end_location_ptr</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8125 will always point to the byte code count minus one.
a61af66fc99e Initial load
duke
parents:
diff changeset
8126 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8127 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8128 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8129 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8130 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8131 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8132 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8133 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8134 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8135 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8136 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8137 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8138 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8139 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8140 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8141 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8142 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8143 <param id="start_location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8144 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8145 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8146 On return, points to the first location, or
a61af66fc99e Initial load
duke
parents:
diff changeset
8147 <code>-1</code> if location information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
8148 If the information is available and
a61af66fc99e Initial load
duke
parents:
diff changeset
8149 <functionlink id="GetJLocationFormat"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8150 returns <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8151 then this will always be zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
8152 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8153 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8154 <param id="end_location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8155 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8156 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8157 On return, points to the last location,
a61af66fc99e Initial load
duke
parents:
diff changeset
8158 or <code>-1</code> if location information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
8159 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8160 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8161 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8162 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8163 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8164 Class information does not include method sizes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8165 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8166 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8167 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8168
a61af66fc99e Initial load
duke
parents:
diff changeset
8169 <function id="GetLocalVariableTable" num="72">
a61af66fc99e Initial load
duke
parents:
diff changeset
8170 <synopsis>Get Local Variable Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8171 <typedef id="jvmtiLocalVariableEntry" label="Local variable table entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
8172 <field id="start_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
8173 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8174 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8175 The code array index where the local variable is first valid
a61af66fc99e Initial load
duke
parents:
diff changeset
8176 (that is, where it must have a value).
a61af66fc99e Initial load
duke
parents:
diff changeset
8177 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8178 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8179 <field id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
8180 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8181 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8182 The length of the valid section for this local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
8183 The last code array index where the local variable is valid
a61af66fc99e Initial load
duke
parents:
diff changeset
8184 is <code>start_location + length</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8185 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8186 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8187 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
8188 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8189 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8190 The local variable name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8191 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8192 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8193 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8194 <field id="signature">
a61af66fc99e Initial load
duke
parents:
diff changeset
8195 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8196 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8197 The local variable's type signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8198 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8199 The signature format is the same as that defined in
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
8200 <vmspec chapter="4.3.2"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
8201 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8202 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8203 <field id="generic_signature">
a61af66fc99e Initial load
duke
parents:
diff changeset
8204 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8205 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8206 The local variable's generic signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8207 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8208 The value of this field will be <code>NULL</code> for any local
a61af66fc99e Initial load
duke
parents:
diff changeset
8209 variable which does not have a generic type.
a61af66fc99e Initial load
duke
parents:
diff changeset
8210 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8211 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8212 <field id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
8213 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8214 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8215 The local variable's slot. See <internallink id="local">Local Variables</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8216 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8217 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8218 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
8219 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8220 Return local variable information.
a61af66fc99e Initial load
duke
parents:
diff changeset
8221 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8222 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8223 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8224 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8225 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8226 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8227 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8228 <jmethodID native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8229 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8230 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8231 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8232 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8233 <param id="entry_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8234 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8235 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8236 On return, points to the number of entries in the table
a61af66fc99e Initial load
duke
parents:
diff changeset
8237 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8238 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8239 <param id="table_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8240 <allocbuf outcount="entry_count_ptr"><struct>jvmtiLocalVariableEntry</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8241 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8242 On return, points to an array of local variable table entries.
a61af66fc99e Initial load
duke
parents:
diff changeset
8243 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8244 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8245 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8246 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8247 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8248 Class information does not include local variable
a61af66fc99e Initial load
duke
parents:
diff changeset
8249 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
8250 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8251 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8252 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8253
a61af66fc99e Initial load
duke
parents:
diff changeset
8254 <function id="GetBytecodes" phase="start" num="75">
a61af66fc99e Initial load
duke
parents:
diff changeset
8255 <synopsis>Get Bytecodes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8256 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8257 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8258 return the byte codes that implement the method. The number of
a61af66fc99e Initial load
duke
parents:
diff changeset
8259 bytecodes is returned via <code>bytecode_count_ptr</code>. The byte codes
a61af66fc99e Initial load
duke
parents:
diff changeset
8260 themselves are returned via <code>bytecodes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8261 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8262 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8263 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8264 <required id="can_get_bytecodes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8265 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8266 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8267 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8268 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8269 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8270 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8271 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8272 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8273 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8274 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8275 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8276 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8277 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8278 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8279 <param id="bytecode_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8280 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8281 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8282 On return, points to the length of the byte code array
a61af66fc99e Initial load
duke
parents:
diff changeset
8283 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8284 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8285 <param id="bytecodes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8286 <allocbuf outcount="bytecode_count_ptr"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8287 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8288 On return, points to the pointer to the byte code array
a61af66fc99e Initial load
duke
parents:
diff changeset
8289 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8290 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8291 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8292 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8293 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8294 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8295
a61af66fc99e Initial load
duke
parents:
diff changeset
8296 <function id="IsMethodNative" phase="start" num="76">
a61af66fc99e Initial load
duke
parents:
diff changeset
8297 <synopsis>Is Method Native</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8298 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8299 For the method indicated by <code>method</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
8300 value indicating whether the method is native via <code>is_native_ptr</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8301 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8302 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8303 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8304 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8305 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8306 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8307 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8308 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8309 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8310 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8311 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8312 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8313 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8314 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8315 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8316 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8317 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8318 <param id="is_native_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8319 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8320 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8321 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8322 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8323 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8324 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8325 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8326 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8327 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8328
a61af66fc99e Initial load
duke
parents:
diff changeset
8329 <function id="IsMethodSynthetic" phase="start" num="77">
a61af66fc99e Initial load
duke
parents:
diff changeset
8330 <synopsis>Is Method Synthetic</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8331 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8332 For the method indicated by <code>method</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
8333 value indicating whether the method is synthetic via <code>is_synthetic_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8334 Synthetic methods are generated by the compiler but not present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
8335 original source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
8336 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8337 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8338 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8339 <required id="can_get_synthetic_attribute"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8340 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8341 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8342 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8343 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8344 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8345 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8346 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8347 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8348 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8349 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8350 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8351 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8352 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8353 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8354 <param id="is_synthetic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8355 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8356 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8357 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8358 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8359 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8360 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8361 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8362 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8363 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8364
a61af66fc99e Initial load
duke
parents:
diff changeset
8365 <function id="IsMethodObsolete" phase="start" num="91">
a61af66fc99e Initial load
duke
parents:
diff changeset
8366 <synopsis>Is Method Obsolete</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8367 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8368 Determine if a method ID refers to an
a61af66fc99e Initial load
duke
parents:
diff changeset
8369 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8370 method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
8371 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8372 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8373 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8374 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8375 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8376 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8377 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8378 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8379 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8380 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8381 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8382 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8383 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8384 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8385 The method ID to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8386 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8387 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8388 <param id="is_obsolete_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8389 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8390 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8391 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8392 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8393 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8394 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8395 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8396 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8397 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8398
a61af66fc99e Initial load
duke
parents:
diff changeset
8399 <function id="SetNativeMethodPrefix" jkernel="yes" phase="any" num="73" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8400 <synopsis>Set Native Method Prefix</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8401 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8402 This function modifies the failure handling of
a61af66fc99e Initial load
duke
parents:
diff changeset
8403 native method resolution by allowing retry
a61af66fc99e Initial load
duke
parents:
diff changeset
8404 with a prefix applied to the name.
a61af66fc99e Initial load
duke
parents:
diff changeset
8405 When used with the
a61af66fc99e Initial load
duke
parents:
diff changeset
8406 <eventlink id="ClassFileLoadHook">ClassFileLoadHook
a61af66fc99e Initial load
duke
parents:
diff changeset
8407 event</eventlink>, it enables native methods to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8408 <internallink id="bci">instrumented</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8409 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8410 Since native methods cannot be directly instrumented
a61af66fc99e Initial load
duke
parents:
diff changeset
8411 (they have no bytecodes), they must be wrapped with
a61af66fc99e Initial load
duke
parents:
diff changeset
8412 a non-native method which can be instrumented.
a61af66fc99e Initial load
duke
parents:
diff changeset
8413 For example, if we had:
a61af66fc99e Initial load
duke
parents:
diff changeset
8414 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8415 native boolean foo(int x);</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8416 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8417 We could transform the class file (with the
a61af66fc99e Initial load
duke
parents:
diff changeset
8418 ClassFileLoadHook event) so that this becomes:
a61af66fc99e Initial load
duke
parents:
diff changeset
8419 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8420 boolean foo(int x) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8421 <i>... record entry to foo ...</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
8422 return wrapped_foo(x);
a61af66fc99e Initial load
duke
parents:
diff changeset
8423 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8424
a61af66fc99e Initial load
duke
parents:
diff changeset
8425 native boolean wrapped_foo(int x);</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8426 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8427 Where foo becomes a wrapper for the actual native method
a61af66fc99e Initial load
duke
parents:
diff changeset
8428 with the appended prefix "wrapped_". Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
8429 "wrapped_" would be a poor choice of prefix since it
a61af66fc99e Initial load
duke
parents:
diff changeset
8430 might conceivably form the name of an existing method
a61af66fc99e Initial load
duke
parents:
diff changeset
8431 thus something like "$$$MyAgentWrapped$$$_" would be
a61af66fc99e Initial load
duke
parents:
diff changeset
8432 better but would make these examples less readable.
a61af66fc99e Initial load
duke
parents:
diff changeset
8433 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8434 The wrapper will allow data to be collected on the native
a61af66fc99e Initial load
duke
parents:
diff changeset
8435 method call, but now the problem becomes linking up the
a61af66fc99e Initial load
duke
parents:
diff changeset
8436 wrapped method with the native implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8437 That is, the method <code>wrapped_foo</code> needs to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8438 resolved to the native implementation of <code>foo</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8439 which might be:
a61af66fc99e Initial load
duke
parents:
diff changeset
8440 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8441 Java_somePackage_someClass_foo(JNIEnv* env, jint x)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8442 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8443 This function allows the prefix to be specified and the
a61af66fc99e Initial load
duke
parents:
diff changeset
8444 proper resolution to occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
8445 Specifically, when the standard resolution fails, the
a61af66fc99e Initial load
duke
parents:
diff changeset
8446 resolution is retried taking the prefix into consideration.
a61af66fc99e Initial load
duke
parents:
diff changeset
8447 There are two ways that resolution occurs, explicit
a61af66fc99e Initial load
duke
parents:
diff changeset
8448 resolution with the JNI function <code>RegisterNatives</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8449 and the normal automatic resolution. For
a61af66fc99e Initial load
duke
parents:
diff changeset
8450 <code>RegisterNatives</code>, the VM will attempt this
a61af66fc99e Initial load
duke
parents:
diff changeset
8451 association:
a61af66fc99e Initial load
duke
parents:
diff changeset
8452 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8453 method(foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8454 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8455 When this fails, the resolution will be retried with
a61af66fc99e Initial load
duke
parents:
diff changeset
8456 the specified prefix prepended to the method name,
a61af66fc99e Initial load
duke
parents:
diff changeset
8457 yielding the correct resolution:
a61af66fc99e Initial load
duke
parents:
diff changeset
8458 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8459 method(wrapped_foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8460 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8461 For automatic resolution, the VM will attempt:
a61af66fc99e Initial load
duke
parents:
diff changeset
8462 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8463 method(wrapped_foo) -> nativeImplementation(wrapped_foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8464 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8465 When this fails, the resolution will be retried with
a61af66fc99e Initial load
duke
parents:
diff changeset
8466 the specified prefix deleted from the implementation name,
a61af66fc99e Initial load
duke
parents:
diff changeset
8467 yielding the correct resolution:
a61af66fc99e Initial load
duke
parents:
diff changeset
8468 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8469 method(wrapped_foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8470 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8471 Note that since the prefix is only used when standard
a61af66fc99e Initial load
duke
parents:
diff changeset
8472 resolution fails, native methods can be wrapped selectively.
a61af66fc99e Initial load
duke
parents:
diff changeset
8473 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8474 Since each <jvmti/> environment is independent and
a61af66fc99e Initial load
duke
parents:
diff changeset
8475 can do its own transformation of the bytecodes, more
a61af66fc99e Initial load
duke
parents:
diff changeset
8476 than one layer of wrappers may be applied. Thus each
a61af66fc99e Initial load
duke
parents:
diff changeset
8477 environment needs its own prefix. Since transformations
a61af66fc99e Initial load
duke
parents:
diff changeset
8478 are applied in order, the prefixes, if applied, will
a61af66fc99e Initial load
duke
parents:
diff changeset
8479 be applied in the same order.
a61af66fc99e Initial load
duke
parents:
diff changeset
8480 The order of transformation application is described in
a61af66fc99e Initial load
duke
parents:
diff changeset
8481 the <eventlink id="ClassFileLoadHook"/> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
8482 Thus if three environments applied
a61af66fc99e Initial load
duke
parents:
diff changeset
8483 wrappers, <code>foo</code> might become
a61af66fc99e Initial load
duke
parents:
diff changeset
8484 <code>$env3_$env2_$env1_foo</code>. But if, say,
a61af66fc99e Initial load
duke
parents:
diff changeset
8485 the second environment did not apply a wrapper to
a61af66fc99e Initial load
duke
parents:
diff changeset
8486 <code>foo</code> it would be just
a61af66fc99e Initial load
duke
parents:
diff changeset
8487 <code>$env3_$env1_foo</code>. To be able to
a61af66fc99e Initial load
duke
parents:
diff changeset
8488 efficiently determine the sequence of prefixes,
a61af66fc99e Initial load
duke
parents:
diff changeset
8489 an intermediate prefix is only applied if its non-native
a61af66fc99e Initial load
duke
parents:
diff changeset
8490 wrapper exists. Thus, in the last example, even though
a61af66fc99e Initial load
duke
parents:
diff changeset
8491 <code>$env1_foo</code> is not a native method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
8492 <code>$env1_</code> prefix is applied since
a61af66fc99e Initial load
duke
parents:
diff changeset
8493 <code>$env1_foo</code> exists.
a61af66fc99e Initial load
duke
parents:
diff changeset
8494 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8495 Since the prefixes are used at resolution time
a61af66fc99e Initial load
duke
parents:
diff changeset
8496 and since resolution may be arbitrarily delayed, a
a61af66fc99e Initial load
duke
parents:
diff changeset
8497 native method prefix must remain set as long as there
a61af66fc99e Initial load
duke
parents:
diff changeset
8498 are corresponding prefixed native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
8499 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8500 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8501 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8502 <required id="can_set_native_method_prefix"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8503 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8504 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8505 <param id="prefix">
a61af66fc99e Initial load
duke
parents:
diff changeset
8506 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8507 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8508 <nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8509 any existing prefix in this environment is cancelled
a61af66fc99e Initial load
duke
parents:
diff changeset
8510 </nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8511 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8512 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8513 The prefix to apply, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8514 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8515 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8516 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8517 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8518 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8519 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8520 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8521
a61af66fc99e Initial load
duke
parents:
diff changeset
8522 <function id="SetNativeMethodPrefixes" jkernel="yes" phase="any" num="74" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8523 <synopsis>Set Native Method Prefixes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8524 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8525 For a normal agent, <functionlink id="SetNativeMethodPrefix"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8526 will provide all needed native method prefixing.
a61af66fc99e Initial load
duke
parents:
diff changeset
8527 For a meta-agent that performs multiple independent class
a61af66fc99e Initial load
duke
parents:
diff changeset
8528 file transformations (for example as a proxy for another
a61af66fc99e Initial load
duke
parents:
diff changeset
8529 layer of agents) this function allows each transformation
a61af66fc99e Initial load
duke
parents:
diff changeset
8530 to have its own prefix.
a61af66fc99e Initial load
duke
parents:
diff changeset
8531 The prefixes are applied in the order supplied and are
a61af66fc99e Initial load
duke
parents:
diff changeset
8532 processed in the same manor as described for the
a61af66fc99e Initial load
duke
parents:
diff changeset
8533 application of prefixes from multiple <jvmti/> environments
a61af66fc99e Initial load
duke
parents:
diff changeset
8534 in <functionlink id="SetNativeMethodPrefix"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8535 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8536 Any previous prefixes are replaced. Thus, calling this
a61af66fc99e Initial load
duke
parents:
diff changeset
8537 function with a <paramlink id="prefix_count"/> of <code>0</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8538 disables prefixing in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
8539 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8540 <functionlink id="SetNativeMethodPrefix"/> and this function
a61af66fc99e Initial load
duke
parents:
diff changeset
8541 are the two ways to set the prefixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8542 Calling <code>SetNativeMethodPrefix</code> with
a61af66fc99e Initial load
duke
parents:
diff changeset
8543 a prefix is the same as calling this function with
a61af66fc99e Initial load
duke
parents:
diff changeset
8544 <paramlink id="prefix_count"/> of <code>1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8545 Calling <code>SetNativeMethodPrefix</code> with
a61af66fc99e Initial load
duke
parents:
diff changeset
8546 <code>NULL</code> is the same as calling this function with
a61af66fc99e Initial load
duke
parents:
diff changeset
8547 <paramlink id="prefix_count"/> of <code>0</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8548 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8549 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8550 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8551 <required id="can_set_native_method_prefix"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8552 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8553 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8554 <param id="prefix_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
8555 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8556 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8557 The number of prefixes to apply.
a61af66fc99e Initial load
duke
parents:
diff changeset
8558 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8559 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8560 <param id="prefixes">
a61af66fc99e Initial load
duke
parents:
diff changeset
8561 <agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8562 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8563 </agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8564 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8565 The prefixes to apply for this environment, each encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8566 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8567 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8568 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8569 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8570 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8571 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8572 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8573
a61af66fc99e Initial load
duke
parents:
diff changeset
8574 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8575
a61af66fc99e Initial load
duke
parents:
diff changeset
8576 <category id="RawMonitors" label="Raw Monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8577
a61af66fc99e Initial load
duke
parents:
diff changeset
8578 <function id="CreateRawMonitor" phase="onload" callbacksafe="safe" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
8579 <synopsis>Create Raw Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8580 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8581 Create a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8582 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8583 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8584 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8585 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8586 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8587 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
8588 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8589 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8590 A name to identify the monitor, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8591 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8592 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8593 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8594 <param id="monitor_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8595 <outptr><jrawMonitorID/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8596 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8597 On return, points to the created monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8598 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8599 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8600 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8601 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8602 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8603 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8604
a61af66fc99e Initial load
duke
parents:
diff changeset
8605 <function id="DestroyRawMonitor" phase="onload" callbacksafe="safe" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
8606 <synopsis>Destroy Raw Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8607 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8608 Destroy the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8609 If the monitor being destroyed has been entered by this thread, it will be
a61af66fc99e Initial load
duke
parents:
diff changeset
8610 exited before it is destroyed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8611 If the monitor being destroyed has been entered by another thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
8612 an error will be returned and the monitor will not be destroyed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8613 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8614 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8615 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8616 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8617 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8618 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8619 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8620 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8621 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8622 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8623 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8624 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8625 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8626 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8627 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8628 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8629 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8630 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8631
a61af66fc99e Initial load
duke
parents:
diff changeset
8632 <function id="RawMonitorEnter" phase="any" callbacksafe="safe" impl="innative notrace" num="33">
a61af66fc99e Initial load
duke
parents:
diff changeset
8633 <synopsis>Raw Monitor Enter</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8634 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8635 Gain exclusive ownership of a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8636 The same thread may enter a monitor more then once.
a61af66fc99e Initial load
duke
parents:
diff changeset
8637 The thread must
a61af66fc99e Initial load
duke
parents:
diff changeset
8638 <functionlink id="RawMonitorExit">exit</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8639 the monitor the same number of times as it is entered.
a61af66fc99e Initial load
duke
parents:
diff changeset
8640 If a monitor is entered during <code>OnLoad</code> (before attached threads exist)
a61af66fc99e Initial load
duke
parents:
diff changeset
8641 and has not exited when attached threads come into existence, the enter
a61af66fc99e Initial load
duke
parents:
diff changeset
8642 is considered to have occurred on the main thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
8643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8644 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8645 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8646 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8647 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8648 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8649 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8650 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8651 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8652 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8653 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8654 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8655 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8656 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8657 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8658
a61af66fc99e Initial load
duke
parents:
diff changeset
8659 <function id="RawMonitorExit" phase="any" callbacksafe="safe" impl="innative notrace" num="34">
a61af66fc99e Initial load
duke
parents:
diff changeset
8660 <synopsis>Raw Monitor Exit</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8661 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8662 Release exclusive ownership of a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8663 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8664 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8665 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8666 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8667 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8668 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8669 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8670 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8671 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8672 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8673 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8674 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8675 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8676 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8677 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8678 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8679 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8680 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8681
a61af66fc99e Initial load
duke
parents:
diff changeset
8682 <function id="RawMonitorWait" phase="any" callbacksafe="safe" impl="innative notrace" num="35">
a61af66fc99e Initial load
duke
parents:
diff changeset
8683 <synopsis>Raw Monitor Wait</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8684 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8685 Wait for notification of the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8686 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8687 Causes the current thread to wait until either another thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
8688 <functionlink id="RawMonitorNotify"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
8689 <functionlink id="RawMonitorNotifyAll"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8690 for the specified raw monitor, or the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
8691 <paramlink id="millis">timeout</paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8692 has elapsed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8693 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8694 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8695 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8696 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8697 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8698 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8699 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8700 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8701 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8702 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8703 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8704 <param id="millis">
a61af66fc99e Initial load
duke
parents:
diff changeset
8705 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8706 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8707 The timeout, in milliseconds. If the timeout is
a61af66fc99e Initial load
duke
parents:
diff changeset
8708 zero, then real time is not taken into consideration
a61af66fc99e Initial load
duke
parents:
diff changeset
8709 and the thread simply waits until notified.
a61af66fc99e Initial load
duke
parents:
diff changeset
8710 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8711 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8712 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8713 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8714 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8715 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8716 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8717 <error id="JVMTI_ERROR_INTERRUPT">
a61af66fc99e Initial load
duke
parents:
diff changeset
8718 Wait was interrupted, try again
a61af66fc99e Initial load
duke
parents:
diff changeset
8719 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8720 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8721 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8722
a61af66fc99e Initial load
duke
parents:
diff changeset
8723 <function id="RawMonitorNotify" phase="any" callbacksafe="safe" impl="notrace" num="36">
a61af66fc99e Initial load
duke
parents:
diff changeset
8724 <synopsis>Raw Monitor Notify</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8725 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8726 Notify a single thread waiting on the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8727 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8728 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8729 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8730 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8731 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8732 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8733 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8734 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8735 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8736 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8737 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8738 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8739 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8740 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8741 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8742 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8743 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8744 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8745
a61af66fc99e Initial load
duke
parents:
diff changeset
8746 <function id="RawMonitorNotifyAll" phase="any" callbacksafe="safe" impl="notrace" num="37">
a61af66fc99e Initial load
duke
parents:
diff changeset
8747 <synopsis>Raw Monitor Notify All</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8748 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8749 Notify all threads waiting on the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8750 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8751 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8752 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8753 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8754 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8755 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8756 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8757 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8758 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8759 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8760 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8761 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8762 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8763 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8764 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8765 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8766 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8767 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8768
a61af66fc99e Initial load
duke
parents:
diff changeset
8769 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
8770 <function id="GetRawMonitorUse" num="118">
a61af66fc99e Initial load
duke
parents:
diff changeset
8771 <synopsis>Get Raw Monitor Use</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8772 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8773 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
8774 are filled in with information about usage of the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8775 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8776 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8777 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8778 <required id="can_get_raw_monitor_usage"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8779 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8780 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8781 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8782 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8783 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8784 the raw monitor to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8785 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8786 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8787 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8788 <outptr><struct>jvmtiMonitorUsage</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8789 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8790 On return, filled with monitor information for the
a61af66fc99e Initial load
duke
parents:
diff changeset
8791 specified raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8792 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8793 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8794 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8795 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8796 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8797 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8798
a61af66fc99e Initial load
duke
parents:
diff changeset
8799 <function id="GetRawMonitors" num="119">
a61af66fc99e Initial load
duke
parents:
diff changeset
8800 <synopsis>Get Raw Monitors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8801 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8802 Return the list of raw monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
8803 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8804 Note: details about each monitor can be examined with
a61af66fc99e Initial load
duke
parents:
diff changeset
8805 <functionlink id="GetRawMonitorUse"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8806 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8807 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8808 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8809 <required id="can_get_raw_monitor_usage"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8810 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8811 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8812 <param id="monitorCnt">
a61af66fc99e Initial load
duke
parents:
diff changeset
8813 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8814 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8815 On return, pointer to the number
a61af66fc99e Initial load
duke
parents:
diff changeset
8816 of monitors returned in <code>monitors_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8817 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8818 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8819 <param id="monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8820 <allocbuf outcount="monitorCnt"><jrawMonitorID/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8821 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8822 On return, pointer to the monitor list.
a61af66fc99e Initial load
duke
parents:
diff changeset
8823 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8824 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8825 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8826 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8827 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8828 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8829 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
8830 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8831
a61af66fc99e Initial load
duke
parents:
diff changeset
8832 <category id="jniIntercept" label="JNI Function Interception">
a61af66fc99e Initial load
duke
parents:
diff changeset
8833
a61af66fc99e Initial load
duke
parents:
diff changeset
8834 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
8835 Provides the ability to intercept and resend
a61af66fc99e Initial load
duke
parents:
diff changeset
8836 Java Native Interface (JNI) function calls
a61af66fc99e Initial load
duke
parents:
diff changeset
8837 by manipulating the JNI function table.
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
8838 See <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html">JNI
0
a61af66fc99e Initial load
duke
parents:
diff changeset
8839 Functions</externallink> in the <i>Java Native Interface Specification</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8840 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8841 The following example illustrates intercepting the
a61af66fc99e Initial load
duke
parents:
diff changeset
8842 <code>NewGlobalRef</code> JNI call in order to count reference
a61af66fc99e Initial load
duke
parents:
diff changeset
8843 creation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8844 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8845 JNIEnv original_jni_Functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
8846 JNIEnv redirected_jni_Functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
8847 int my_global_ref_count = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
8848
a61af66fc99e Initial load
duke
parents:
diff changeset
8849 jobject
a61af66fc99e Initial load
duke
parents:
diff changeset
8850 MyNewGlobalRef(JNIEnv *jni_env, jobject lobj) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8851 ++my_global_ref_count;
a61af66fc99e Initial load
duke
parents:
diff changeset
8852 return originalJNIFunctions-&gt;NewGlobalRef(env, lobj);
a61af66fc99e Initial load
duke
parents:
diff changeset
8853 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8854
a61af66fc99e Initial load
duke
parents:
diff changeset
8855 void
a61af66fc99e Initial load
duke
parents:
diff changeset
8856 myInit() {
a61af66fc99e Initial load
duke
parents:
diff changeset
8857 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
8858
a61af66fc99e Initial load
duke
parents:
diff changeset
8859 err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;original_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8860 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8861 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8862 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8863 err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;redirected_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8864 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8865 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8866 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8867 redirectedJNIFunctions-&gt;NewGlobalRef = MyNewGlobalRef;
a61af66fc99e Initial load
duke
parents:
diff changeset
8868 err = (*jvmti_env)-&gt;SetJNIFunctionTable(jvmti_env, redirected_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8869 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8870 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8871 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8872 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8873 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8874 Sometime after <code>myInit</code> is called the user's JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
8875 code is executed which makes the call to create a new global
a61af66fc99e Initial load
duke
parents:
diff changeset
8876 reference. Instead of going to the normal JNI implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
8877 the call goes to <code>myNewGlobalRef</code>. Note that a
a61af66fc99e Initial load
duke
parents:
diff changeset
8878 copy of the original function table is kept so that the normal
a61af66fc99e Initial load
duke
parents:
diff changeset
8879 JNI function can be called after the data is collected.
a61af66fc99e Initial load
duke
parents:
diff changeset
8880 Note also that any JNI functions which are not overwritten
a61af66fc99e Initial load
duke
parents:
diff changeset
8881 will behave normally.
a61af66fc99e Initial load
duke
parents:
diff changeset
8882 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
8883 check that the example compiles and executes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8884 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
8885 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
8886
a61af66fc99e Initial load
duke
parents:
diff changeset
8887 <function id="SetJNIFunctionTable" phase="start" num="120">
a61af66fc99e Initial load
duke
parents:
diff changeset
8888 <synopsis>Set JNI Function Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8889 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8890 Set the JNI function table
a61af66fc99e Initial load
duke
parents:
diff changeset
8891 in all current and future JNI environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
8892 As a result, all future JNI calls are directed to the specified functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
8893 Use <functionlink id="GetJNIFunctionTable"></functionlink> to get the
a61af66fc99e Initial load
duke
parents:
diff changeset
8894 function table to pass to this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8895 For this function to take effect the the updated table entries must be
a61af66fc99e Initial load
duke
parents:
diff changeset
8896 used by the JNI clients.
a61af66fc99e Initial load
duke
parents:
diff changeset
8897 Since the table is defined <code>const</code> some compilers may optimize
a61af66fc99e Initial load
duke
parents:
diff changeset
8898 away the access to the table, thus preventing this function from taking
a61af66fc99e Initial load
duke
parents:
diff changeset
8899 effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8900 The table is copied--changes to the local copy of the
a61af66fc99e Initial load
duke
parents:
diff changeset
8901 table have no effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8902 This function affects only the function table, all other aspects of the environment are
a61af66fc99e Initial load
duke
parents:
diff changeset
8903 unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
8904 See the examples <internallink id="jniIntercept">above</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8905 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8906 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8907 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8908 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8909 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8910 <param id="function_table">
a61af66fc99e Initial load
duke
parents:
diff changeset
8911 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8912 <struct>jniNativeInterface</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8913 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8914 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8915 Points to the new JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8916 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8917 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8918 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8919 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8920 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8921 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8922
a61af66fc99e Initial load
duke
parents:
diff changeset
8923 <function id="GetJNIFunctionTable" phase="start" num="121">
a61af66fc99e Initial load
duke
parents:
diff changeset
8924 <synopsis>Get JNI Function Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8925 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8926 Get the JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8927 The JNI function table is copied into allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
8928 If <functionlink id="SetJNIFunctionTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8929 has been called, the modified (not the original) function
a61af66fc99e Initial load
duke
parents:
diff changeset
8930 table is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
8931 Only the function table is copied, no other aspects of the environment
a61af66fc99e Initial load
duke
parents:
diff changeset
8932 are copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
8933 See the examples <internallink id="jniIntercept">above</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8934 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8935 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8936 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8937 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8938 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8939 <param id="function_table">
a61af66fc99e Initial load
duke
parents:
diff changeset
8940 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8941 <struct>jniNativeInterface</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8942 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8943 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8944 On return, <code>*function_table</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8945 points a newly allocated copy of the JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8946 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8947 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8948 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8949 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8950 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8951 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8952
a61af66fc99e Initial load
duke
parents:
diff changeset
8953 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8954
a61af66fc99e Initial load
duke
parents:
diff changeset
8955 <category id="eventManagement" label="Event Management">
a61af66fc99e Initial load
duke
parents:
diff changeset
8956
a61af66fc99e Initial load
duke
parents:
diff changeset
8957 <function id="SetEventCallbacks" jkernel="yes" phase="onload" num="122">
a61af66fc99e Initial load
duke
parents:
diff changeset
8958 <synopsis>Set Event Callbacks</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8959 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8960 Set the functions to be called for each event.
a61af66fc99e Initial load
duke
parents:
diff changeset
8961 The callbacks are specified by supplying a replacement function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8962 The function table is copied--changes to the local copy of the
a61af66fc99e Initial load
duke
parents:
diff changeset
8963 table have no effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8964 This is an atomic action, all callbacks are set at once.
a61af66fc99e Initial load
duke
parents:
diff changeset
8965 No events are sent before this function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
8966 When an entry is <code>NULL</code> or when the event is beyond
a61af66fc99e Initial load
duke
parents:
diff changeset
8967 <paramlink id="size_of_callbacks"></paramlink> no event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
8968 Details on events are
a61af66fc99e Initial load
duke
parents:
diff changeset
8969 described <internallink id="EventSection">later</internallink> in this document.
a61af66fc99e Initial load
duke
parents:
diff changeset
8970 An event must be enabled and have a callback in order to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8971 sent--the order in which this function and
a61af66fc99e Initial load
duke
parents:
diff changeset
8972 <functionlink id="SetEventNotificationMode"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8973 are called does not affect the result.
a61af66fc99e Initial load
duke
parents:
diff changeset
8974 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8975 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8976 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8977 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8978 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8979 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
8980 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8981 <struct>jvmtiEventCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8982 <nullok>remove the existing callbacks</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8983 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8984 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8985 The new event callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
8986 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8987 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8988 <param id="size_of_callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
8989 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8990 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8991 <code>sizeof(jvmtiEventCallbacks)</code>--for version
a61af66fc99e Initial load
duke
parents:
diff changeset
8992 compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
8993 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8994 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8995 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8996 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8997 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8998 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8999
a61af66fc99e Initial load
duke
parents:
diff changeset
9000 <function id="SetEventNotificationMode" jkernel="yes" phase="onload" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
9001 <synopsis>Set Event Notification Mode</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9002 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9003 Control the generation of events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9004 <constants id="jvmtiEventMode" label="Event Enable/Disable" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9005 <constant id="JVMTI_ENABLE" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9006 If <paramlink id="mode"></paramlink> is <code>JVMTI_ENABLE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9007 the event <paramlink id="event_type"></paramlink> will be enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
9008 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9009 <constant id="JVMTI_DISABLE" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
9010 If <paramlink id="mode"></paramlink> is <code>JVMTI_DISABLE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9011 the event <paramlink id="event_type"></paramlink> will be disabled
a61af66fc99e Initial load
duke
parents:
diff changeset
9012 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9013 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9014 If <code>thread</code> is <code>NULL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9015 the event is enabled or disabled globally; otherwise, it is
a61af66fc99e Initial load
duke
parents:
diff changeset
9016 enabled or disabled for a particular thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9017 An event is generated for
a61af66fc99e Initial load
duke
parents:
diff changeset
9018 a particular thread if it is enabled either at the thread or global
a61af66fc99e Initial load
duke
parents:
diff changeset
9019 levels.
a61af66fc99e Initial load
duke
parents:
diff changeset
9020 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9021 See <internallink id="EventIndex">below</internallink> for information on specific events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9022 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9023 The following events cannot be controlled at the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
9024 level through this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9025 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9026 <li><eventlink id="VMInit"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9027 <li><eventlink id="VMStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9028 <li><eventlink id="VMDeath"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9029 <li><eventlink id="ThreadStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9030 <li><eventlink id="CompiledMethodLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9031 <li><eventlink id="CompiledMethodUnload"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9032 <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9033 <li><eventlink id="DataDumpRequest"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9034 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9035 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9036 Initially, no events are enabled at either the thread level
a61af66fc99e Initial load
duke
parents:
diff changeset
9037 or the global level.
a61af66fc99e Initial load
duke
parents:
diff changeset
9038 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9039 Any needed capabilities (see Event Enabling Capabilities below) must be possessed
a61af66fc99e Initial load
duke
parents:
diff changeset
9040 before calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9041 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9042 Details on events are
a61af66fc99e Initial load
duke
parents:
diff changeset
9043 described <internallink id="EventSection">below</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9044 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9045 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9046 <eventcapabilities></eventcapabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9047 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9048 <param id="mode">
a61af66fc99e Initial load
duke
parents:
diff changeset
9049 <enum>jvmtiEventMode</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9050 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9051 <code>JVMTI_ENABLE</code> or <code>JVMTI_DISABLE</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9052 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9053 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9054 <param id="event_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9055 <enum>jvmtiEvent</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9056 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9057 the event to control
a61af66fc99e Initial load
duke
parents:
diff changeset
9058 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9059 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9060 <param id="event_thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
9061 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9062 <jthread impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9063 <nullok>event is controlled at the global level</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
9064 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9065 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9066 The thread to control
a61af66fc99e Initial load
duke
parents:
diff changeset
9067 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9068 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9069 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9070 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9071 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9072 for future expansion
a61af66fc99e Initial load
duke
parents:
diff changeset
9073 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9074 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9075 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9076 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9077 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
9078 <paramlink id="event_thread"/> is non-<code>NULL</code> and is not a valid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9079 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9080 <error id="JVMTI_ERROR_THREAD_NOT_ALIVE">
a61af66fc99e Initial load
duke
parents:
diff changeset
9081 <paramlink id="event_thread"/> is non-<code>NULL</code> and is not live (has not been started or is now dead).
a61af66fc99e Initial load
duke
parents:
diff changeset
9082 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9083 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9084 thread level control was attempted on events which do not
a61af66fc99e Initial load
duke
parents:
diff changeset
9085 permit thread level control.
a61af66fc99e Initial load
duke
parents:
diff changeset
9086 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9087 <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
9088 The Required Event Enabling Capability is not possessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9089 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9090 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9091 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9092
a61af66fc99e Initial load
duke
parents:
diff changeset
9093 <function id="GenerateEvents" num="123">
a61af66fc99e Initial load
duke
parents:
diff changeset
9094 <synopsis>Generate Events</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9095 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9096 Generate events to represent the current state of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
9097 For example, if <paramlink id="event_type"/> is
a61af66fc99e Initial load
duke
parents:
diff changeset
9098 <code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9099 a <eventlink id="CompiledMethodLoad"></eventlink> event will be
a61af66fc99e Initial load
duke
parents:
diff changeset
9100 sent for each currently compiled method.
a61af66fc99e Initial load
duke
parents:
diff changeset
9101 Methods that were loaded and now have been unloaded are not sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
9102 The history of what events have previously been sent does not
a61af66fc99e Initial load
duke
parents:
diff changeset
9103 effect what events are sent by this function--for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
9104 all currently compiled methods
a61af66fc99e Initial load
duke
parents:
diff changeset
9105 will be sent each time this function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
9106 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9107 This function is useful when
a61af66fc99e Initial load
duke
parents:
diff changeset
9108 events may have been missed due to the agent attaching after program
a61af66fc99e Initial load
duke
parents:
diff changeset
9109 execution begins; this function generates the missed events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9110 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9111 Attempts to execute Java programming language code or
a61af66fc99e Initial load
duke
parents:
diff changeset
9112 JNI functions may be paused until this function returns -
a61af66fc99e Initial load
duke
parents:
diff changeset
9113 so neither should be called from the thread sending the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9114 This function returns only after the missed events have been
a61af66fc99e Initial load
duke
parents:
diff changeset
9115 sent, processed and have returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
9116 The event may be sent on a different thread than the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
9117 on which the event occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
9118 The callback for the event must be set with
a61af66fc99e Initial load
duke
parents:
diff changeset
9119 <functionlink id="SetEventCallbacks"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9120 and the event must be enabled with
a61af66fc99e Initial load
duke
parents:
diff changeset
9121 <functionlink id="SetEventNotificationMode"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9122 or the events will not occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
9123 If the VM no longer has the information to generate some or
a61af66fc99e Initial load
duke
parents:
diff changeset
9124 all of the requested events, the events are simply not sent -
a61af66fc99e Initial load
duke
parents:
diff changeset
9125 no error is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
9126 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9127 Only the following events are supported:
a61af66fc99e Initial load
duke
parents:
diff changeset
9128 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9129 <li><eventlink id="CompiledMethodLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9130 <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9131 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9132 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9133 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9134 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9135 <capability id="can_generate_compiled_method_load_events"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
9136 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9137 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9138 <param id="event_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9139 <enum>jvmtiEvent</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9140 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9141 The type of event to generate. Must be one of these:
a61af66fc99e Initial load
duke
parents:
diff changeset
9142 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9143 <li><eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9144 <li><eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9145 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9146 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9147 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9148 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9149 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9150 <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
9151 <paramlink id="event_type"/> is
a61af66fc99e Initial load
duke
parents:
diff changeset
9152 <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9153 and <fieldlink id="can_generate_compiled_method_load_events" struct="jvmtiCapabilities"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9154 is <code>false</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9155 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9156 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9157 <paramlink id="event_type"/> is other than
a61af66fc99e Initial load
duke
parents:
diff changeset
9158 <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9159 or <eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9160 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9161 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9162 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9163
a61af66fc99e Initial load
duke
parents:
diff changeset
9164 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
9165
a61af66fc99e Initial load
duke
parents:
diff changeset
9166 <category id="extension" label="Extension Mechanism">
a61af66fc99e Initial load
duke
parents:
diff changeset
9167
a61af66fc99e Initial load
duke
parents:
diff changeset
9168 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9169 These functions
a61af66fc99e Initial load
duke
parents:
diff changeset
9170 allow a <jvmti/> implementation to provide functions and events
a61af66fc99e Initial load
duke
parents:
diff changeset
9171 beyond those defined in this specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
9172 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9173 Both extension functions and extension events have parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9174 each of which has a 'type' and 'kind' chosen from the following tables:
a61af66fc99e Initial load
duke
parents:
diff changeset
9175
a61af66fc99e Initial load
duke
parents:
diff changeset
9176 <constants id="jvmtiParamTypes" label="Extension Function/Event Parameter Types" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9177 <constant id="JVMTI_TYPE_JBYTE" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
9178 Java programming language primitive type - <code>byte</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9179 JNI type <code>jbyte</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9180 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9181 <constant id="JVMTI_TYPE_JCHAR" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
9182 Java programming language primitive type - <code>char</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9183 JNI type <code>jchar</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9184 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9185 <constant id="JVMTI_TYPE_JSHORT" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
9186 Java programming language primitive type - <code>short</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9187 JNI type <code>jshort</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9188 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9189 <constant id="JVMTI_TYPE_JINT" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
9190 Java programming language primitive type - <code>int</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9191 JNI type <datalink id="jint"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9192 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9193 <constant id="JVMTI_TYPE_JLONG" num="105">
a61af66fc99e Initial load
duke
parents:
diff changeset
9194 Java programming language primitive type - <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9195 JNI type <datalink id="jlong"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9196 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9197 <constant id="JVMTI_TYPE_JFLOAT" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
9198 Java programming language primitive type - <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9199 JNI type <datalink id="jfloat"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9200 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9201 <constant id="JVMTI_TYPE_JDOUBLE" num="107">
a61af66fc99e Initial load
duke
parents:
diff changeset
9202 Java programming language primitive type - <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9203 JNI type <datalink id="jdouble"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9204 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9205 <constant id="JVMTI_TYPE_JBOOLEAN" num="108">
a61af66fc99e Initial load
duke
parents:
diff changeset
9206 Java programming language primitive type - <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9207 JNI type <datalink id="jboolean"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9208 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9209 <constant id="JVMTI_TYPE_JOBJECT" num="109">
a61af66fc99e Initial load
duke
parents:
diff changeset
9210 Java programming language object type - <code>java.lang.Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9211 JNI type <datalink id="jobject"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9212 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9213 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9214 <constant id="JVMTI_TYPE_JTHREAD" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
9215 Java programming language object type - <code>java.lang.Thread</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9216 <jvmti/> type <datalink id="jthread"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9217 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9218 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9219 <constant id="JVMTI_TYPE_JCLASS" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
9220 Java programming language object type - <code>java.lang.Class</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9221 JNI type <datalink id="jclass"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9222 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9223 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9224 <constant id="JVMTI_TYPE_JVALUE" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
9225 Union of all Java programming language primitive and object types -
a61af66fc99e Initial load
duke
parents:
diff changeset
9226 JNI type <datalink id="jvalue"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9227 Returned values which represent object types are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9228 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9229 <constant id="JVMTI_TYPE_JFIELDID" num="113">
a61af66fc99e Initial load
duke
parents:
diff changeset
9230 Java programming language field identifier -
a61af66fc99e Initial load
duke
parents:
diff changeset
9231 JNI type <datalink id="jfieldID"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9232 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9233 <constant id="JVMTI_TYPE_JMETHODID" num="114">
a61af66fc99e Initial load
duke
parents:
diff changeset
9234 Java programming language method identifier -
a61af66fc99e Initial load
duke
parents:
diff changeset
9235 JNI type <datalink id="jmethodID"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9236 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9237 <constant id="JVMTI_TYPE_CCHAR" num="115">
a61af66fc99e Initial load
duke
parents:
diff changeset
9238 C programming language type - <code>char</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9239 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9240 <constant id="JVMTI_TYPE_CVOID" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
9241 C programming language type - <code>void</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9242 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9243 <constant id="JVMTI_TYPE_JNIENV" num="117">
a61af66fc99e Initial load
duke
parents:
diff changeset
9244 JNI environment - <code>JNIEnv</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9245 Should be used with the correct <datalink id="jvmtiParamKind"/> to make it a pointer type.
a61af66fc99e Initial load
duke
parents:
diff changeset
9246 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9247 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9248
a61af66fc99e Initial load
duke
parents:
diff changeset
9249 <constants id="jvmtiParamKind" label="Extension Function/Event Parameter Kinds" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9250 <constant id="JVMTI_KIND_IN" num="91">
a61af66fc99e Initial load
duke
parents:
diff changeset
9251 Ingoing argument - <code>foo</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9252 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9253 <constant id="JVMTI_KIND_IN_PTR" num="92">
a61af66fc99e Initial load
duke
parents:
diff changeset
9254 Ingoing pointer argument - <code>const foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9255 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9256 <constant id="JVMTI_KIND_IN_BUF" num="93">
a61af66fc99e Initial load
duke
parents:
diff changeset
9257 Ingoing array argument - <code>const foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9258 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9259 <constant id="JVMTI_KIND_ALLOC_BUF" num="94">
a61af66fc99e Initial load
duke
parents:
diff changeset
9260 Outgoing allocated array argument - <code>foo**</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9261 Free with <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9262 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9263 <constant id="JVMTI_KIND_ALLOC_ALLOC_BUF" num="95">
a61af66fc99e Initial load
duke
parents:
diff changeset
9264 Outgoing allocated array of allocated arrays argument - <code>foo***</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9265 Free with <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9266 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9267 <constant id="JVMTI_KIND_OUT" num="96">
a61af66fc99e Initial load
duke
parents:
diff changeset
9268 Outgoing argument - <code>foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9269 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9270 <constant id="JVMTI_KIND_OUT_BUF" num="97">
a61af66fc99e Initial load
duke
parents:
diff changeset
9271 Outgoing array argument (pre-allocated by agent) - <code>foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9272 Do not <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9273 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9274 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9275
a61af66fc99e Initial load
duke
parents:
diff changeset
9276 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9277
a61af66fc99e Initial load
duke
parents:
diff changeset
9278 <typedef id="jvmtiParamInfo" label="Extension Function/Event Parameter Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9279 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
9280 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9281 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9282 The parameter name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9283 <internallink id="mUTF">modified UTF-8</internallink> string
a61af66fc99e Initial load
duke
parents:
diff changeset
9284 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9285 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9286 <field id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
9287 <enum>jvmtiParamKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9288 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9289 The kind of the parameter - type modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
9290 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9291 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9292 <field id="base_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9293 <enum>jvmtiParamTypes</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9294 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9295 The base type of the parameter - modified by <code>kind</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9296 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9297 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9298 <field id="null_ok">
a61af66fc99e Initial load
duke
parents:
diff changeset
9299 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9300 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9301 Is a <code>NULL</code> argument permitted? Applies only to pointer and object types.
a61af66fc99e Initial load
duke
parents:
diff changeset
9302 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9303 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9304 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9305
a61af66fc99e Initial load
duke
parents:
diff changeset
9306 <callback id="jvmtiExtensionFunction">
a61af66fc99e Initial load
duke
parents:
diff changeset
9307 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9308 <synopsis>Extension Function</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9309 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9310 This is the implementation-specific extension function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9311 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9312 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9313 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
9314 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9315 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9316 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9317 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9318 The <jvmti/> environment is the only fixed parameter for extension functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9319 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9320 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9321 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9322 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9323 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9324 The extension function-specific parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9325 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9326 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9327 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9328 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
9329
a61af66fc99e Initial load
duke
parents:
diff changeset
9330 <function id="GetExtensionFunctions" phase="onload" num="124">
a61af66fc99e Initial load
duke
parents:
diff changeset
9331 <synopsis>Get Extension Functions</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9332
a61af66fc99e Initial load
duke
parents:
diff changeset
9333 <typedef id="jvmtiExtensionFunctionInfo" label="Extension Function Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9334 <field id="func">
a61af66fc99e Initial load
duke
parents:
diff changeset
9335 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9336 <struct>jvmtiExtensionFunction</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9337 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9338 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9339 The actual function to call
a61af66fc99e Initial load
duke
parents:
diff changeset
9340 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9341 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9342 <field id="id">
a61af66fc99e Initial load
duke
parents:
diff changeset
9343 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9344 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9345 The identifier for the extension function, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9346 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9347 Uses package name conventions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9348 For example, <code>com.sun.hotspot.bar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9349 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9350 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9351 <field id="short_description">
a61af66fc99e Initial load
duke
parents:
diff changeset
9352 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9353 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9354 A one sentence description of the function, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9355 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9356 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9357 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9358 <field id="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9359 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9360 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9361 The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9362 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9363 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9364 <field id="params">
a61af66fc99e Initial load
duke
parents:
diff changeset
9365 <allocfieldbuf outcount="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9366 <struct>jvmtiParamInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9367 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9368 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9369 Array of
a61af66fc99e Initial load
duke
parents:
diff changeset
9370 <fieldlink id="param_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9371 parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
a61af66fc99e Initial load
duke
parents:
diff changeset
9372 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9373 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9374 <field id="error_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9375 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9376 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9377 The number of possible error returns (excluding universal errors)
a61af66fc99e Initial load
duke
parents:
diff changeset
9378 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9379 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9380 <field id="errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
9381 <allocfieldbuf outcount="error_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9382 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9383 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9384 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9385 Array of <fieldlink id="error_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9386 possible errors
a61af66fc99e Initial load
duke
parents:
diff changeset
9387 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9388 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9389 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9390
a61af66fc99e Initial load
duke
parents:
diff changeset
9391 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9392 Returns the set of extension functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9393 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9394 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9395 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9396 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9397 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9398 <param id="extension_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9399 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9400 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9401 On return, points to the number of extension functions
a61af66fc99e Initial load
duke
parents:
diff changeset
9402 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9403 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9404 <param id="extensions">
a61af66fc99e Initial load
duke
parents:
diff changeset
9405 <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionFunctionInfo</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9406 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9407 Returns an array of extension function info, one per function
a61af66fc99e Initial load
duke
parents:
diff changeset
9408 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9409 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9410 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9411 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9412 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9413 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9414
a61af66fc99e Initial load
duke
parents:
diff changeset
9415 <function id="GetExtensionEvents" phase="onload" num="125">
a61af66fc99e Initial load
duke
parents:
diff changeset
9416 <synopsis>Get Extension Events</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9417
a61af66fc99e Initial load
duke
parents:
diff changeset
9418 <typedef id="jvmtiExtensionEventInfo" label="Extension Event Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9419 <field id="extension_event_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
9420 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9421 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9422 The identifying index of the event
a61af66fc99e Initial load
duke
parents:
diff changeset
9423 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9424 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9425 <field id="id">
a61af66fc99e Initial load
duke
parents:
diff changeset
9426 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9427 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9428 The identifier for the extension event, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9429 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9430 Uses package name conventions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9431 For example, <code>com.sun.hotspot.bar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9432 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9433 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9434 <field id="short_description">
a61af66fc99e Initial load
duke
parents:
diff changeset
9435 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9436 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9437 A one sentence description of the event, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9438 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9439 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9440 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9441 <field id="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9442 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9443 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9444 The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9445 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9446 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9447 <field id="params">
a61af66fc99e Initial load
duke
parents:
diff changeset
9448 <allocfieldbuf outcount="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9449 <struct>jvmtiParamInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9450 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9451 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9452 Array of
a61af66fc99e Initial load
duke
parents:
diff changeset
9453 <fieldlink id="param_count" struct="jvmtiExtensionEventInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9454 parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
a61af66fc99e Initial load
duke
parents:
diff changeset
9455 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9456 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9457 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9458
a61af66fc99e Initial load
duke
parents:
diff changeset
9459 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9460 Returns the set of extension events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9461 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9462 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9463 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9464 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9465 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9466 <param id="extension_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9467 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9468 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9469 On return, points to the number of extension events
a61af66fc99e Initial load
duke
parents:
diff changeset
9470 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9471 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9472 <param id="extensions">
a61af66fc99e Initial load
duke
parents:
diff changeset
9473 <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionEventInfo</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9474 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9475 Returns an array of extension event info, one per event
a61af66fc99e Initial load
duke
parents:
diff changeset
9476 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9477 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9478 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9479 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9480 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9481 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9482
a61af66fc99e Initial load
duke
parents:
diff changeset
9483 <callback id="jvmtiExtensionEvent">
a61af66fc99e Initial load
duke
parents:
diff changeset
9484 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9485 <synopsis>Extension Event</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9486 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9487 This is the implementation-specific event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9488 The event handler is set with
a61af66fc99e Initial load
duke
parents:
diff changeset
9489 <functionlink id="SetExtensionEventCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9490 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9491 Event handlers for extension events must be declared varargs to match this definition.
a61af66fc99e Initial load
duke
parents:
diff changeset
9492 Failure to do so could result in calling convention mismatch and undefined behavior
a61af66fc99e Initial load
duke
parents:
diff changeset
9493 on some platforms.
a61af66fc99e Initial load
duke
parents:
diff changeset
9494 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9495 For example, if the <code>jvmtiParamInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9496 returned by <functionlink id="GetExtensionEvents"/> indicates that
a61af66fc99e Initial load
duke
parents:
diff changeset
9497 there is a <code>jint</code> parameter, the event handler should be
a61af66fc99e Initial load
duke
parents:
diff changeset
9498 declared:
a61af66fc99e Initial load
duke
parents:
diff changeset
9499 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9500 void JNICALL myHandler(jvmtiEnv* jvmti_env, jint myInt, ...)
a61af66fc99e Initial load
duke
parents:
diff changeset
9501 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9502 Note the terminal "<code>...</code>" which indicates varargs.
a61af66fc99e Initial load
duke
parents:
diff changeset
9503 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9504 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9505 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
9506 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9507 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9508 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9509 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9510 The <jvmti/> environment is the only fixed parameter for extension events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9511 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9512 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9513 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9514 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9515 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9516 The extension event-specific parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9517 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9518 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9519 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9520 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
9521
a61af66fc99e Initial load
duke
parents:
diff changeset
9522 <function id="SetExtensionEventCallback" phase="onload" num="126">
a61af66fc99e Initial load
duke
parents:
diff changeset
9523 <synopsis>Set Extension Event Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9524
a61af66fc99e Initial load
duke
parents:
diff changeset
9525 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9526 Sets the callback function for an extension event and
a61af66fc99e Initial load
duke
parents:
diff changeset
9527 enables the event. Or, if the callback is <code>NULL</code>, disables
a61af66fc99e Initial load
duke
parents:
diff changeset
9528 the event. Note that unlike standard events, setting
a61af66fc99e Initial load
duke
parents:
diff changeset
9529 the callback and enabling the event are a single operation.
a61af66fc99e Initial load
duke
parents:
diff changeset
9530 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9531 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9532 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9533 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9534 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9535 <param id="extension_event_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
9536 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9537 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9538 Identifies which callback to set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9539 This index is the
a61af66fc99e Initial load
duke
parents:
diff changeset
9540 <fieldlink id="extension_event_index" struct="jvmtiExtensionEventInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9541 field of
a61af66fc99e Initial load
duke
parents:
diff changeset
9542 <datalink id="jvmtiExtensionEventInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9543 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9544 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9545 <param id="callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
9546 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9547 <struct>jvmtiExtensionEvent</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9548 <nullok>disable the event</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
9549 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9550 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9551 If <code>callback</code> is non-<code>NULL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9552 set <code>callback</code> to be the event callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
9553 and enable the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9554 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9555 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9556 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9557 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9558 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9559 <paramlink id="extension_event_index"/> is not an
a61af66fc99e Initial load
duke
parents:
diff changeset
9560 <fieldlink id="extension_event_index"
a61af66fc99e Initial load
duke
parents:
diff changeset
9561 struct="jvmtiExtensionEventInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9562 returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
9563 <functionlink id="GetExtensionEvents"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9564 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9565 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9566 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9567
a61af66fc99e Initial load
duke
parents:
diff changeset
9568 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
9569
a61af66fc99e Initial load
duke
parents:
diff changeset
9570 <category id="capability" label="Capability">
a61af66fc99e Initial load
duke
parents:
diff changeset
9571
a61af66fc99e Initial load
duke
parents:
diff changeset
9572 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9573 The capabilities functions allow you to change the
a61af66fc99e Initial load
duke
parents:
diff changeset
9574 functionality available to <jvmti/>--that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
9575 which <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9576 functions can be called, what events can be generated,
a61af66fc99e Initial load
duke
parents:
diff changeset
9577 and what functionality these events and functions can
a61af66fc99e Initial load
duke
parents:
diff changeset
9578 provide.
a61af66fc99e Initial load
duke
parents:
diff changeset
9579 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9580 The "Capabilities" section of each function and event describe which
a61af66fc99e Initial load
duke
parents:
diff changeset
9581 capabilities, if any, they are associated with. "Required Functionality"
a61af66fc99e Initial load
duke
parents:
diff changeset
9582 means it is available for use and no capabilities must be added to use it.
a61af66fc99e Initial load
duke
parents:
diff changeset
9583 "Optional Functionality" means the agent must possess the capability
a61af66fc99e Initial load
duke
parents:
diff changeset
9584 before it can be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
9585 To possess a capability, the agent must
a61af66fc99e Initial load
duke
parents:
diff changeset
9586 <functionlink id="AddCapabilities">add the capability</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9587 "Optional Features" describe capabilities which,
a61af66fc99e Initial load
duke
parents:
diff changeset
9588 if added, extend the feature set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9589 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9590 The potentially available capabilities of each <jvmti/> implementation are different.
a61af66fc99e Initial load
duke
parents:
diff changeset
9591 Depending on the implementation, a capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
9592 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9593 <li>may never be added</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9594 <li>may be added in either the <code>OnLoad</code> or live phase in any environment</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9595 <li>may be added only during the <code>OnLoad</code> phase</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9596 <li>may be possessed by only one environment at a time</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9597 <li>may be possessed by only one environment at a time,
a61af66fc99e Initial load
duke
parents:
diff changeset
9598 and only during the <code>OnLoad</code> phase</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9599 <li>and so on ...</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9600 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9601 Frequently, the addition of a capability may incur a cost in execution speed, start up
a61af66fc99e Initial load
duke
parents:
diff changeset
9602 time, and/or memory footprint. Note that the overhead of using a capability
a61af66fc99e Initial load
duke
parents:
diff changeset
9603 is completely different than the overhead of possessing a capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
9604 Take single stepping as an example. When single stepping is on (that
a61af66fc99e Initial load
duke
parents:
diff changeset
9605 is, when the event is enabled and thus actively sending events)
a61af66fc99e Initial load
duke
parents:
diff changeset
9606 the overhead of sending and processing an event
a61af66fc99e Initial load
duke
parents:
diff changeset
9607 on each instruction is huge in any implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
9608 However, the overhead of possessing the capability may be small or large,
a61af66fc99e Initial load
duke
parents:
diff changeset
9609 depending on the implementation. Also, when and if a capability is potentially
a61af66fc99e Initial load
duke
parents:
diff changeset
9610 available depends on the implementation. Some examples:
a61af66fc99e Initial load
duke
parents:
diff changeset
9611 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9612 <li>One VM might perform all execution by compiling bytecodes into
a61af66fc99e Initial load
duke
parents:
diff changeset
9613 native code and be unable to generate single step instructions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9614 In this implementation the capability can not be added.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9615 <li>Another VM may be able to switch execution to a single stepping
a61af66fc99e Initial load
duke
parents:
diff changeset
9616 interpreter at any time. In this implementation, having the capability has no
a61af66fc99e Initial load
duke
parents:
diff changeset
9617 overhead and could be added at any time.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9618 <li>Yet another VM might be able to choose a bytecode compiling or single stepping capable interpreted
a61af66fc99e Initial load
duke
parents:
diff changeset
9619 execution engine at start up, but be unable to switch between them.
a61af66fc99e Initial load
duke
parents:
diff changeset
9620 In this implementation the capability would need to be added
a61af66fc99e Initial load
duke
parents:
diff changeset
9621 during the <code>OnLoad</code> phase (before bytecode
a61af66fc99e Initial load
duke
parents:
diff changeset
9622 execution begins) and would have a large impact on execution speed
a61af66fc99e Initial load
duke
parents:
diff changeset
9623 even if single stepping was never used.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9624 <li>Still another VM might be able to add an "is single stepping on" check
a61af66fc99e Initial load
duke
parents:
diff changeset
9625 into compiled bytecodes or a generated interpreter. Again in this implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9626 the capability would need to be added during the <code>OnLoad</code> phase but the overhead (a test
a61af66fc99e Initial load
duke
parents:
diff changeset
9627 and branch on each instruction) would be considerably less.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9628 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9629 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9630 Each <jvmti/> <internallink id="environments">environment</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9631 has its own set of capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9632 Initially, that set is empty.
a61af66fc99e Initial load
duke
parents:
diff changeset
9633 Any desired capability must be added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9634 If possible, capabilities should be added during the <code>OnLoad</code> phase. For most
a61af66fc99e Initial load
duke
parents:
diff changeset
9635 virtual machines certain capabilities require special set up for
a61af66fc99e Initial load
duke
parents:
diff changeset
9636 the virtual machine and this set up must happen
a61af66fc99e Initial load
duke
parents:
diff changeset
9637 during the <code>OnLoad</code> phase, before the virtual machine begins execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
9638 Once a capability is added, it can
a61af66fc99e Initial load
duke
parents:
diff changeset
9639 only be removed if explicitly relinquished by the environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
9640 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9641 The agent can,
a61af66fc99e Initial load
duke
parents:
diff changeset
9642 <functionlink id="GetPotentialCapabilities">determine what
a61af66fc99e Initial load
duke
parents:
diff changeset
9643 capabilities this VM can potentially provide</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9644 <functionlink id="AddCapabilities">add the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9645 to be used</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9646 <functionlink id="RelinquishCapabilities">release capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9647 which are no longer needed</functionlink>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
9648 <functionlink id="GetCapabilities">examine the currently available
a61af66fc99e Initial load
duke
parents:
diff changeset
9649 capabilities</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9650 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9651
a61af66fc99e Initial load
duke
parents:
diff changeset
9652 <intro id="capabilityExamples" label="Capability Examples">
a61af66fc99e Initial load
duke
parents:
diff changeset
9653 For example, a freshly started agent (in the <code>OnLoad</code> function)
a61af66fc99e Initial load
duke
parents:
diff changeset
9654 wants to enable all possible capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9655 Note that, in general, this is not advisable as the agent may suffer
a61af66fc99e Initial load
duke
parents:
diff changeset
9656 a performance penalty for functionality it is not using.
a61af66fc99e Initial load
duke
parents:
diff changeset
9657 The code might look like this in C:
a61af66fc99e Initial load
duke
parents:
diff changeset
9658 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9659 jvmtiCapabilities capa;
a61af66fc99e Initial load
duke
parents:
diff changeset
9660 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
9661
a61af66fc99e Initial load
duke
parents:
diff changeset
9662 err = (*jvmti)-&gt;GetPotentialCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9663 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
9664 err = (*jvmti)-&gt;AddCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9665 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9666 For example, if an agent wants to check if it can get
a61af66fc99e Initial load
duke
parents:
diff changeset
9667 the bytecodes of a method (that is, it wants to check
a61af66fc99e Initial load
duke
parents:
diff changeset
9668 if it previously added this capability and has not
a61af66fc99e Initial load
duke
parents:
diff changeset
9669 relinquished it), the code might
a61af66fc99e Initial load
duke
parents:
diff changeset
9670 look like this in C:
a61af66fc99e Initial load
duke
parents:
diff changeset
9671 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9672 jvmtiCapabilities capa;
a61af66fc99e Initial load
duke
parents:
diff changeset
9673 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
9674
a61af66fc99e Initial load
duke
parents:
diff changeset
9675 err = (*jvmti)-&gt;GetCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9676 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
9677 if (capa.can_get_bytecodes) { ... } }
a61af66fc99e Initial load
duke
parents:
diff changeset
9678 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9679 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9680
a61af66fc99e Initial load
duke
parents:
diff changeset
9681 <capabilitiestypedef id="jvmtiCapabilities" label="The Capabilities Structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
9682 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9683 The functions in this category use this capabilities structure
a61af66fc99e Initial load
duke
parents:
diff changeset
9684 which contains boolean flags corresponding to each capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
9685 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9686 <capabilityfield id="can_tag_objects">
a61af66fc99e Initial load
duke
parents:
diff changeset
9687 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9688 Can set and get tags, as described in the
a61af66fc99e Initial load
duke
parents:
diff changeset
9689 <internallink id="Heap">Heap category</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9690 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9691 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9692 <capabilityfield id="can_generate_field_modification_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9693 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9694 Can set watchpoints on field modification -
a61af66fc99e Initial load
duke
parents:
diff changeset
9695 <functionlink id="SetFieldModificationWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9696 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9697 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9698 <capabilityfield id="can_generate_field_access_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9699 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9700 Can set watchpoints on field access -
a61af66fc99e Initial load
duke
parents:
diff changeset
9701 <functionlink id="SetFieldAccessWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9702 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9703 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9704 <capabilityfield id="can_get_bytecodes">
a61af66fc99e Initial load
duke
parents:
diff changeset
9705 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9706 Can get bytecodes of a method <functionlink id="GetBytecodes"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9707 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9708 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9709 <capabilityfield id="can_get_synthetic_attribute">
a61af66fc99e Initial load
duke
parents:
diff changeset
9710 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9711 Can test if a field or method is synthetic -
a61af66fc99e Initial load
duke
parents:
diff changeset
9712 <functionlink id="IsFieldSynthetic"></functionlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9713 <functionlink id="IsMethodSynthetic"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9714 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9715 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9716 <capabilityfield id="can_get_owned_monitor_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9717 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9718 Can get information about ownership of monitors -
a61af66fc99e Initial load
duke
parents:
diff changeset
9719 <functionlink id="GetOwnedMonitorInfo"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9720 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9721 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9722 <capabilityfield id="can_get_current_contended_monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
9723 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9724 Can <functionlink id="GetCurrentContendedMonitor"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9725 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9726 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9727 <capabilityfield id="can_get_monitor_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9728 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9729 Can <functionlink id="GetObjectMonitorUsage"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9730 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9731 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9732 <capabilityfield id="can_pop_frame">
a61af66fc99e Initial load
duke
parents:
diff changeset
9733 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9734 Can pop frames off the stack - <functionlink id="PopFrame"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9735 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9736 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9737 <capabilityfield id="can_redefine_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
9738 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9739 Can redefine classes with <functionlink id="RedefineClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9740 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9741 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9742 <capabilityfield id="can_signal_thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
9743 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9744 Can send stop or interrupt to threads
a61af66fc99e Initial load
duke
parents:
diff changeset
9745 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9746 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9747 <capabilityfield id="can_get_source_file_name">
a61af66fc99e Initial load
duke
parents:
diff changeset
9748 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9749 Can get the source file name of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
9750 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9751 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9752 <capabilityfield id="can_get_line_numbers">
a61af66fc99e Initial load
duke
parents:
diff changeset
9753 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9754 Can get the line number table of a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9755 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9756 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9757 <capabilityfield id="can_get_source_debug_extension">
a61af66fc99e Initial load
duke
parents:
diff changeset
9758 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9759 Can get the source debug extension of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
9760 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9761 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9762 <capabilityfield id="can_access_local_variables">
a61af66fc99e Initial load
duke
parents:
diff changeset
9763 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9764 Can set and get local variables
a61af66fc99e Initial load
duke
parents:
diff changeset
9765 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9766 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9767 <capabilityfield id="can_maintain_original_method_order">
a61af66fc99e Initial load
duke
parents:
diff changeset
9768 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9769 Can return methods in the order they occur in the class file
a61af66fc99e Initial load
duke
parents:
diff changeset
9770 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9771 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9772 <capabilityfield id="can_generate_single_step_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9773 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9774 Can get <eventlink id="SingleStep">single step</eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9775 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9776 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9777 <capabilityfield id="can_generate_exception_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9778 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9779 Can get <eventlink id="Exception">exception thrown</eventlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9780 <eventlink id="ExceptionCatch">exception catch</eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9781 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9782 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9783 <capabilityfield id="can_generate_frame_pop_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9784 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9785 Can <functionlink id="NotifyFramePop">set</functionlink> and thus get
a61af66fc99e Initial load
duke
parents:
diff changeset
9786 <eventlink id="FramePop"></eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9787 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9788 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9789 <capabilityfield id="can_generate_breakpoint_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9790 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9791 Can <functionlink id="SetBreakpoint">set</functionlink> and thus get
a61af66fc99e Initial load
duke
parents:
diff changeset
9792 <eventlink id="Breakpoint"></eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9793 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9794 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9795 <capabilityfield id="can_suspend">
a61af66fc99e Initial load
duke
parents:
diff changeset
9796 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9797 Can suspend and resume threads
a61af66fc99e Initial load
duke
parents:
diff changeset
9798 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9799 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9800 <capabilityfield id="can_redefine_any_class">
a61af66fc99e Initial load
duke
parents:
diff changeset
9801 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9802 Can modify (retransform or redefine) any non-primitive non-array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
9803 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9804 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9805 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9806 <capabilityfield id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
9807 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9808 Can <functionlink id="GetCurrentThreadCpuTime">get</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9809 current thread CPU time
a61af66fc99e Initial load
duke
parents:
diff changeset
9810 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9811 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9812 <capabilityfield id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
9813 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9814 Can <functionlink id="GetThreadCpuTime">get</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9815 thread CPU time
a61af66fc99e Initial load
duke
parents:
diff changeset
9816 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9817 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9818 <capabilityfield id="can_generate_method_entry_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9819 disp1="can_generate" disp2="_method_entry_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9820 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9821 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9822 Can generate method entry events on entering a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9823 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9824 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9825 <capabilityfield id="can_generate_method_exit_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9826 disp1="can_generate" disp2="_method_exit_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9827 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9828 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9829 Can generate method exit events on leaving a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9830 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9831 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9832 <capabilityfield id="can_generate_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9833 disp1="can_generate" disp2="_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9834 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9835 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9836 Can generate ClassFileLoadHook events for every loaded class.
a61af66fc99e Initial load
duke
parents:
diff changeset
9837 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9838 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9839 <capabilityfield id="can_generate_compiled_method_load_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9840 disp1="can_generate" disp2="_compiled_method_load_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9841 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9842 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9843 Can generate events when a method is compiled or unloaded
a61af66fc99e Initial load
duke
parents:
diff changeset
9844 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9845 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9846 <capabilityfield id="can_generate_monitor_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9847 disp1="can_generate" disp2="_monitor_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9848 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9849 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9850 Can generate events on monitor activity
a61af66fc99e Initial load
duke
parents:
diff changeset
9851 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9852 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9853 <capabilityfield id="can_generate_vm_object_alloc_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9854 disp1="can_generate" disp2="_vm_object_alloc_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9855 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9856 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9857 Can generate events on VM allocation of an object
a61af66fc99e Initial load
duke
parents:
diff changeset
9858 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9859 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9860 <capabilityfield id="can_generate_native_method_bind_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9861 disp1="can_generate" disp2="_native_method_bind_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9862 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9863 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9864 Can generate events when a native method is bound to its
a61af66fc99e Initial load
duke
parents:
diff changeset
9865 implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9866 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9867 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9868 <capabilityfield id="can_generate_garbage_collection_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9869 disp1="can_generate" disp2="_garbage_collection_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9870 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9871 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9872 Can generate events when garbage collection begins or ends
a61af66fc99e Initial load
duke
parents:
diff changeset
9873 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9874 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9875 <capabilityfield id="can_generate_object_free_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9876 disp1="can_generate" disp2="_object_free_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9877 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9878 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9879 Can generate events when the garbage collector frees an object
a61af66fc99e Initial load
duke
parents:
diff changeset
9880 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9881 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9882 <capabilityfield id="can_force_early_return" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9883 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9884 Can return early from a method, as described in the
a61af66fc99e Initial load
duke
parents:
diff changeset
9885 <internallink id="ForceEarlyReturn">Force Early Return category</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9886 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9887 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9888 <capabilityfield id="can_get_owned_monitor_stack_depth_info" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9889 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9890 Can get information about owned monitors with stack depth -
a61af66fc99e Initial load
duke
parents:
diff changeset
9891 <functionlink id="GetOwnedMonitorStackDepthInfo"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9892 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9893 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9894 <capabilityfield id="can_get_constant_pool" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9895 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9896 Can get the constant pool of a class -
a61af66fc99e Initial load
duke
parents:
diff changeset
9897 <functionlink id="GetConstantPool"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9898 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9899 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9900 <capabilityfield id="can_set_native_method_prefix" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9901 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9902 Can set prefix to be applied when native method cannot be resolved -
a61af66fc99e Initial load
duke
parents:
diff changeset
9903 <functionlink id="SetNativeMethodPrefix"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9904 <functionlink id="SetNativeMethodPrefixes"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9905 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9906 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9907 <capabilityfield id="can_retransform_classes" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9908 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9909 Can retransform classes with <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9910 In addition to the restrictions imposed by the specific
a61af66fc99e Initial load
duke
parents:
diff changeset
9911 implementation on this capability (see the
a61af66fc99e Initial load
duke
parents:
diff changeset
9912 <internallink id="capability">Capability</internallink> section),
a61af66fc99e Initial load
duke
parents:
diff changeset
9913 this capability must be set before the
a61af66fc99e Initial load
duke
parents:
diff changeset
9914 <eventlink id="ClassFileLoadHook"/> event is enabled for the
a61af66fc99e Initial load
duke
parents:
diff changeset
9915 first time in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
9916 An environment that possesses this capability at the time that
a61af66fc99e Initial load
duke
parents:
diff changeset
9917 <code>ClassFileLoadHook</code> is enabled for the first time is
a61af66fc99e Initial load
duke
parents:
diff changeset
9918 said to be <i>retransformation capable</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9919 An environment that does not possess this capability at the time that
a61af66fc99e Initial load
duke
parents:
diff changeset
9920 <code>ClassFileLoadHook</code> is enabled for the first time is
a61af66fc99e Initial load
duke
parents:
diff changeset
9921 said to be <i>retransformation incapable</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9922 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9923 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9924 <capabilityfield id="can_retransform_any_class" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9925 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9926 <functionlink id="RetransformClasses"/> can be called on any class
a61af66fc99e Initial load
duke
parents:
diff changeset
9927 (<fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9928 must also be set)
a61af66fc99e Initial load
duke
parents:
diff changeset
9929 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9930 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9931 <capabilityfield id="can_generate_resource_exhaustion_heap_events" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9932 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9933 Can generate events when the VM is unable to allocate memory from
a61af66fc99e Initial load
duke
parents:
diff changeset
9934 the <tm>Java</tm> platform heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
9935 See <eventlink id="ResourceExhausted"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9936 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9937 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9938 <capabilityfield id="can_generate_resource_exhaustion_threads_events" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9939 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9940 Can generate events when the VM is unable to create a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9941 See <eventlink id="ResourceExhausted"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9942 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9943 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9944 </capabilitiestypedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9945
a61af66fc99e Initial load
duke
parents:
diff changeset
9946 <function id="GetPotentialCapabilities" jkernel="yes" phase="onload" num="140">
a61af66fc99e Initial load
duke
parents:
diff changeset
9947 <synopsis>Get Potential Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9948 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9949 Returns via <paramlink id="capabilities_ptr"></paramlink> the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9950 features that can potentially be possessed by this environment
a61af66fc99e Initial load
duke
parents:
diff changeset
9951 at this time.
a61af66fc99e Initial load
duke
parents:
diff changeset
9952 The returned capabilities differ from the complete set of capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9953 implemented by the VM in two cases: another environment possesses
a61af66fc99e Initial load
duke
parents:
diff changeset
9954 capabilities that can only be possessed by one environment, or the
a61af66fc99e Initial load
duke
parents:
diff changeset
9955 current <functionlink id="GetPhase">phase</functionlink> is live,
a61af66fc99e Initial load
duke
parents:
diff changeset
9956 and certain capabilities can only be added during the <code>OnLoad</code> phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9957 The <functionlink id="AddCapabilities"></functionlink> function
a61af66fc99e Initial load
duke
parents:
diff changeset
9958 may be used to set any or all or these capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9959 Currently possessed capabilities are included.
a61af66fc99e Initial load
duke
parents:
diff changeset
9960 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9961 Typically this function is used in the <code>OnLoad</code> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9962 Some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
9963 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9964 In this case, the set of potentially available capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9965 will likely differ from the <code>OnLoad</code> phase set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9966 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9967 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
9968 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9969 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9970 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9971 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9972 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9973 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9974 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9975 <outptr><struct>jvmtiCapabilities</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9976 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9977 On return, points to the <jvmti/> capabilities that may be added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9978 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9979 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9980 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9981 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9982 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9983 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9984
a61af66fc99e Initial load
duke
parents:
diff changeset
9985 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
9986 <function id="EstimateCostOfCapabilities" phase="onload" num="141">
a61af66fc99e Initial load
duke
parents:
diff changeset
9987 <synopsis>Estimate Cost Of Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9988 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9989 <issue>There is strong opposition to this function. The concern is
a61af66fc99e Initial load
duke
parents:
diff changeset
9990 that it would be difficult or impossible to provide meaningful
a61af66fc99e Initial load
duke
parents:
diff changeset
9991 numbers, as the amount of impact is conditional on many factors
a61af66fc99e Initial load
duke
parents:
diff changeset
9992 that a single number could not represent. There is doubt that
a61af66fc99e Initial load
duke
parents:
diff changeset
9993 conditional implementations would be used or are even a good idea.
a61af66fc99e Initial load
duke
parents:
diff changeset
9994 The thought is that release documentation for the implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9995 would be the best means of exposing this information.
a61af66fc99e Initial load
duke
parents:
diff changeset
9996 Unless new arguments are presented, I intend to remove this
a61af66fc99e Initial load
duke
parents:
diff changeset
9997 function in the next revision.
a61af66fc99e Initial load
duke
parents:
diff changeset
9998 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
9999 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10000 Return via the <paramlink id="time_impact_ptr"></paramlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
10001 <paramlink id="space_impact_ptr"></paramlink> an estimate of the impact
a61af66fc99e Initial load
duke
parents:
diff changeset
10002 of adding the capabilities pointed to by
a61af66fc99e Initial load
duke
parents:
diff changeset
10003 <paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10004 The returned estimates are in percentage of additional overhead, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10005 a time impact of 100 mean the application might run
a61af66fc99e Initial load
duke
parents:
diff changeset
10006 at half the speed.
a61af66fc99e Initial load
duke
parents:
diff changeset
10007 The estimates are very rough approximations and are not guaranteed.
a61af66fc99e Initial load
duke
parents:
diff changeset
10008 Note also, that the estimates are of the impact of having the
a61af66fc99e Initial load
duke
parents:
diff changeset
10009 capability available--when and if it is used the impact may be
a61af66fc99e Initial load
duke
parents:
diff changeset
10010 much greater.
a61af66fc99e Initial load
duke
parents:
diff changeset
10011 Estimates can be for a single capability or for a set of
a61af66fc99e Initial load
duke
parents:
diff changeset
10012 capabilities. Note that the costs are not necessarily additive,
a61af66fc99e Initial load
duke
parents:
diff changeset
10013 adding support for one capability might make another available
a61af66fc99e Initial load
duke
parents:
diff changeset
10014 for free or conversely having two capabilities at once may
a61af66fc99e Initial load
duke
parents:
diff changeset
10015 have multiplicative impact.
a61af66fc99e Initial load
duke
parents:
diff changeset
10016 Estimates are relative to the current set of capabilities -
a61af66fc99e Initial load
duke
parents:
diff changeset
10017 that is, how much more impact given the currently possessed capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
10018 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10019 Typically this function is used in the OnLoad function,
a61af66fc99e Initial load
duke
parents:
diff changeset
10020 some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
10021 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10022 In this case, the set of potentially available capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10023 will likely differ from the OnLoad phase set.
a61af66fc99e Initial load
duke
parents:
diff changeset
10024 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10025 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10026 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10027 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10028 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10029 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10030 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10031 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10032 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10033 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10034 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10035 points to the <jvmti/> capabilities to evaluate.
a61af66fc99e Initial load
duke
parents:
diff changeset
10036 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10037 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10038 <param id="time_impact_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10039 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10040 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10041 On return, points to the estimated percentage increase in
a61af66fc99e Initial load
duke
parents:
diff changeset
10042 run time if this capability was added.
a61af66fc99e Initial load
duke
parents:
diff changeset
10043 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10044 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10045 <param id="space_impact_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10046 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10047 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10048 On return, points to the estimated percentage increase in
a61af66fc99e Initial load
duke
parents:
diff changeset
10049 memory space used if this capability was added.
a61af66fc99e Initial load
duke
parents:
diff changeset
10050 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10051 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10052 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10053 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10054 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10055 The desired capabilities are not even potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10056 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10057 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10058 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10059 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
10060
a61af66fc99e Initial load
duke
parents:
diff changeset
10061 <function id="AddCapabilities" jkernel="yes" phase="onload" num="142">
a61af66fc99e Initial load
duke
parents:
diff changeset
10062 <synopsis>Add Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10063 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10064 Set new capabilities by adding the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10065 whose values are set to one (<code>1</code>) in
a61af66fc99e Initial load
duke
parents:
diff changeset
10066 <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10067 All previous capabilities are retained.
a61af66fc99e Initial load
duke
parents:
diff changeset
10068 Typically this function is used in the <code>OnLoad</code> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10069 Some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
10070 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10071 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10072 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10073 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10074 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10075 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10076 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10077 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10078 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10079 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10080 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10081 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10082 Points to the <jvmti/> capabilities to add.
a61af66fc99e Initial load
duke
parents:
diff changeset
10083 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10084 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10085 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10086 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10087 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10088 The desired capabilities are not even potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10089 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10090 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10091 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10092
a61af66fc99e Initial load
duke
parents:
diff changeset
10093
a61af66fc99e Initial load
duke
parents:
diff changeset
10094 <function id="RelinquishCapabilities" phase="onload" num="143">
a61af66fc99e Initial load
duke
parents:
diff changeset
10095 <synopsis>Relinquish Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10096 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10097 Relinquish the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10098 whose values are set to one (<code>1</code>) in
a61af66fc99e Initial load
duke
parents:
diff changeset
10099 <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10100 Some implementations may allow only one environment to have a capability
a61af66fc99e Initial load
duke
parents:
diff changeset
10101 (see the <internallink id="capability">capability introduction</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10102 This function releases capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10103 so that they may be used by other agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
10104 All other capabilities are retained.
a61af66fc99e Initial load
duke
parents:
diff changeset
10105 The capability will no longer be present in <functionlink id="GetCapabilities"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10106 Attempting to relinquish a capability that the agent does not possess is not an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
10107 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10108 It is possible for the agent to be actively using capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10109 which are being relinquished. For example, a thread is currently
a61af66fc99e Initial load
duke
parents:
diff changeset
10110 suspended and can_suspend is being relinquished or an event is currently
a61af66fc99e Initial load
duke
parents:
diff changeset
10111 enabled and can_generate_whatever is being relinquished.
a61af66fc99e Initial load
duke
parents:
diff changeset
10112 There are three possible ways we could spec this:
a61af66fc99e Initial load
duke
parents:
diff changeset
10113 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10114 <li>relinquish automatically releases them</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10115 <li>relinquish checks and returns some error code if held</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10116 <li>it is the agent's responsibility and it is not checked</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10117 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10118 One of these should be chosen.
a61af66fc99e Initial load
duke
parents:
diff changeset
10119 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10120 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10121 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10122 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10123 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10124 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10125 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10126 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10127 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10128 Points to the <jvmti/> capabilities to relinquish.
a61af66fc99e Initial load
duke
parents:
diff changeset
10129 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10130 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10131 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10132 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10133 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10134 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10135
a61af66fc99e Initial load
duke
parents:
diff changeset
10136
a61af66fc99e Initial load
duke
parents:
diff changeset
10137
a61af66fc99e Initial load
duke
parents:
diff changeset
10138 <function id="GetCapabilities" jkernel="yes" phase="any" num="89">
a61af66fc99e Initial load
duke
parents:
diff changeset
10139 <synopsis>Get Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10140 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10141 Returns via <paramlink id="capabilities_ptr"></paramlink> the optional <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10142 features which this environment currently possesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
10143 Each possessed capability is indicated by a one (<code>1</code>) in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10144 corresponding field of the <internallink id="jvmtiCapabilities">capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10145 structure</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10146 An environment does not possess a capability unless it has been successfully added with
a61af66fc99e Initial load
duke
parents:
diff changeset
10147 <functionlink id="AddCapabilities"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10148 An environment only loses possession of a capability if it has been relinquished with
a61af66fc99e Initial load
duke
parents:
diff changeset
10149 <functionlink id="RelinquishCapabilities"/>. Thus, this function returns the net result
a61af66fc99e Initial load
duke
parents:
diff changeset
10150 of the <code>AddCapabilities</code> and <code>RelinquishCapabilities</code> calls which
a61af66fc99e Initial load
duke
parents:
diff changeset
10151 have been made.
a61af66fc99e Initial load
duke
parents:
diff changeset
10152 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10153 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10154 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10155 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10156 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10157 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10158 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10159 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10160 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10161 <outptr><struct>jvmtiCapabilities</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10162 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10163 On return, points to the <jvmti/> capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
10164 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10165 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10166 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10167 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10168 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10169 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10170
a61af66fc99e Initial load
duke
parents:
diff changeset
10171 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10172
a61af66fc99e Initial load
duke
parents:
diff changeset
10173
a61af66fc99e Initial load
duke
parents:
diff changeset
10174 <category id="timers" label="Timers">
a61af66fc99e Initial load
duke
parents:
diff changeset
10175
a61af66fc99e Initial load
duke
parents:
diff changeset
10176 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10177 These functions provide timing information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10178 The resolution at which the time is updated is not specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
10179 They provides nanosecond precision, but not necessarily nanosecond accuracy.
a61af66fc99e Initial load
duke
parents:
diff changeset
10180 Details about the timers, such as their maximum values, can be accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
10181 the timer information functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
10182 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10183
a61af66fc99e Initial load
duke
parents:
diff changeset
10184 <typedef id="jvmtiTimerInfo" label="Timer Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
10185 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10186 The information function for each timer returns this data structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
10187 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10188 <field id="max_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
10189 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10190 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10191 The maximum value the timer can reach.
a61af66fc99e Initial load
duke
parents:
diff changeset
10192 After this value is reached the timer wraps back to zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
10193 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10194 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10195 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10196 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10197 <field id="may_skip_forward">
a61af66fc99e Initial load
duke
parents:
diff changeset
10198 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10199 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10200 If true, the timer can be externally adjusted and as a result skip forward.
a61af66fc99e Initial load
duke
parents:
diff changeset
10201 If false, the timer value will never increase faster than real time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10202 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10203 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10204 <field id="may_skip_backward">
a61af66fc99e Initial load
duke
parents:
diff changeset
10205 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10206 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10207 If true, the timer can be externally adjusted and as a result skip backward.
a61af66fc99e Initial load
duke
parents:
diff changeset
10208 If false, the timer value will be monotonically increasing.
a61af66fc99e Initial load
duke
parents:
diff changeset
10209 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10210 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10211 <field id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
10212 <enum>jvmtiTimerKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
10213 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10214 The kind of timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10215 On a platform that does not distinguish between user and system time, <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
10216 id="JVMTI_TIMER_TOTAL_CPU"><code>JVMTI_TIMER_TOTAL_CPU</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10217 is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10218 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10219 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10220 <field id="reserved1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10221 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10222 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10223 Reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
10224 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10225 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10226 <field id="reserved2">
a61af66fc99e Initial load
duke
parents:
diff changeset
10227 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10228 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10229 Reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
10230 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10231 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10232 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
10233
a61af66fc99e Initial load
duke
parents:
diff changeset
10234 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10235 Where the timer kind is --
a61af66fc99e Initial load
duke
parents:
diff changeset
10236
a61af66fc99e Initial load
duke
parents:
diff changeset
10237 <constants id="jvmtiTimerKind" label="Timer Kinds" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10238 <constant id="JVMTI_TIMER_USER_CPU" num="30">
a61af66fc99e Initial load
duke
parents:
diff changeset
10239 CPU time that a thread is in user mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
10240 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10241 <constant id="JVMTI_TIMER_TOTAL_CPU" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
10242 CPU time that a thread is in user or system mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
10243 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10244 <constant id="JVMTI_TIMER_ELAPSED" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
10245 Elapsed time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10246 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10247 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10248 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10249
a61af66fc99e Initial load
duke
parents:
diff changeset
10250 <function id="GetCurrentThreadCpuTimerInfo" callbacksafe="safe" impl="innative notrace" phase="start" num="134">
a61af66fc99e Initial load
duke
parents:
diff changeset
10251 <synopsis>Get Current Thread CPU Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10252 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10253 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10254 <functionlink id="GetCurrentThreadCpuTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10255 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10256 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10257 This information is specific to the platform and the implementation of
a61af66fc99e Initial load
duke
parents:
diff changeset
10258 <functionlink id="GetCurrentThreadCpuTime"/> and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10259 does not vary by thread nor does it vary
a61af66fc99e Initial load
duke
parents:
diff changeset
10260 during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10261 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10262 Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10263 and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10264 returned by <code>GetCurrentThreadCpuTimerInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10265 and <functionlink id="GetThreadCpuTimerInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10266 may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10267 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10268 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10269 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10270 <required id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10271 Can get current thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10272 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10273 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10274 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10275 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10276 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10277 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10278 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10279 returned by <functionlink id="GetCurrentThreadCpuTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10280 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10281 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10282 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10283 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10284 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10285 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10286
a61af66fc99e Initial load
duke
parents:
diff changeset
10287 <function id="GetCurrentThreadCpuTime" callbacksafe="safe" impl="innative notrace" phase="start" num="135">
a61af66fc99e Initial load
duke
parents:
diff changeset
10288 <synopsis>Get Current Thread CPU Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10289 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10290 Return the CPU time utilized by the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
10291 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10292 Note that the <functionlink id="GetThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10293 function provides CPU time for any thread, including
a61af66fc99e Initial load
duke
parents:
diff changeset
10294 the current thread. <code>GetCurrentThreadCpuTime</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10295 exists to support platforms which cannot
a61af66fc99e Initial load
duke
parents:
diff changeset
10296 supply CPU time for threads other than the current
a61af66fc99e Initial load
duke
parents:
diff changeset
10297 thread or which have more accurate information for
a61af66fc99e Initial load
duke
parents:
diff changeset
10298 the current thread (see
a61af66fc99e Initial load
duke
parents:
diff changeset
10299 <functionlink id="GetCurrentThreadCpuTimerInfo"/> vs
a61af66fc99e Initial load
duke
parents:
diff changeset
10300 <functionlink id="GetThreadCpuTimerInfo"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10301 On many platforms this call will be equivalent to:
a61af66fc99e Initial load
duke
parents:
diff changeset
10302 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
10303 GetThreadCpuTime(env, NULL, nanos_ptr)
a61af66fc99e Initial load
duke
parents:
diff changeset
10304 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
10305 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10306 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10307 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10308 <required id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10309 Can get current thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10310 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10311 If this capability is enabled after threads have started,
a61af66fc99e Initial load
duke
parents:
diff changeset
10312 the implementation may choose any time up
a61af66fc99e Initial load
duke
parents:
diff changeset
10313 to and including the time that the capability is enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
10314 as the point where CPU time collection starts.
a61af66fc99e Initial load
duke
parents:
diff changeset
10315 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10316 This capability must be potentially available on any
a61af66fc99e Initial load
duke
parents:
diff changeset
10317 platform where
a61af66fc99e Initial load
duke
parents:
diff changeset
10318 <internallink id="jvmtiCapabilities.can_get_thread_cpu_time"><code>can_get_thread_cpu_time</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10319 is potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10320 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10321 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10322 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10323 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10324 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10325 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10326 On return, points to the CPU time used by this thread
a61af66fc99e Initial load
duke
parents:
diff changeset
10327 in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10328 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10329 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10330 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10331 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10332 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10333 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10334 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10335 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10336
a61af66fc99e Initial load
duke
parents:
diff changeset
10337 <function id="GetThreadCpuTimerInfo" num="136">
a61af66fc99e Initial load
duke
parents:
diff changeset
10338 <synopsis>Get Thread CPU Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10339 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10340 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10341 <functionlink id="GetThreadCpuTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10342 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10343 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10344 This information is specific to the platform and the implementation of
a61af66fc99e Initial load
duke
parents:
diff changeset
10345 <functionlink id="GetThreadCpuTime"/> and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10346 does not vary by thread nor does it vary
a61af66fc99e Initial load
duke
parents:
diff changeset
10347 during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10348 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10349 Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10350 and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10351 returned by <functionlink id="GetCurrentThreadCpuTimerInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10352 and <code>GetThreadCpuTimerInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10353 may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10354 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10355 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10356 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10357 <required id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10358 Can get thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10359 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10360 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10361 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10362 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10363 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10364 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10365 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10366 returned by <functionlink id="GetThreadCpuTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10367 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10368 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10369 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10370 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10371 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10372 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10373
a61af66fc99e Initial load
duke
parents:
diff changeset
10374 <function id="GetThreadCpuTime" num="137">
a61af66fc99e Initial load
duke
parents:
diff changeset
10375 <synopsis>Get Thread CPU Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10376 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10377 Return the CPU time utilized by the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
10378 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10379 Get information about this timer with
a61af66fc99e Initial load
duke
parents:
diff changeset
10380 <functionlink id="GetThreadCpuTimerInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10381 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10382 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10383 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10384 <required id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10385 Can get thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10386 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10387 If this capability is enabled after threads have started,
a61af66fc99e Initial load
duke
parents:
diff changeset
10388 the implementation may choose any time up
a61af66fc99e Initial load
duke
parents:
diff changeset
10389 to and including the time that the capability is enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
10390 as the point where CPU time collection starts.
a61af66fc99e Initial load
duke
parents:
diff changeset
10391 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10392 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10393 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10394 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
10395 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10396 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10397 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
10398 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10399 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10400 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10401 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10402 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10403 On return, points to the CPU time used by the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
10404 in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10405 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10406 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10407 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10408 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10409 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10410 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10411 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10412 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10413
a61af66fc99e Initial load
duke
parents:
diff changeset
10414 <function id="GetTimerInfo" phase="any" callbacksafe="safe" num="138">
a61af66fc99e Initial load
duke
parents:
diff changeset
10415 <synopsis>Get Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10416 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10417 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10418 <functionlink id="GetTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10419 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10420 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10421 This information will not change during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10422 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10423 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10424 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10425 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10426 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10427 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10428 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10429 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10430 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10431 returned by <functionlink id="GetTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10432 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10433 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10434 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10435 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10436 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10437 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10438
a61af66fc99e Initial load
duke
parents:
diff changeset
10439 <function id="GetTime" phase="any" callbacksafe="safe" num="139">
a61af66fc99e Initial load
duke
parents:
diff changeset
10440 <synopsis>Get Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10441 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10442 Return the current value of the system timer, in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10443 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10444 The value returned represents nanoseconds since some fixed but
a61af66fc99e Initial load
duke
parents:
diff changeset
10445 arbitrary time (perhaps in the future, so values may be
a61af66fc99e Initial load
duke
parents:
diff changeset
10446 negative). This function provides nanosecond precision, but not
a61af66fc99e Initial load
duke
parents:
diff changeset
10447 necessarily nanosecond accuracy. No guarantees are made about
a61af66fc99e Initial load
duke
parents:
diff changeset
10448 how frequently values change.
a61af66fc99e Initial load
duke
parents:
diff changeset
10449 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10450 Get information about this timer with
a61af66fc99e Initial load
duke
parents:
diff changeset
10451 <functionlink id="GetTimerInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10452 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10453 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10454 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10455 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10456 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10457 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10458 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10459 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10460 On return, points to the time in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10461 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10462 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10463 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10464 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10465 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10466 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10467 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10468 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10469
a61af66fc99e Initial load
duke
parents:
diff changeset
10470 <function id="GetAvailableProcessors" phase="any" num="144">
a61af66fc99e Initial load
duke
parents:
diff changeset
10471 <synopsis>Get Available Processors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10472 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10473 Returns the number of processors available to the Java virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
10474 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10475 This value may change during a particular invocation of the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
10476 Applications that are sensitive to the number of available processors should
a61af66fc99e Initial load
duke
parents:
diff changeset
10477 therefore occasionally poll this property.
a61af66fc99e Initial load
duke
parents:
diff changeset
10478 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10479 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10480 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10481 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10482 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10483 <param id="processor_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10484 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10485 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10486 On return, points to the maximum number of processors available to the
a61af66fc99e Initial load
duke
parents:
diff changeset
10487 virtual machine; never smaller than one.
a61af66fc99e Initial load
duke
parents:
diff changeset
10488 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10489 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10490 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10491 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10492 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10493 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10494
a61af66fc99e Initial load
duke
parents:
diff changeset
10495 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10496
a61af66fc99e Initial load
duke
parents:
diff changeset
10497
a61af66fc99e Initial load
duke
parents:
diff changeset
10498 <category id="classLoaderSearch" label="Class Loader Search">
a61af66fc99e Initial load
duke
parents:
diff changeset
10499
a61af66fc99e Initial load
duke
parents:
diff changeset
10500 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10501 These functions allow the agent to add to the locations that a class loader searches for a class.
a61af66fc99e Initial load
duke
parents:
diff changeset
10502 This is useful for installing instrumentation under the correct class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
10503 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10504
a61af66fc99e Initial load
duke
parents:
diff changeset
10505 <function id="AddToBootstrapClassLoaderSearch" jkernel="yes" phase="onload" num="149">
a61af66fc99e Initial load
duke
parents:
diff changeset
10506 <synopsis>Add To Bootstrap Class Loader Search</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10507 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10508 This function can be used to cause instrumentation classes to be defined by the
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
10509 bootstrap class loader. See <vmspec chapter="5.3.1"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10510 After the bootstrap
a61af66fc99e Initial load
duke
parents:
diff changeset
10511 class loader unsuccessfully searches for a class, the specified platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10512 search path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in
a61af66fc99e Initial load
duke
parents:
diff changeset
10513 the <paramlink id="segment"/>. This function may be called multiple times to add multiple segments,
a61af66fc99e Initial load
duke
parents:
diff changeset
10514 the segments will be searched in the order that this function was called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10515 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10516 In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10517 search path segment to be searched after the bootstrap class loader unsuccessfully searches
a61af66fc99e Initial load
duke
parents:
diff changeset
10518 for a class. The segment is typically a directory or JAR file.
a61af66fc99e Initial load
duke
parents:
diff changeset
10519 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10520 In the live phase the <paramlink id="segment"/> may be used to specify any platform-dependent
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
10521 path to a <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10522 JAR file</externallink>. The agent should take care that the JAR file does not
a61af66fc99e Initial load
duke
parents:
diff changeset
10523 contain any classes or resources other than those to be defined by the bootstrap
a61af66fc99e Initial load
duke
parents:
diff changeset
10524 class loader for the purposes of instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
10525 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
10526 <vmspec/> specifies that a subsequent attempt to resolve a symbolic
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10527 reference that the Java virtual machine has previously unsuccessfully attempted
a61af66fc99e Initial load
duke
parents:
diff changeset
10528 to resolve always fails with the same error that was thrown as a result of the
a61af66fc99e Initial load
duke
parents:
diff changeset
10529 initial resolution attempt. Consequently, if the JAR file contains an entry
a61af66fc99e Initial load
duke
parents:
diff changeset
10530 that corresponds to a class for which the Java virtual machine has
a61af66fc99e Initial load
duke
parents:
diff changeset
10531 unsuccessfully attempted to resolve a reference, then subsequent attempts to
a61af66fc99e Initial load
duke
parents:
diff changeset
10532 resolve that reference will fail with the same error as the initial attempt.
a61af66fc99e Initial load
duke
parents:
diff changeset
10533 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10534 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10535 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10536 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10537 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10538 <param id="segment">
a61af66fc99e Initial load
duke
parents:
diff changeset
10539 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10540 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10541 The platform-dependent search path segment, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10542 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10543 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10544 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10545 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10546 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10547 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
10548 <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
a61af66fc99e Initial load
duke
parents:
diff changeset
10549 existing JAR file is an invalid path.
a61af66fc99e Initial load
duke
parents:
diff changeset
10550 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10551 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10552 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10553
a61af66fc99e Initial load
duke
parents:
diff changeset
10554 <function id="AddToSystemClassLoaderSearch" jkernel="yes" phase="onload" num="151" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10555 <synopsis>Add To System Class Loader Search</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10556 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10557 This function can be used to cause instrumentation classes to be
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
10558 defined by the system class loader. See <vmspec chapter="5.3.2"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10559 After the class loader unsuccessfully searches for a class, the specified platform-dependent search
a61af66fc99e Initial load
duke
parents:
diff changeset
10560 path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10561 <paramlink id="segment"/>. This function may be called multiple times to add multiple segments, the
a61af66fc99e Initial load
duke
parents:
diff changeset
10562 segments will be searched in the order that this function was called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10563 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10564 In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10565 search path segment to be searched after the system class loader unsuccessfully searches
a61af66fc99e Initial load
duke
parents:
diff changeset
10566 for a class. The segment is typically a directory or JAR file.
a61af66fc99e Initial load
duke
parents:
diff changeset
10567 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10568 In the live phase the <paramlink id="segment"/> is a platform-dependent path to a <externallink
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
10569 id="http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html">JAR file</externallink> to be
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10570 searched after the system class loader unsuccessfully searches for a class. The agent should
a61af66fc99e Initial load
duke
parents:
diff changeset
10571 take care that the JAR file does not contain any classes or resources other than those to be
a61af66fc99e Initial load
duke
parents:
diff changeset
10572 defined by the system class loader for the purposes of instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
10573 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10574 In the live phase the system class loader supports adding a JAR file to be searched if
a61af66fc99e Initial load
duke
parents:
diff changeset
10575 the system class loader implements a method name <code>appendToClassPathForInstrumentation</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10576 which takes a single parameter of type <code>java.lang.String</code>. The method is not required
a61af66fc99e Initial load
duke
parents:
diff changeset
10577 to have <code>public</code> access.
a61af66fc99e Initial load
duke
parents:
diff changeset
10578 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
10579 <vmspec/> specifies that a subsequent attempt to resolve a symbolic
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10580 reference that the Java virtual machine has previously unsuccessfully attempted
a61af66fc99e Initial load
duke
parents:
diff changeset
10581 to resolve always fails with the same error that was thrown as a result of the
a61af66fc99e Initial load
duke
parents:
diff changeset
10582 initial resolution attempt. Consequently, if the JAR file contains an entry
a61af66fc99e Initial load
duke
parents:
diff changeset
10583 that corresponds to a class for which the Java virtual machine has
a61af66fc99e Initial load
duke
parents:
diff changeset
10584 unsuccessfully attempted to resolve a reference, then subsequent attempts to
a61af66fc99e Initial load
duke
parents:
diff changeset
10585 resolve that reference will fail with the same error as the initial attempt.
a61af66fc99e Initial load
duke
parents:
diff changeset
10586 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10587 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10588 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10589 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10590 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10591 <param id="segment">
a61af66fc99e Initial load
duke
parents:
diff changeset
10592 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10593 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10594 The platform-dependent search path segment, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10595 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10596 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10597 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10598 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10599 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10600 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
10601 <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
a61af66fc99e Initial load
duke
parents:
diff changeset
10602 existing JAR file is an invalid path.
a61af66fc99e Initial load
duke
parents:
diff changeset
10603 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10604 <error id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED">
a61af66fc99e Initial load
duke
parents:
diff changeset
10605 Operation not supported by the system class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
10606 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10607 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10608 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10609
a61af66fc99e Initial load
duke
parents:
diff changeset
10610 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10611
a61af66fc99e Initial load
duke
parents:
diff changeset
10612
a61af66fc99e Initial load
duke
parents:
diff changeset
10613 <category id="props" label="System Properties">
a61af66fc99e Initial load
duke
parents:
diff changeset
10614
a61af66fc99e Initial load
duke
parents:
diff changeset
10615 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10616 These functions get and set system properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
10617 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10618
a61af66fc99e Initial load
duke
parents:
diff changeset
10619 <function id="GetSystemProperties" phase="onload" num="130">
a61af66fc99e Initial load
duke
parents:
diff changeset
10620 <synopsis>Get System Properties</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10621 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10622 The list of VM system property keys which may be used with
a61af66fc99e Initial load
duke
parents:
diff changeset
10623 <functionlink id="GetSystemProperty"/> is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10624 It is strongly recommended that virtual machines provide the
a61af66fc99e Initial load
duke
parents:
diff changeset
10625 following property keys:
a61af66fc99e Initial load
duke
parents:
diff changeset
10626 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10627 <li><code>java.vm.vendor</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10628 <li><code>java.vm.version</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10629 <li><code>java.vm.name</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10630 <li><code>java.vm.info</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10631 <li><code>java.library.path</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10632 <li><code>java.class.path</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10633 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10634 Provides access to system properties defined by and used
a61af66fc99e Initial load
duke
parents:
diff changeset
10635 by the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10636 Properties set on the command-line are included.
a61af66fc99e Initial load
duke
parents:
diff changeset
10637 This allows getting and setting of these properties
a61af66fc99e Initial load
duke
parents:
diff changeset
10638 before the VM even begins executing bytecodes.
a61af66fc99e Initial load
duke
parents:
diff changeset
10639 Since this is a VM view of system properties, the set of available
a61af66fc99e Initial load
duke
parents:
diff changeset
10640 properties will usually be different than that
a61af66fc99e Initial load
duke
parents:
diff changeset
10641 in <code>java.lang.System.getProperties</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10642 JNI method invocation may be used to access
a61af66fc99e Initial load
duke
parents:
diff changeset
10643 <code>java.lang.System.getProperties</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10644 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10645 The set of properties may grow during execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10646 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10647 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10648 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10649 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10650 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10651 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10652 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10653 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10654 On return, points to the number of property keys returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10655 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10656 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10657 <param id="property_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10658 <allocallocbuf outcount="count_ptr"><char/></allocallocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10659 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10660 On return, points to an array of property keys, encoded as
a61af66fc99e Initial load
duke
parents:
diff changeset
10661 <internallink id="mUTF">modified UTF-8</internallink> strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
10662 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10663 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10664 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10665 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10666 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10667 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10668
a61af66fc99e Initial load
duke
parents:
diff changeset
10669 <function id="GetSystemProperty" phase="onload" num="131">
a61af66fc99e Initial load
duke
parents:
diff changeset
10670 <synopsis>Get System Property</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10671 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10672 Return a VM system property value given the property key.
a61af66fc99e Initial load
duke
parents:
diff changeset
10673 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10674 The function <functionlink id="GetSystemProperties"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10675 returns the set of property keys which may be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
10676 The properties which can be retrieved may grow during
a61af66fc99e Initial load
duke
parents:
diff changeset
10677 execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10678 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10679 Since this is a VM view of system properties, the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10680 of properties may differ from that returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
10681 <code>java.lang.System.getProperty(String)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10682 A typical VM might copy the values of the VM system
a61af66fc99e Initial load
duke
parents:
diff changeset
10683 properties into the <code>Properties</code> held by
a61af66fc99e Initial load
duke
parents:
diff changeset
10684 <code>java.lang.System</code> during the initialization
a61af66fc99e Initial load
duke
parents:
diff changeset
10685 of that class. Thereafter any changes to the VM system
a61af66fc99e Initial load
duke
parents:
diff changeset
10686 properties (with <functionlink id="SetSystemProperty"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
10687 or the <code>java.lang.System</code> system properties
a61af66fc99e Initial load
duke
parents:
diff changeset
10688 (with <code>java.lang.System.setProperty(String,String)</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
10689 would cause the values to diverge.
a61af66fc99e Initial load
duke
parents:
diff changeset
10690 JNI method invocation may be used to access
a61af66fc99e Initial load
duke
parents:
diff changeset
10691 <code>java.lang.System.getProperty(String)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10692 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10693 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10694 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10695 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10696 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10697 <param id="property">
a61af66fc99e Initial load
duke
parents:
diff changeset
10698 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10699 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10700 The key of the property to retrieve, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10701 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10702 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10703 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10704 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10705 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10706 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10707 On return, points to the property value, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10708 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10709 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10710 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10711 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10712 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10713 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10714 This property is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10715 Use <functionlink id="GetSystemProperties"/> to find available properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
10716 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10717 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10718 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10719
a61af66fc99e Initial load
duke
parents:
diff changeset
10720 <function id="SetSystemProperty" phase="onloadOnly" num="132">
a61af66fc99e Initial load
duke
parents:
diff changeset
10721 <synopsis>Set System Property</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10722 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10723 Set a VM system property value.
a61af66fc99e Initial load
duke
parents:
diff changeset
10724 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10725 The function <functionlink id="GetSystemProperties"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10726 returns the set of property keys, some of these may be settable.
a61af66fc99e Initial load
duke
parents:
diff changeset
10727 See <functionlink id="GetSystemProperty"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10728 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10729 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10730 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10731 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10732 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10733 <param id="property">
a61af66fc99e Initial load
duke
parents:
diff changeset
10734 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10735 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10736 The key of the property, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10737 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10738 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10739 </param>
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 2019
diff changeset
10740 <param id="value_ptr">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10741 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10742 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10743 <nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10744 do not set the value, but return <errorlink id="JVMTI_ERROR_NOT_AVAILABLE"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10745 if the property is not writeable
a61af66fc99e Initial load
duke
parents:
diff changeset
10746 </nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10747 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10748 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10749 The property value to set, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10750 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10751 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10752 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10753 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10754 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10755 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10756 This property is not available or is not writeable.
a61af66fc99e Initial load
duke
parents:
diff changeset
10757 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10758 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10759 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10760
a61af66fc99e Initial load
duke
parents:
diff changeset
10761 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10762
a61af66fc99e Initial load
duke
parents:
diff changeset
10763 <category id="general" label="General">
a61af66fc99e Initial load
duke
parents:
diff changeset
10764
a61af66fc99e Initial load
duke
parents:
diff changeset
10765 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10766 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10767
a61af66fc99e Initial load
duke
parents:
diff changeset
10768 <function id="GetPhase" jkernel="yes" phase="any" num="133">
a61af66fc99e Initial load
duke
parents:
diff changeset
10769 <synopsis>Get Phase</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10771 Return the current phase of VM execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10772 The phases proceed in sequence:
a61af66fc99e Initial load
duke
parents:
diff changeset
10773 <constants id="jvmtiPhase" label="Phases of execution" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10774 <constant id="JVMTI_PHASE_ONLOAD" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10775 <code>OnLoad</code> phase: while in the
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
10776 <internallink id="onload"><code>Agent_OnLoad</code></internallink>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
10777 or, for statically linked agents, the <internallink id="onload">
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
10778 <code>Agent_OnLoad_&lt;agent-lib-name&gt;
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
10779 </code></internallink> function.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10780 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10781 <constant id="JVMTI_PHASE_PRIMORDIAL" num="2">
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
10782 Primordial phase: between return from <code>Agent_OnLoad</code>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
10783 or <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> and the
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10784 <code>VMStart</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
10785 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10786 <constant id="JVMTI_PHASE_START" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
10787 Start phase: when the <eventlink id="VMStart"><code>VMStart</code></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
10788 is sent and until the <code>VMInit</code> event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10789 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10790 <constant id="JVMTI_PHASE_LIVE" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
10791 Live phase: when the <eventlink id="VMInit"><code>VMInit</code></eventlink> event is sent
a61af66fc99e Initial load
duke
parents:
diff changeset
10792 and until the <eventlink id="VMDeath"></eventlink> event returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
10793 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10794 <constant id="JVMTI_PHASE_DEAD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
10795 Dead phase: after the <eventlink id="VMDeath"></eventlink> event returns or after
a61af66fc99e Initial load
duke
parents:
diff changeset
10796 start-up failure.
a61af66fc99e Initial load
duke
parents:
diff changeset
10797 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10798 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10799 In the case of start-up failure the VM will proceed directly to the dead
a61af66fc99e Initial load
duke
parents:
diff changeset
10800 phase skipping intermediate phases and neither a <code>VMInit</code> nor
a61af66fc99e Initial load
duke
parents:
diff changeset
10801 <code>VMDeath</code> event will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10802 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10803 Most <jvmti/> functions operate only in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10804 The following functions operate in either the <code>OnLoad</code> or live phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10805 <functionphaselist phase="onload"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10806 The following functions operate in only the <code>OnLoad</code> phase:
a61af66fc99e Initial load
duke
parents:
diff changeset
10807 <functionphaselist phase="onloadOnly"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10808 The following functions operate in the start or live phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10809 <functionphaselist phase="start"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10810 The following functions operate in any phase:
a61af66fc99e Initial load
duke
parents:
diff changeset
10811 <functionphaselist phase="any"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10812 JNI functions (except the Invocation API) must only be used in the start or live phases.
a61af66fc99e Initial load
duke
parents:
diff changeset
10813 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10814 Most <jvmti/> events are sent only in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10815 The following events operate in others phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10816 <eventphaselist phase="start"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10817 <eventphaselist phase="any"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10818 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10819 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10820 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10821 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10822 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10823 <param id="phase_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10824 <outptr><enum>jvmtiPhase</enum></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10825 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10826 On return, points to the phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10827 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10828 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10829 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10830 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10831 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10832 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10833
a61af66fc99e Initial load
duke
parents:
diff changeset
10834 <function id="DisposeEnvironment" jkernel="yes" phase="any" num="127">
a61af66fc99e Initial load
duke
parents:
diff changeset
10835 <synopsis>Dispose Environment</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10836 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10837 Shutdown a <jvmti/> connection created with JNI <code>GetEnv</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10838 (see <internallink id="environments"><jvmti/> Environments</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10839 Dispose of any resources held by the environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
10840 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10841 What resources are reclaimed? What is undone?
a61af66fc99e Initial load
duke
parents:
diff changeset
10842 Breakpoints,watchpoints removed?
a61af66fc99e Initial load
duke
parents:
diff changeset
10843 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10844 Threads suspended by this environment are not resumed by this call,
a61af66fc99e Initial load
duke
parents:
diff changeset
10845 this must be done explicitly by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10846 Memory allocated by this environment via calls to <jvmti/> functions
a61af66fc99e Initial load
duke
parents:
diff changeset
10847 is not released, this can be done explicitly by the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
10848 by calling <functionlink id="Deallocate"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10849 Raw monitors created by this environment are not destroyed,
a61af66fc99e Initial load
duke
parents:
diff changeset
10850 this can be done explicitly by the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
10851 by calling <functionlink id="DestroyRawMonitor"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10852 The state of threads waiting on raw monitors created by this environment
a61af66fc99e Initial load
duke
parents:
diff changeset
10853 are not affected.
a61af66fc99e Initial load
duke
parents:
diff changeset
10854 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10855 Any <functionlink id="SetNativeMethodPrefix">native method
a61af66fc99e Initial load
duke
parents:
diff changeset
10856 prefixes</functionlink> for this environment will be unset;
a61af66fc99e Initial load
duke
parents:
diff changeset
10857 the agent must remove any prefixed native methods before
a61af66fc99e Initial load
duke
parents:
diff changeset
10858 dispose is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10859 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10860 Any <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10861 held by this environment are relinquished.
a61af66fc99e Initial load
duke
parents:
diff changeset
10862 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10863 Events enabled by this environment will no longer be sent, however
a61af66fc99e Initial load
duke
parents:
diff changeset
10864 event handlers currently running will continue to run. Caution must
a61af66fc99e Initial load
duke
parents:
diff changeset
10865 be exercised in the design of event handlers whose environment may
a61af66fc99e Initial load
duke
parents:
diff changeset
10866 be disposed and thus become invalid during their execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10867 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10868 This environment may not be used after this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
10869 This call returns to the caller.
a61af66fc99e Initial load
duke
parents:
diff changeset
10870 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10871 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10872 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10873 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10874 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10875 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10876 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10877 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10878 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10879
a61af66fc99e Initial load
duke
parents:
diff changeset
10880 <function id="SetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="148">
a61af66fc99e Initial load
duke
parents:
diff changeset
10881 <synopsis>Set Environment Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10882 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10883 The VM stores a pointer value associated with each environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
10884 This pointer value is called <i>environment-local storage</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10885 This value is <code>NULL</code> unless set with this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10886 Agents can allocate memory in which they store environment specific
a61af66fc99e Initial load
duke
parents:
diff changeset
10887 information. By setting environment-local storage it can then be
a61af66fc99e Initial load
duke
parents:
diff changeset
10888 accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
10889 <functionlink id="GetEnvironmentLocalStorage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10890 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10891 Called by the agent to set the value of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10892 environment-local storage. <jvmti/> supplies to the agent a pointer-size
a61af66fc99e Initial load
duke
parents:
diff changeset
10893 environment-local storage that can be used to record per-environment
a61af66fc99e Initial load
duke
parents:
diff changeset
10894 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10895 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10896 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10897 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10898 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10899 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10900 <param id="data">
a61af66fc99e Initial load
duke
parents:
diff changeset
10901 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10902 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10903 <nullok>value is set to <code>NULL</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10904 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10905 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10906 The value to be entered into the environment-local storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
10907 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10908 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10909 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10910 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10911 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10912 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10913
a61af66fc99e Initial load
duke
parents:
diff changeset
10914 <function id="GetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="147">
a61af66fc99e Initial load
duke
parents:
diff changeset
10915 <synopsis>Get Environment Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10916 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10917 Called by the agent to get the value of the <jvmti/> environment-local
a61af66fc99e Initial load
duke
parents:
diff changeset
10918 storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
10919 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10920 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10921 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10922 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10923 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10924 <param id="data_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10925 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10926 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10927 Pointer through which the value of the environment local
a61af66fc99e Initial load
duke
parents:
diff changeset
10928 storage is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10929 If environment-local storage has not been set with
a61af66fc99e Initial load
duke
parents:
diff changeset
10930 <functionlink id="SetEnvironmentLocalStorage"></functionlink> returned
a61af66fc99e Initial load
duke
parents:
diff changeset
10931 pointer is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10932 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10933 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10934 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10935 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10936 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10937 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10938
a61af66fc99e Initial load
duke
parents:
diff changeset
10939 <function id="GetVersionNumber" jkernel="yes" phase="any" num="88">
a61af66fc99e Initial load
duke
parents:
diff changeset
10940 <synopsis>Get Version Number</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10941 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10942 Return the <jvmti/> version via <code>version_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10943 The return value is the version identifier.
a61af66fc99e Initial load
duke
parents:
diff changeset
10944 The version identifier includes major, minor and micro
a61af66fc99e Initial load
duke
parents:
diff changeset
10945 version as well as the interface type.
a61af66fc99e Initial load
duke
parents:
diff changeset
10946 <constants id="jvmtiVersionInterfaceTypes" label="Version Interface Types" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10947 <constant id="JVMTI_VERSION_INTERFACE_JNI" num="0x00000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10948 Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
10949 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10950 <constant id="JVMTI_VERSION_INTERFACE_JVMTI" num="0x30000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10951 Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10952 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10953 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10954 <constants id="jvmtiVersionMasks" label="Version Masks" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10955 <constant id="JVMTI_VERSION_MASK_INTERFACE_TYPE" num="0x70000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10956 Mask to extract interface type.
a61af66fc99e Initial load
duke
parents:
diff changeset
10957 The value of the version returned by this function masked with
a61af66fc99e Initial load
duke
parents:
diff changeset
10958 <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> is always
a61af66fc99e Initial load
duke
parents:
diff changeset
10959 <code>JVMTI_VERSION_INTERFACE_JVMTI</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10960 since this is a <jvmti/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10961 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10962 <constant id="JVMTI_VERSION_MASK_MAJOR" num="0x0FFF0000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10963 Mask to extract major version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10964 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10965 <constant id="JVMTI_VERSION_MASK_MINOR" num="0x0000FF00">
a61af66fc99e Initial load
duke
parents:
diff changeset
10966 Mask to extract minor version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10967 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10968 <constant id="JVMTI_VERSION_MASK_MICRO" num="0x000000FF">
a61af66fc99e Initial load
duke
parents:
diff changeset
10969 Mask to extract micro version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10970 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10971 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10972 <constants id="jvmtiVersionShifts" label="Version Shifts" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10973 <constant id="JVMTI_VERSION_SHIFT_MAJOR" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
10974 Shift to extract major version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10975 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10976 <constant id="JVMTI_VERSION_SHIFT_MINOR" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
10977 Shift to extract minor version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10978 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10979 <constant id="JVMTI_VERSION_SHIFT_MICRO" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
10980 Shift to extract micro version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10981 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10982 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10983 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10984 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10985 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10986 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10987 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10988 <param id="version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10989 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10990 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10991 On return, points to the <jvmti/> version.
a61af66fc99e Initial load
duke
parents:
diff changeset
10992 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10993 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10994 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10995 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10996 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10997 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10998
a61af66fc99e Initial load
duke
parents:
diff changeset
10999
a61af66fc99e Initial load
duke
parents:
diff changeset
11000 <function id="GetErrorName" phase="any" num="128">
a61af66fc99e Initial load
duke
parents:
diff changeset
11001 <synopsis>Get Error Name</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
11002 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11003 Return the symbolic name for an
a61af66fc99e Initial load
duke
parents:
diff changeset
11004 <internallink id="ErrorSection">error code</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11005 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11006 For example
a61af66fc99e Initial load
duke
parents:
diff changeset
11007 <code>GetErrorName(env, JVMTI_ERROR_NONE, &amp;err_name)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11008 would return in <code>err_name</code> the string
a61af66fc99e Initial load
duke
parents:
diff changeset
11009 <code>"JVMTI_ERROR_NONE"</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11010 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11011 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11012 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11013 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11014 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11015 <param id="error">
a61af66fc99e Initial load
duke
parents:
diff changeset
11016 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
11017 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11018 The error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
11019 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11020 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11021 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11022 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
11023 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11024 On return, points to the error name.
a61af66fc99e Initial load
duke
parents:
diff changeset
11025 The name is encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
11026 <internallink id="mUTF">modified UTF-8</internallink> string,
a61af66fc99e Initial load
duke
parents:
diff changeset
11027 but is restricted to the ASCII subset.
a61af66fc99e Initial load
duke
parents:
diff changeset
11028 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11029 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11030 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11031 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11032 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11033 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
11034
a61af66fc99e Initial load
duke
parents:
diff changeset
11035 <function id="SetVerboseFlag" phase="any" num="150">
a61af66fc99e Initial load
duke
parents:
diff changeset
11036 <synopsis>Set Verbose Flag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
11037 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11038 <constants id="jvmtiVerboseFlag" label="Verbose Flag Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
11039 <constant id="JVMTI_VERBOSE_OTHER" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11040 Verbose output other than the below.
a61af66fc99e Initial load
duke
parents:
diff changeset
11041 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11042 <constant id="JVMTI_VERBOSE_GC" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
11043 Verbose garbage collector output, like that specified with <code>-verbose:gc</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11044 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11045 <constant id="JVMTI_VERBOSE_CLASS" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
11046 Verbose class loading output, like that specified with <code>-verbose:class</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11047 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11048 <constant id="JVMTI_VERBOSE_JNI" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
11049 Verbose JNI output, like that specified with <code>-verbose:jni</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11050 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11051 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
11052 Control verbose output.
a61af66fc99e Initial load
duke
parents:
diff changeset
11053 This is the output which typically is sent to <code>stderr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11054 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11055 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11056 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11057 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11058 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11059 <param id="flag">
a61af66fc99e Initial load
duke
parents:
diff changeset
11060 <enum>jvmtiVerboseFlag</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
11061 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11062 Which verbose flag to set.
a61af66fc99e Initial load
duke
parents:
diff changeset
11063 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11064 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11065 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11066 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11067 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11068 New value of the flag.
a61af66fc99e Initial load
duke
parents:
diff changeset
11069 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11070 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11071 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11072 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11073 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11074 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
11075
a61af66fc99e Initial load
duke
parents:
diff changeset
11076
a61af66fc99e Initial load
duke
parents:
diff changeset
11077 <function id="GetJLocationFormat" phase="any" num="129">
a61af66fc99e Initial load
duke
parents:
diff changeset
11078 <synopsis>Get JLocation Format</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
11079 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11080 Although the greatest functionality is achieved with location information
a61af66fc99e Initial load
duke
parents:
diff changeset
11081 referencing the virtual machine bytecode index, the definition of
a61af66fc99e Initial load
duke
parents:
diff changeset
11082 <code>jlocation</code> has intentionally been left unconstrained to allow VM
a61af66fc99e Initial load
duke
parents:
diff changeset
11083 implementations that do not have this information.
a61af66fc99e Initial load
duke
parents:
diff changeset
11084 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11085 This function describes the representation of <code>jlocation</code> used in this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
11086 If the returned format is <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11087 <code>jlocation</code>s can
a61af66fc99e Initial load
duke
parents:
diff changeset
11088 be used as in indices into the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
11089 <functionlink id="GetBytecodes"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11090 <constants id="jvmtiJlocationFormat" label="JLocation Format Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
11091 <constant id="JVMTI_JLOCATION_JVMBCI" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
11092 <code>jlocation</code> values represent virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
11093 bytecode indices--that is, offsets into the
a61af66fc99e Initial load
duke
parents:
diff changeset
11094 virtual machine code for a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11095 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11096 <constant id="JVMTI_JLOCATION_MACHINEPC" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
11097 <code>jlocation</code> values represent native machine
a61af66fc99e Initial load
duke
parents:
diff changeset
11098 program counter values.
a61af66fc99e Initial load
duke
parents:
diff changeset
11099 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11100 <constant id="JVMTI_JLOCATION_OTHER" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11101 <code>jlocation</code> values have some other representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11102 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11103 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
11104 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11105 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11106 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11107 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11108 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11109 <param id="format_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11110 <outptr><enum>jvmtiJlocationFormat</enum></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11111 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11112 On return, points to the format identifier for <code>jlocation</code> values.
a61af66fc99e Initial load
duke
parents:
diff changeset
11113 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11114 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11115 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11116 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11117 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11118 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
11119
a61af66fc99e Initial load
duke
parents:
diff changeset
11120 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
11121
a61af66fc99e Initial load
duke
parents:
diff changeset
11122 </functionsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
11123
a61af66fc99e Initial load
duke
parents:
diff changeset
11124 <errorsection label="Error Reference">
a61af66fc99e Initial load
duke
parents:
diff changeset
11125 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11126 Every <jvmti/> function returns a <b><code>jvmtiError</code></b> error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
11127 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11128 It is the responsibility of the agent to call <jvmti/> functions with
a61af66fc99e Initial load
duke
parents:
diff changeset
11129 valid parameters and in the proper context (calling thread is attached,
a61af66fc99e Initial load
duke
parents:
diff changeset
11130 phase is correct, etc.).
a61af66fc99e Initial load
duke
parents:
diff changeset
11131 Detecting some error conditions may be difficult, inefficient, or
a61af66fc99e Initial load
duke
parents:
diff changeset
11132 impossible for an implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11133 The errors listed in
a61af66fc99e Initial load
duke
parents:
diff changeset
11134 <internallink id="reqerrors">Function Specific Required Errors</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11135 must be detected by the implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11136 All other errors represent the recommended response to the error
a61af66fc99e Initial load
duke
parents:
diff changeset
11137 condition.
a61af66fc99e Initial load
duke
parents:
diff changeset
11138 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11139
a61af66fc99e Initial load
duke
parents:
diff changeset
11140 <errorcategory id="universal-error" label="Universal Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11141 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11142 The following errors may be returned by any function
a61af66fc99e Initial load
duke
parents:
diff changeset
11143 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11144
a61af66fc99e Initial load
duke
parents:
diff changeset
11145 <errorid id="JVMTI_ERROR_NONE" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11146 No error has occurred. This is the error code that is returned
a61af66fc99e Initial load
duke
parents:
diff changeset
11147 on successful completion of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11148 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11149 <errorid id="JVMTI_ERROR_NULL_POINTER" num="100">
a61af66fc99e Initial load
duke
parents:
diff changeset
11150 Pointer is unexpectedly <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11151 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11152 <errorid id="JVMTI_ERROR_OUT_OF_MEMORY" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
11153 The function attempted to allocate memory and no more memory was
a61af66fc99e Initial load
duke
parents:
diff changeset
11154 available for allocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11155 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11156 <errorid id="JVMTI_ERROR_ACCESS_DENIED" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
11157 The desired functionality has not been enabled in this virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
11158 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11159 <errorid id="JVMTI_ERROR_UNATTACHED_THREAD" num="115">
a61af66fc99e Initial load
duke
parents:
diff changeset
11160 The thread being used to call this function is not attached
a61af66fc99e Initial load
duke
parents:
diff changeset
11161 to the virtual machine. Calls must be made from attached threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
11162 See <code>AttachCurrentThread</code> in the JNI invocation API.
a61af66fc99e Initial load
duke
parents:
diff changeset
11163 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11164 <errorid id="JVMTI_ERROR_INVALID_ENVIRONMENT" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
11165 The <jvmti/> environment provided is no longer connected or is
a61af66fc99e Initial load
duke
parents:
diff changeset
11166 not an environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
11167 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11168 <errorid id="JVMTI_ERROR_WRONG_PHASE" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
11169 The desired functionality is not available in the current
a61af66fc99e Initial load
duke
parents:
diff changeset
11170 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11171 Always returned if the virtual machine has completed running.
a61af66fc99e Initial load
duke
parents:
diff changeset
11172 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11173 <errorid id="JVMTI_ERROR_INTERNAL" num="113">
a61af66fc99e Initial load
duke
parents:
diff changeset
11174 An unexpected internal error has occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
11175 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11176 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11177
a61af66fc99e Initial load
duke
parents:
diff changeset
11178 <errorcategory id="reqerrors" label="Function Specific Required Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11179 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11180 The following errors are returned by some <jvmti/> functions and must
a61af66fc99e Initial load
duke
parents:
diff changeset
11181 be returned by the implementation when the condition occurs.
a61af66fc99e Initial load
duke
parents:
diff changeset
11182 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11183
a61af66fc99e Initial load
duke
parents:
diff changeset
11184 <errorid id="JVMTI_ERROR_INVALID_PRIORITY" num="12">
a61af66fc99e Initial load
duke
parents:
diff changeset
11185 Invalid priority.
a61af66fc99e Initial load
duke
parents:
diff changeset
11186 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11187 <errorid id="JVMTI_ERROR_THREAD_NOT_SUSPENDED" num="13">
a61af66fc99e Initial load
duke
parents:
diff changeset
11188 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
11189 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11190 <errorid id="JVMTI_ERROR_THREAD_SUSPENDED" num="14">
a61af66fc99e Initial load
duke
parents:
diff changeset
11191 Thread already suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
11192 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11193 <errorid id="JVMTI_ERROR_THREAD_NOT_ALIVE" num="15">
a61af66fc99e Initial load
duke
parents:
diff changeset
11194 This operation requires the thread to be alive--that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
11195 it must be started and not yet have died.
a61af66fc99e Initial load
duke
parents:
diff changeset
11196 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11197 <errorid id="JVMTI_ERROR_CLASS_NOT_PREPARED" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
11198 The class has been loaded but not yet prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
11199 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11200 <errorid id="JVMTI_ERROR_NO_MORE_FRAMES" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
11201 There are no Java programming language or JNI stack frames at the specified depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
11202 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11203 <errorid id="JVMTI_ERROR_OPAQUE_FRAME" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
11204 Information about the frame is not available (e.g. for native frames).
a61af66fc99e Initial load
duke
parents:
diff changeset
11205 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11206 <errorid id="JVMTI_ERROR_DUPLICATE" num="40">
a61af66fc99e Initial load
duke
parents:
diff changeset
11207 Item already set.
a61af66fc99e Initial load
duke
parents:
diff changeset
11208 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11209 <errorid id="JVMTI_ERROR_NOT_FOUND" num="41">
a61af66fc99e Initial load
duke
parents:
diff changeset
11210 Desired element (e.g. field or breakpoint) not found
a61af66fc99e Initial load
duke
parents:
diff changeset
11211 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11212 <errorid id="JVMTI_ERROR_NOT_MONITOR_OWNER" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
11213 This thread doesn't own the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
11214 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11215 <errorid id="JVMTI_ERROR_INTERRUPT" num="52">
a61af66fc99e Initial load
duke
parents:
diff changeset
11216 The call has been interrupted before completion.
a61af66fc99e Initial load
duke
parents:
diff changeset
11217 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11218 <errorid id="JVMTI_ERROR_UNMODIFIABLE_CLASS" num="79">
a61af66fc99e Initial load
duke
parents:
diff changeset
11219 The class cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
11220 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11221 <errorid id="JVMTI_ERROR_NOT_AVAILABLE" num="98">
a61af66fc99e Initial load
duke
parents:
diff changeset
11222 The functionality is not available in this virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
11223 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11224 <errorid id="JVMTI_ERROR_ABSENT_INFORMATION" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
11225 The requested information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11226 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11227 <errorid id="JVMTI_ERROR_INVALID_EVENT_TYPE" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
11228 The specified event type ID is not recognized.
a61af66fc99e Initial load
duke
parents:
diff changeset
11229 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11230 <errorid id="JVMTI_ERROR_NATIVE_METHOD" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
11231 The requested information is not available for native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11232 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11233 <errorid id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
11234 The class loader does not support this operation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11235 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11236 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11237
a61af66fc99e Initial load
duke
parents:
diff changeset
11238 <errorcategory id="function-specific-errors" label="Function Specific Agent Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11239 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11240 The following errors are returned by some <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
11241 They are returned in the event of invalid parameters passed by the
a61af66fc99e Initial load
duke
parents:
diff changeset
11242 agent or usage in an invalid context.
a61af66fc99e Initial load
duke
parents:
diff changeset
11243 An implementation is not required to detect these errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
11244 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11245
a61af66fc99e Initial load
duke
parents:
diff changeset
11246 <errorid id="JVMTI_ERROR_INVALID_THREAD" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
11247 The passed thread is not a valid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11248 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11249 <errorid id="JVMTI_ERROR_INVALID_FIELDID" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
11250 Invalid field.
a61af66fc99e Initial load
duke
parents:
diff changeset
11251 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11252 <errorid id="JVMTI_ERROR_INVALID_METHODID" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
11253 Invalid method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11254 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11255 <errorid id="JVMTI_ERROR_INVALID_LOCATION" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
11256 Invalid location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11257 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11258 <errorid id="JVMTI_ERROR_INVALID_OBJECT" num="20">
a61af66fc99e Initial load
duke
parents:
diff changeset
11259 Invalid object.
a61af66fc99e Initial load
duke
parents:
diff changeset
11260 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11261 <errorid id="JVMTI_ERROR_INVALID_CLASS" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
11262 Invalid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
11263 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11264 <errorid id="JVMTI_ERROR_TYPE_MISMATCH" num="34">
a61af66fc99e Initial load
duke
parents:
diff changeset
11265 The variable is not an appropriate type for the function used.
a61af66fc99e Initial load
duke
parents:
diff changeset
11266 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11267 <errorid id="JVMTI_ERROR_INVALID_SLOT" num="35">
a61af66fc99e Initial load
duke
parents:
diff changeset
11268 Invalid slot.
a61af66fc99e Initial load
duke
parents:
diff changeset
11269 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11270 <errorid id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY" num="99">
a61af66fc99e Initial load
duke
parents:
diff changeset
11271 The capability being used is false in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
11272 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11273 <errorid id="JVMTI_ERROR_INVALID_THREAD_GROUP" num="11">
a61af66fc99e Initial load
duke
parents:
diff changeset
11274 Thread group invalid.
a61af66fc99e Initial load
duke
parents:
diff changeset
11275 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11276 <errorid id="JVMTI_ERROR_INVALID_MONITOR" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
11277 Invalid raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
11278 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11279 <errorid id="JVMTI_ERROR_ILLEGAL_ARGUMENT" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
11280 Illegal argument.
a61af66fc99e Initial load
duke
parents:
diff changeset
11281 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11282 <errorid id="JVMTI_ERROR_INVALID_TYPESTATE" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
11283 The state of the thread has been modified, and is now inconsistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
11284 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11285 <errorid id="JVMTI_ERROR_UNSUPPORTED_VERSION" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
11286 A new class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
11287 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11288 <errorid id="JVMTI_ERROR_INVALID_CLASS_FORMAT" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
11289 A new class file is malformed (the VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11290 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11291 <errorid id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
11292 The new class file definitions would lead to a circular
a61af66fc99e Initial load
duke
parents:
diff changeset
11293 definition (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11294 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11295 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
11296 A new class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11297 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11298 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
11299 A new class version changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
11300 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11301 <errorid id="JVMTI_ERROR_FAILS_VERIFICATION" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
11302 The class bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
11303 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11304 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
11305 A direct superclass is different for the new class
a61af66fc99e Initial load
duke
parents:
diff changeset
11306 version, or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
11307 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
11308 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11309 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
11310 A new class version does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
11311 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
11312 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11313 <errorid id="JVMTI_ERROR_NAMES_DONT_MATCH" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
11314 The class name defined in the new class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
11315 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
11316 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11317 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
11318 A new class version has different modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
11319 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11320 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
11321 A method in the new class version has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
11322 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
11323 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11324 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11325 </errorsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
11326
a61af66fc99e Initial load
duke
parents:
diff changeset
11327 <eventsection label="Events">
a61af66fc99e Initial load
duke
parents:
diff changeset
11328 <intro label="Handling Events" id="eventIntro">
a61af66fc99e Initial load
duke
parents:
diff changeset
11329 Agents can be informed of many events that occur in application
a61af66fc99e Initial load
duke
parents:
diff changeset
11330 programs.
a61af66fc99e Initial load
duke
parents:
diff changeset
11331 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11332 To handle events, designate a set of callback functions with
a61af66fc99e Initial load
duke
parents:
diff changeset
11333 <functionlink id="SetEventCallbacks"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11334 For each event the corresponding callback function will be
a61af66fc99e Initial load
duke
parents:
diff changeset
11335 called.
a61af66fc99e Initial load
duke
parents:
diff changeset
11336 Arguments to the callback function provide additional
a61af66fc99e Initial load
duke
parents:
diff changeset
11337 information about the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11338 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11339 The callback function is usually called from within an application
a61af66fc99e Initial load
duke
parents:
diff changeset
11340 thread. The <jvmti/> implementation does not
a61af66fc99e Initial load
duke
parents:
diff changeset
11341 queue events in any way. This means
a61af66fc99e Initial load
duke
parents:
diff changeset
11342 that event callback functions must be written
a61af66fc99e Initial load
duke
parents:
diff changeset
11343 carefully. Here are some general guidelines. See
a61af66fc99e Initial load
duke
parents:
diff changeset
11344 the individual event descriptions for further
a61af66fc99e Initial load
duke
parents:
diff changeset
11345 suggestions.
a61af66fc99e Initial load
duke
parents:
diff changeset
11346 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11347 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11348 <li>Any exception thrown during the execution of an event callback can
a61af66fc99e Initial load
duke
parents:
diff changeset
11349 overwrite any current pending exception in the current application thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11350 Care must be taken to preserve a pending exception
a61af66fc99e Initial load
duke
parents:
diff changeset
11351 when an event callback makes a JNI call that might generate an exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11352 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11353 <li>Event callback functions must be re-entrant. The <jvmti/> implementation does
a61af66fc99e Initial load
duke
parents:
diff changeset
11354 not queue events. If an agent needs to process events one at a time, it
a61af66fc99e Initial load
duke
parents:
diff changeset
11355 can use a raw monitor inside the
a61af66fc99e Initial load
duke
parents:
diff changeset
11356 event callback functions to serialize event processing.
a61af66fc99e Initial load
duke
parents:
diff changeset
11357 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11358 <li>Event callback functions that execute JNI's FindClass function to load
a61af66fc99e Initial load
duke
parents:
diff changeset
11359 classes need to note that FindClass locates the class loader associated
a61af66fc99e Initial load
duke
parents:
diff changeset
11360 with the current native method. For the purposes of class loading, an
a61af66fc99e Initial load
duke
parents:
diff changeset
11361 event callback that includes a JNI environment as a parameter to the
a61af66fc99e Initial load
duke
parents:
diff changeset
11362 callback will treated as if it is a native call, where the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11363 is in the class of the event thread's current frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
11364 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11365 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11366 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11367 Some <jvmti/> events identify objects with JNI references.
a61af66fc99e Initial load
duke
parents:
diff changeset
11368 All references
a61af66fc99e Initial load
duke
parents:
diff changeset
11369 in <jvmti/> events are JNI local references and will become invalid
a61af66fc99e Initial load
duke
parents:
diff changeset
11370 after the event callback returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
11371 Unless stated otherwise, memory referenced by pointers sent in event
a61af66fc99e Initial load
duke
parents:
diff changeset
11372 callbacks may not be referenced after the event callback returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
11373 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11374 Except where stated otherwise, events are delivered on the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11375 that caused the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11376 Events are sent at the time they occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
11377 The specification for each event includes the set of
a61af66fc99e Initial load
duke
parents:
diff changeset
11378 <functionlink id="GetPhase">phases</functionlink> in which it can be sent;
a61af66fc99e Initial load
duke
parents:
diff changeset
11379 if an event triggering activity occurs during another phase, no event
a61af66fc99e Initial load
duke
parents:
diff changeset
11380 is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
11381 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11382 A thread that generates an event does not change its execution status
a61af66fc99e Initial load
duke
parents:
diff changeset
11383 (for example, the event does not cause the thread to be suspended).
a61af66fc99e Initial load
duke
parents:
diff changeset
11384 If an agent wishes the event to result in suspension, then the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
11385 is responsible for explicitly suspending the thread with
a61af66fc99e Initial load
duke
parents:
diff changeset
11386 <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11387 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11388 If an event is enabled in multiple environments, the event will be sent
a61af66fc99e Initial load
duke
parents:
diff changeset
11389 to each agent in the order that the environments were created.
a61af66fc99e Initial load
duke
parents:
diff changeset
11390 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11391
a61af66fc99e Initial load
duke
parents:
diff changeset
11392 <intro label="Enabling Events" id="enablingevents">
a61af66fc99e Initial load
duke
parents:
diff changeset
11393 All events are initially disabled. In order to receive any
a61af66fc99e Initial load
duke
parents:
diff changeset
11394 event:
a61af66fc99e Initial load
duke
parents:
diff changeset
11395 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11396 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11397 If the event requires a capability, that capability must
a61af66fc99e Initial load
duke
parents:
diff changeset
11398 be added with
a61af66fc99e Initial load
duke
parents:
diff changeset
11399 <functionlink id="AddCapabilities"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11400 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11401 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11402 A callback for the event must be set with
a61af66fc99e Initial load
duke
parents:
diff changeset
11403 <functionlink id="SetEventCallbacks"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11404 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11405 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11406 The event must be enabled with
a61af66fc99e Initial load
duke
parents:
diff changeset
11407 <functionlink id="SetEventNotificationMode"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11408 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11409 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11410 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11411
a61af66fc99e Initial load
duke
parents:
diff changeset
11412 <intro label="Multiple Co-located Events" id="eventorder">
a61af66fc99e Initial load
duke
parents:
diff changeset
11413 In many situations it is possible for multiple events to occur
a61af66fc99e Initial load
duke
parents:
diff changeset
11414 at the same location in one thread. When this happens, all the events
a61af66fc99e Initial load
duke
parents:
diff changeset
11415 are reported through the event callbacks in the order specified in this section.
a61af66fc99e Initial load
duke
parents:
diff changeset
11416 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11417 If the current location is at the entry point of a method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11418 <eventlink id="MethodEntry"></eventlink> event is reported before
a61af66fc99e Initial load
duke
parents:
diff changeset
11419 any other event at the current location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11420 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11421 If an exception catch has been detected at the current location,
a61af66fc99e Initial load
duke
parents:
diff changeset
11422 either because it is the beginning of a catch clause or a native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11423 that cleared a pending exception has returned, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11424 <code>exceptionCatch</code> event is reported before
a61af66fc99e Initial load
duke
parents:
diff changeset
11425 any other event at the current location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11426 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11427 If a <code>singleStep</code> event or
a61af66fc99e Initial load
duke
parents:
diff changeset
11428 <code>breakpoint</code> event is triggered at the
a61af66fc99e Initial load
duke
parents:
diff changeset
11429 current location, the event is defined to occur
a61af66fc99e Initial load
duke
parents:
diff changeset
11430 immediately before the code at the current location is executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
11431 These events are reported before any events which are triggered
a61af66fc99e Initial load
duke
parents:
diff changeset
11432 by the execution of code at the current location in the same
a61af66fc99e Initial load
duke
parents:
diff changeset
11433 thread (specifically:
a61af66fc99e Initial load
duke
parents:
diff changeset
11434 <code>exception</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11435 <code>fieldAccess</code>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
11436 <code>fieldModification</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11437 If both a step and breakpoint event are triggered for the same thread and
a61af66fc99e Initial load
duke
parents:
diff changeset
11438 location, the step event is reported before the breakpoint event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11439 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11440 If the current location is the exit point of a method (that is, the last
a61af66fc99e Initial load
duke
parents:
diff changeset
11441 location before returning to the caller), the
a61af66fc99e Initial load
duke
parents:
diff changeset
11442 <eventlink id="MethodExit"></eventlink> event and
a61af66fc99e Initial load
duke
parents:
diff changeset
11443 the <eventlink id="FramePop"></eventlink> event (if requested)
a61af66fc99e Initial load
duke
parents:
diff changeset
11444 are reported after all other events at the current location in the same
a61af66fc99e Initial load
duke
parents:
diff changeset
11445 thread. There is no specified ordering of these two events
a61af66fc99e Initial load
duke
parents:
diff changeset
11446 with respect to each other.
a61af66fc99e Initial load
duke
parents:
diff changeset
11447 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11448 Co-located events can be triggered during the processing of some other
a61af66fc99e Initial load
duke
parents:
diff changeset
11449 event by the agent at the same location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11450 If such an event, of type <i>y</i>, is triggered during the processing of
a61af66fc99e Initial load
duke
parents:
diff changeset
11451 an event of type <i>x</i>, and if <i>x</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
11452 precedes <i>y</i> in the ordering specified above, the co-located event
a61af66fc99e Initial load
duke
parents:
diff changeset
11453 <i>y</i> is reported for the current thread and location. If <i>x</i> does not precede
a61af66fc99e Initial load
duke
parents:
diff changeset
11454 <i>y</i>, <i>y</i> is not reported for the current thread and location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11455 For example, if a breakpoint is set at the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
11456 during the processing of <eventlink id="SingleStep"></eventlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11457 that breakpoint will be reported before the thread moves off the current
a61af66fc99e Initial load
duke
parents:
diff changeset
11458 location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11459 <p/>The following events are never considered to be co-located with
a61af66fc99e Initial load
duke
parents:
diff changeset
11460 other events.
a61af66fc99e Initial load
duke
parents:
diff changeset
11461 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11462 <li><eventlink id="VMStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11463 <li><eventlink id="VMInit"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11464 <li><eventlink id="VMDeath"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11465 <li><eventlink id="ThreadStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11466 <li><eventlink id="ThreadEnd"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11467 <li><eventlink id="ClassLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11468 <li><eventlink id="ClassPrepare"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11469 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11470 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11471
a61af66fc99e Initial load
duke
parents:
diff changeset
11472 <intro label="Event Callbacks" id="jvmtiEventCallbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
11473 The event callback structure below is used to specify the handler function
a61af66fc99e Initial load
duke
parents:
diff changeset
11474 for events. It is set with the
a61af66fc99e Initial load
duke
parents:
diff changeset
11475 <functionlink id="SetEventCallbacks"></functionlink> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11476 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11477
a61af66fc99e Initial load
duke
parents:
diff changeset
11478 <event label="Single Step"
a61af66fc99e Initial load
duke
parents:
diff changeset
11479 id="SingleStep" const="JVMTI_EVENT_SINGLE_STEP" filtered="thread" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
11480 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11481 Single step events allow the agent to trace thread execution
a61af66fc99e Initial load
duke
parents:
diff changeset
11482 at the finest granularity allowed by the VM. A single step event is
a61af66fc99e Initial load
duke
parents:
diff changeset
11483 generated whenever a thread reaches a new location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11484 Typically, single step events represent the completion of one VM
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
11485 instruction as defined in <vmspec/>. However, some implementations
0
a61af66fc99e Initial load
duke
parents:
diff changeset
11486 may define locations differently. In any case the
a61af66fc99e Initial load
duke
parents:
diff changeset
11487 <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11488 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11489 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11490 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11491 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11492 No single step events are generated from within native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
11493 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11494 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11495 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11496 <required id="can_generate_single_step_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11497 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11498 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11499 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11500 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11501 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11502 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11503 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11504 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11505 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11506 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11507 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11508 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11509 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11510 Thread about to execution a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11511 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11512 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11513 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11514 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11515 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11516 Class of the method about to execute a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11517 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11518 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11519 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11520 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11521 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11522 Method about to execute a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11523 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11524 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11525 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11526 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11527 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11528 Location of the new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11529 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11530 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11531 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11532 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11533
a61af66fc99e Initial load
duke
parents:
diff changeset
11534 <event label="Breakpoint"
a61af66fc99e Initial load
duke
parents:
diff changeset
11535 id="Breakpoint" const="JVMTI_EVENT_BREAKPOINT" filtered="thread" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
11536 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11537 Breakpoint events are generated whenever a thread reaches a location
a61af66fc99e Initial load
duke
parents:
diff changeset
11538 designated as a breakpoint with <functionlink id="SetBreakpoint"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11539 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11540 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11541 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11542 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11543 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11544 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11545 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11546 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11547 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11548 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11549 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11550 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11551 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11552 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11553 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11554 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11555 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11556 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11557 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11558 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11559 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11560 Thread that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11561 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11562 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11563 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11564 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11565 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11566 Class of the method that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11567 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11568 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11569 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11570 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11571 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11572 Method that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11573 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11574 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11575 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11576 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11577 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11578 location of the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11579 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11580 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11581 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11582 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11583
a61af66fc99e Initial load
duke
parents:
diff changeset
11584 <event label="Field Access"
a61af66fc99e Initial load
duke
parents:
diff changeset
11585 id="FieldAccess" const="JVMTI_EVENT_FIELD_ACCESS" filtered="thread" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
11586 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11587 Field access events are generated whenever a thread accesses
a61af66fc99e Initial load
duke
parents:
diff changeset
11588 a field that was designated as a watchpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11589 with <functionlink id="SetFieldAccessWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11590 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11591 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11592 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11593 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11594 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11595 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11596 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11597 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11598 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11599 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11600 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11601 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11602 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11603 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11604 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11605 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11606 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11607 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11608 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11609 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11610 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11611 Thread accessing the field
a61af66fc99e Initial load
duke
parents:
diff changeset
11612 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11613 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11614 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11615 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11616 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11617 Class of the method where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11618 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11619 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11620 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11621 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11622 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11623 Method where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11624 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11625 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11626 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11627 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11628 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11629 Location where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11630 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11631 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11632 <param id="field_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11633 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11634 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11635 Class of the field being accessed
a61af66fc99e Initial load
duke
parents:
diff changeset
11636 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11637 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11638 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
11639 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11640 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11641 Object with the field being accessed if the field is an
a61af66fc99e Initial load
duke
parents:
diff changeset
11642 instance field; <code>NULL</code> otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
11643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11644 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11645 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
11646 <jfieldID class="field_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11647 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11648 Field being accessed
a61af66fc99e Initial load
duke
parents:
diff changeset
11649 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11650 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11651 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11652 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11653
a61af66fc99e Initial load
duke
parents:
diff changeset
11654 <event label="Field Modification"
a61af66fc99e Initial load
duke
parents:
diff changeset
11655 id="FieldModification" const="JVMTI_EVENT_FIELD_MODIFICATION" filtered="thread" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
11656 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11657 Field modification events are generated whenever a thread modifies
a61af66fc99e Initial load
duke
parents:
diff changeset
11658 a field that was designated as a watchpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11659 with <functionlink id="SetFieldModificationWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11660 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11661 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11662 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11663 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11664 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11665 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11666 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11667 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11668 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11669 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11670 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11671 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11672 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11673 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11674 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11675 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11676 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11677 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11678 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11679 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11680 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11681 Thread modifying the field
a61af66fc99e Initial load
duke
parents:
diff changeset
11682 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11683 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11684 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11685 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11687 Class of the method where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11688 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11689 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11690 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11691 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11692 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11693 Method where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11694 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11695 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11696 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11697 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11698 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11699 Location where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11700 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11701 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11702 <param id="field_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11703 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11704 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11705 Class of the field being modified
a61af66fc99e Initial load
duke
parents:
diff changeset
11706 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11707 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11708 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
11709 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11710 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11711 Object with the field being modified if the field is an
a61af66fc99e Initial load
duke
parents:
diff changeset
11712 instance field; <code>NULL</code> otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
11713 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11714 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11715 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
11716 <jfieldID class="field_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11717 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11718 Field being modified
a61af66fc99e Initial load
duke
parents:
diff changeset
11719 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11720 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11721 <param id="signature_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
11722 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11723 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11724 Signature type of the new value
a61af66fc99e Initial load
duke
parents:
diff changeset
11725 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11726 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11727 <param id="new_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11728 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11729 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11730 The new value
a61af66fc99e Initial load
duke
parents:
diff changeset
11731 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11732 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11733 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11734 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11735
a61af66fc99e Initial load
duke
parents:
diff changeset
11736 <event label="Frame Pop"
a61af66fc99e Initial load
duke
parents:
diff changeset
11737 id="FramePop" const="JVMTI_EVENT_FRAME_POP" filtered="thread" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
11738 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11739 Frame pop events are generated upon exit from a single method
a61af66fc99e Initial load
duke
parents:
diff changeset
11740 in a single frame as specified
a61af66fc99e Initial load
duke
parents:
diff changeset
11741 in a call to <functionlink id="NotifyFramePop"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11742 This is true whether termination is caused by
a61af66fc99e Initial load
duke
parents:
diff changeset
11743 executing its return instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11744 or by throwing an exception to its caller
a61af66fc99e Initial load
duke
parents:
diff changeset
11745 (see <paramlink id="was_popped_by_exception"></paramlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11746 However, frame pops caused by the <functionlink id="PopFrame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11747 function are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
11748 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11749 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11750 identifies the executable location in the returning method,
a61af66fc99e Initial load
duke
parents:
diff changeset
11751 immediately prior to the return.
a61af66fc99e Initial load
duke
parents:
diff changeset
11752 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11753 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11754 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11755 <required id="can_generate_frame_pop_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11756 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11757 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11758 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11759 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11760 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11761 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11762 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11763 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11764 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11765 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11766 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11767 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11768 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11769 Thread that is popping the frame
a61af66fc99e Initial load
duke
parents:
diff changeset
11770 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11771 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11772 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11773 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11774 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11775 Class of the method being popped
a61af66fc99e Initial load
duke
parents:
diff changeset
11776 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11777 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11778 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11779 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11780 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11781 Method being popped
a61af66fc99e Initial load
duke
parents:
diff changeset
11782 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11783 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11784 <param id="was_popped_by_exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
11785 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11786 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11787 True if frame was popped by a thrown exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11788 False if method exited through its return instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
11789 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11790 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11791 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11792 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11793
a61af66fc99e Initial load
duke
parents:
diff changeset
11794 <event label="Method Entry"
a61af66fc99e Initial load
duke
parents:
diff changeset
11795 id="MethodEntry" const="JVMTI_EVENT_METHOD_ENTRY" filtered="thread" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
11796 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11797 Method entry events are generated upon entry of Java
a61af66fc99e Initial load
duke
parents:
diff changeset
11798 programming language methods (including native methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
11799 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11800 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11801 identifies the initial executable location in
a61af66fc99e Initial load
duke
parents:
diff changeset
11802 the method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11803 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11804 Enabling method
a61af66fc99e Initial load
duke
parents:
diff changeset
11805 entry or exit events will significantly degrade performance on many platforms and is thus
a61af66fc99e Initial load
duke
parents:
diff changeset
11806 not advised for performance critical usage (such as profiling).
a61af66fc99e Initial load
duke
parents:
diff changeset
11807 <internallink id="bci">Bytecode instrumentation</internallink> should be
a61af66fc99e Initial load
duke
parents:
diff changeset
11808 used in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
11809 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11810 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11811 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11812 <required id="can_generate_method_entry_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11813 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11814 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11815 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11816 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11817 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11818 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11819 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11820 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11821 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11822 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11823 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11824 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11825 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11826 Thread entering the method
a61af66fc99e Initial load
duke
parents:
diff changeset
11827 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11828 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11829 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11830 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11831 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11832 Class of the method being entered
a61af66fc99e Initial load
duke
parents:
diff changeset
11833 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11834 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11835 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11836 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11837 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11838 Method being entered
a61af66fc99e Initial load
duke
parents:
diff changeset
11839 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11840 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11841 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11842 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11843
a61af66fc99e Initial load
duke
parents:
diff changeset
11844 <event label="Method Exit"
a61af66fc99e Initial load
duke
parents:
diff changeset
11845 id="MethodExit" const="JVMTI_EVENT_METHOD_EXIT" filtered="thread" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
11846 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11847 Method exit events are generated upon exit from Java
a61af66fc99e Initial load
duke
parents:
diff changeset
11848 programming language methods (including native methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
11849 This is true whether termination is caused by
a61af66fc99e Initial load
duke
parents:
diff changeset
11850 executing its return instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11851 or by throwing an exception to its caller
a61af66fc99e Initial load
duke
parents:
diff changeset
11852 (see <paramlink id="was_popped_by_exception"></paramlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11853 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11854 The <code>method</code> field uniquely identifies the
a61af66fc99e Initial load
duke
parents:
diff changeset
11855 method being entered or exited. The <code>frame</code> field provides
a61af66fc99e Initial load
duke
parents:
diff changeset
11856 access to the stack frame for the method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11857 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11858 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11859 identifies the executable location in the returning method
a61af66fc99e Initial load
duke
parents:
diff changeset
11860 immediately prior to the return.
a61af66fc99e Initial load
duke
parents:
diff changeset
11861 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11862 Enabling method
a61af66fc99e Initial load
duke
parents:
diff changeset
11863 entry or exit events will significantly degrade performance on many platforms and is thus
a61af66fc99e Initial load
duke
parents:
diff changeset
11864 not advised for performance critical usage (such as profiling).
a61af66fc99e Initial load
duke
parents:
diff changeset
11865 <internallink id="bci">Bytecode instrumentation</internallink> should be
a61af66fc99e Initial load
duke
parents:
diff changeset
11866 used in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
11867 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11868 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11869 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11870 <required id="can_generate_method_exit_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11871 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11872 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11873 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11874 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11875 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11876 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11877 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11878 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11879 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11880 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11881 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11882 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11883 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11884 Thread exiting the method
a61af66fc99e Initial load
duke
parents:
diff changeset
11885 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11886 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11887 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11888 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11889 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11890 Class of the method being exited
a61af66fc99e Initial load
duke
parents:
diff changeset
11891 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11892 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11893 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11894 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11895 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11896 Method being exited
a61af66fc99e Initial load
duke
parents:
diff changeset
11897 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11898 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11899 <param id="was_popped_by_exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
11900 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11901 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11902 True if frame was popped by a thrown exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11903 False if method exited through its return instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
11904 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11905 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11906 <param id="return_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11907 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11908 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11909 The return value of the method being exited.
a61af66fc99e Initial load
duke
parents:
diff changeset
11910 Undefined and should not be used if
a61af66fc99e Initial load
duke
parents:
diff changeset
11911 <paramlink id="was_popped_by_exception"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11912 is true.
a61af66fc99e Initial load
duke
parents:
diff changeset
11913 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11914 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11915 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11916 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11917
a61af66fc99e Initial load
duke
parents:
diff changeset
11918 <event label="Native Method Bind" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
11919 id="NativeMethodBind" const="JVMTI_EVENT_NATIVE_METHOD_BIND" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
11920 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11921 A Native Method Bind event is sent when a VM binds a
a61af66fc99e Initial load
duke
parents:
diff changeset
11922 Java programming language native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11923 to the address of a function that implements the native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11924 This will occur when the native method is called for the first time
a61af66fc99e Initial load
duke
parents:
diff changeset
11925 and also occurs when the JNI function <code>RegisterNatives</code> is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
11926 This event allows the bind to be redirected to an agent-specified
a61af66fc99e Initial load
duke
parents:
diff changeset
11927 proxy function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11928 This event is not sent when the native method is unbound.
a61af66fc99e Initial load
duke
parents:
diff changeset
11929 Typically, this proxy function will need to be specific to a
a61af66fc99e Initial load
duke
parents:
diff changeset
11930 particular method or, to handle the general case, automatically
a61af66fc99e Initial load
duke
parents:
diff changeset
11931 generated assembly code, since after instrumentation code is
a61af66fc99e Initial load
duke
parents:
diff changeset
11932 executed the function at the original binding
a61af66fc99e Initial load
duke
parents:
diff changeset
11933 address will usually be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
11934 The original binding can be restored or the redirection changed
a61af66fc99e Initial load
duke
parents:
diff changeset
11935 by use of the JNI function <code>RegisterNatives</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11936 Some events may be sent during the primordial phase, JNI and
a61af66fc99e Initial load
duke
parents:
diff changeset
11937 most of <jvmti/> cannot be used at this time but the method and
a61af66fc99e Initial load
duke
parents:
diff changeset
11938 address can be saved for use later.
a61af66fc99e Initial load
duke
parents:
diff changeset
11939 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11940 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11941 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11942 <required id="can_generate_native_method_bind_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11943 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11944 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11945 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11946 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11947 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11948 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11949 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11950 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11951 Will be <code>NULL</code> if sent during the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
11952 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11953 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11954 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11955 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11956 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11957 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11958 Thread requesting the bind
a61af66fc99e Initial load
duke
parents:
diff changeset
11959 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11960 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11961 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11962 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11963 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11964 Class of the method being bound
a61af66fc99e Initial load
duke
parents:
diff changeset
11965 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11966 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11967 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11968 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11969 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11970 Native method being bound
a61af66fc99e Initial load
duke
parents:
diff changeset
11971 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11972 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11973 <param id="address">
a61af66fc99e Initial load
duke
parents:
diff changeset
11974 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11975 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11976 The address the VM is about to bind to--that is, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11977 address of the implementation of the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11978 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11979 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11980 <param id="new_address_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11981 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
11982 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11983 if the referenced address is changed (that is, if
a61af66fc99e Initial load
duke
parents:
diff changeset
11984 <code>*new_address_ptr</code> is set), the binding
a61af66fc99e Initial load
duke
parents:
diff changeset
11985 will instead be made to the supplied address.
a61af66fc99e Initial load
duke
parents:
diff changeset
11986 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11987 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11988 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11989 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11990
a61af66fc99e Initial load
duke
parents:
diff changeset
11991 <event label="Exception"
a61af66fc99e Initial load
duke
parents:
diff changeset
11992 id="Exception" const="JVMTI_EVENT_EXCEPTION" filtered="thread" num="58">
a61af66fc99e Initial load
duke
parents:
diff changeset
11993 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11994 Exception events are generated whenever an exception is first detected
a61af66fc99e Initial load
duke
parents:
diff changeset
11995 in a Java programming language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11996 Where "exception" means any <code>java.lang.Throwable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11997 The exception may have been thrown by a Java programming language or native
a61af66fc99e Initial load
duke
parents:
diff changeset
11998 method, but in the case of native methods, the event is not generated
a61af66fc99e Initial load
duke
parents:
diff changeset
11999 until the exception is first seen by a Java programming language method. If an exception is
a61af66fc99e Initial load
duke
parents:
diff changeset
12000 set and cleared in a native method (and thus is never visible to Java programming language code),
a61af66fc99e Initial load
duke
parents:
diff changeset
12001 no exception event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12002 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12003 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12004 parameters uniquely identify the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
12005 (where the exception was detected) and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
12006 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
12007 available. The <code>exception</code> field identifies the thrown
a61af66fc99e Initial load
duke
parents:
diff changeset
12008 exception object. The <code>catch_method</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12009 and <code>catch_location</code> identify the location of the catch clause,
a61af66fc99e Initial load
duke
parents:
diff changeset
12010 if any, that handles the thrown exception. If there is no such catch clause,
a61af66fc99e Initial load
duke
parents:
diff changeset
12011 each field is set to 0. There is no guarantee that the thread will ever
a61af66fc99e Initial load
duke
parents:
diff changeset
12012 reach this catch clause. If there are native methods on the call stack
a61af66fc99e Initial load
duke
parents:
diff changeset
12013 between the throw location and the catch clause, the exception may
a61af66fc99e Initial load
duke
parents:
diff changeset
12014 be reset by one of those native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
12015 Similarly, exceptions that are reported as uncaught (<code>catch_klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12016 et al. set to 0) may in fact be caught by native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
12017 Agents can check for these occurrences by monitoring
a61af66fc99e Initial load
duke
parents:
diff changeset
12018 <eventlink id="ExceptionCatch"></eventlink> events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12019 Note that finally clauses are implemented as catch and re-throw. Therefore they
a61af66fc99e Initial load
duke
parents:
diff changeset
12020 will be reported in the catch location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12021 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12022 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12023 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12024 <required id="can_generate_exception_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12025 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12026 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12027 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12028 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12029 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12030 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12031 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12032 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12033 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12034 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12035 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12036 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12037 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12038 Thread generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12039 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12040 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12041 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12042 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12043 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12044 Class generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12045 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12046 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12047 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12048 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12049 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12050 Method generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12051 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12052 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12053 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12054 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12055 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12056 Location where exception occurred
a61af66fc99e Initial load
duke
parents:
diff changeset
12057 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12058 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12059 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
12060 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12061 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12062 The exception being thrown
a61af66fc99e Initial load
duke
parents:
diff changeset
12063 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12064 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12065 <param id="catch_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12066 <jclass method="catch_method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12067 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12068 Class that will catch the exception, or <code>NULL</code> if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12069 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12070 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12071 <param id="catch_method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12072 <jmethodID class="catch_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12073 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12074 Method that will catch the exception, or <code>NULL</code> if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12075 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12076 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12077 <param id="catch_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12078 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12079 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12080 location which will catch the exception or zero if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12081 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12082 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12083 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12084 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12085
a61af66fc99e Initial load
duke
parents:
diff changeset
12086 <event label="Exception Catch"
a61af66fc99e Initial load
duke
parents:
diff changeset
12087 id="ExceptionCatch" const="JVMTI_EVENT_EXCEPTION_CATCH" filtered="thread" num="59">
a61af66fc99e Initial load
duke
parents:
diff changeset
12088 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12089 Exception catch events are generated whenever a thrown exception is caught.
a61af66fc99e Initial load
duke
parents:
diff changeset
12090 Where "exception" means any <code>java.lang.Throwable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12091 If the exception is caught in a Java programming language method, the event is generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12092 when the catch clause is reached. If the exception is caught in a native
a61af66fc99e Initial load
duke
parents:
diff changeset
12093 method, the event is generated as soon as control is returned to a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12094 method. Exception catch events are generated for any exception for which
a61af66fc99e Initial load
duke
parents:
diff changeset
12095 a throw was detected in a Java programming language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
12096 Note that finally clauses are implemented as catch and re-throw. Therefore they
a61af66fc99e Initial load
duke
parents:
diff changeset
12097 will generate exception catch events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12098 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12099 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12100 parameters uniquely identify the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
12101 and allow the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
12102 available. For exceptions caught in a Java programming language method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
12103 <code>exception</code> object identifies the exception object. Exceptions
a61af66fc99e Initial load
duke
parents:
diff changeset
12104 caught in native methods are not necessarily available by the time the
a61af66fc99e Initial load
duke
parents:
diff changeset
12105 exception catch is reported, so the <code>exception</code> field is set
a61af66fc99e Initial load
duke
parents:
diff changeset
12106 to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12107 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12108 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12109 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12110 <required id="can_generate_exception_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12111 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12112 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12113 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12114 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12115 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12116 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12117 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12118 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12119 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12120 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12121 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12122 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12123 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12124 Thread catching the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12125 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12126 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12127 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12128 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12129 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12130 Class catching the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12131 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12132 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12133 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12134 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12135 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12136 Method catching the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12137 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12138 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12139 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12140 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12141 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12142 Location where exception is being caught
a61af66fc99e Initial load
duke
parents:
diff changeset
12143 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12144 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12145 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
12146 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12147 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12148 Exception being caught
a61af66fc99e Initial load
duke
parents:
diff changeset
12149 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12150 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12151 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12152 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12153
a61af66fc99e Initial load
duke
parents:
diff changeset
12154 <event label="Thread Start"
a61af66fc99e Initial load
duke
parents:
diff changeset
12155 id="ThreadStart" const="JVMTI_EVENT_THREAD_START" num="52" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12156 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12157 Thread start events are generated by a new thread before its initial
a61af66fc99e Initial load
duke
parents:
diff changeset
12158 method executes.
a61af66fc99e Initial load
duke
parents:
diff changeset
12159 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12160 A thread may be listed in the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
12161 <functionlink id="GetAllThreads"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12162 before its thread start event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12163 It is possible for other events to be generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12164 on a thread before its thread start event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12165 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12166 The event is sent on the newly started <paramlink id="thread"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12167 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12168 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12169 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12170 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12171 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12172 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12173 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12174 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12175 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12176 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12177 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12178 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12179 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12180 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12181 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12182 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12183 Thread starting
a61af66fc99e Initial load
duke
parents:
diff changeset
12184 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12185 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12186 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12187 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12188
a61af66fc99e Initial load
duke
parents:
diff changeset
12189 <event label="Thread End"
a61af66fc99e Initial load
duke
parents:
diff changeset
12190 id="ThreadEnd" const="JVMTI_EVENT_THREAD_END" filtered="thread" num="53" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12191 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12192 Thread end events are generated by a terminating thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12193 after its initial method has finished execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
12194 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12195 A thread may be listed in the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
12196 <functionlink id="GetAllThreads"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12197 after its thread end event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12198 No events are generated on a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12199 after its thread end event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12200 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12201 The event is sent on the dying <paramlink id="thread"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12202 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12203 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12204 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12205 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12206 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12207 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12208 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12209 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12210 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12211 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12212 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12213 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12214 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12215 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12216 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12217 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12218 Thread ending
a61af66fc99e Initial load
duke
parents:
diff changeset
12219 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12220 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12221 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12222 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12223
a61af66fc99e Initial load
duke
parents:
diff changeset
12224 <event label="Class Load"
a61af66fc99e Initial load
duke
parents:
diff changeset
12225 id="ClassLoad" const="JVMTI_EVENT_CLASS_LOAD" filtered="thread" phase="start" num="55">
a61af66fc99e Initial load
duke
parents:
diff changeset
12226 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12227 A class load event is generated when a class is first loaded. The order
a61af66fc99e Initial load
duke
parents:
diff changeset
12228 of class load events generated by a particular thread are guaranteed
a61af66fc99e Initial load
duke
parents:
diff changeset
12229 to match the order of class loading within that thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12230 Array class creation does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12231 The creation of a primitive class (for example, java.lang.Integer.TYPE)
a61af66fc99e Initial load
duke
parents:
diff changeset
12232 does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12233 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12234 This event is sent at an early stage in loading the class. As
a61af66fc99e Initial load
duke
parents:
diff changeset
12235 a result the class should be used carefully. Note, for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
12236 that methods and fields are not yet loaded, so queries for methods,
a61af66fc99e Initial load
duke
parents:
diff changeset
12237 fields, subclasses, and so on will not give correct results.
a61af66fc99e Initial load
duke
parents:
diff changeset
12238 See "Loading of Classes and Interfaces" in the <i>Java Language
a61af66fc99e Initial load
duke
parents:
diff changeset
12239 Specification</i>. For most
a61af66fc99e Initial load
duke
parents:
diff changeset
12240 purposes the <eventlink id="ClassPrepare"></eventlink> event will
a61af66fc99e Initial load
duke
parents:
diff changeset
12241 be more useful.
a61af66fc99e Initial load
duke
parents:
diff changeset
12242 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12243 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12244 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12245 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12246 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12247 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12248 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12249 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12250 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12251 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12252 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12253 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12254 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12255 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12256 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12257 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12258 Thread loading the class
a61af66fc99e Initial load
duke
parents:
diff changeset
12259 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12260 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12261 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12262 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12263 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12264 Class being loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12265 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12266 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12267 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12268 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12269
a61af66fc99e Initial load
duke
parents:
diff changeset
12270 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
12271 <event label="Class Unload"
a61af66fc99e Initial load
duke
parents:
diff changeset
12272 id="ClassUnload" const="JVMTI_EVENT_CLASS_UNLOAD" num="57">
a61af66fc99e Initial load
duke
parents:
diff changeset
12273 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12274 A class unload event is generated when the class is about to be unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12275 Class unload events take place during garbage collection and must be
a61af66fc99e Initial load
duke
parents:
diff changeset
12276 handled extremely carefully. The garbage collector holds many locks
a61af66fc99e Initial load
duke
parents:
diff changeset
12277 and has suspended all other threads, so the event handler cannot depend
a61af66fc99e Initial load
duke
parents:
diff changeset
12278 on the ability to acquire any locks. The class unload event handler should
a61af66fc99e Initial load
duke
parents:
diff changeset
12279 do as little as possible, perhaps by queuing information to be processed
a61af66fc99e Initial load
duke
parents:
diff changeset
12280 later. In particular, the <code>jclass</code> should be used only in
a61af66fc99e Initial load
duke
parents:
diff changeset
12281 the JNI function <code>isSameObject</code> or in the following <jvmti/> functions:
a61af66fc99e Initial load
duke
parents:
diff changeset
12282 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12283 <li><functionlink id="GetClassSignature"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12284 <li><functionlink id="GetSourceFileName"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12285 <li><functionlink id="IsInterface"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12286 <li><functionlink id="IsArrayClass"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12287 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12288 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12289 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12290 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12291 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12292 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12293 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12294 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12295 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12296 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12297 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12298 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12299 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12300 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12301 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12302 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12303 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12304 Thread generating the class unload
a61af66fc99e Initial load
duke
parents:
diff changeset
12305 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12306 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12307 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12308 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12309 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12310 Class being unloaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12311 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12312 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12313 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12314 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12315 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
12316
a61af66fc99e Initial load
duke
parents:
diff changeset
12317 <event label="Class Prepare"
a61af66fc99e Initial load
duke
parents:
diff changeset
12318 id="ClassPrepare" const="JVMTI_EVENT_CLASS_PREPARE" filtered="thread" phase="start" num="56">
a61af66fc99e Initial load
duke
parents:
diff changeset
12319 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12320 A class prepare event is generated when class preparation is complete.
a61af66fc99e Initial load
duke
parents:
diff changeset
12321 At this point, class fields, methods, and implemented interfaces are
a61af66fc99e Initial load
duke
parents:
diff changeset
12322 available, and no code from the class has been executed. Since array
a61af66fc99e Initial load
duke
parents:
diff changeset
12323 classes never have fields or methods, class prepare events are not
a61af66fc99e Initial load
duke
parents:
diff changeset
12324 generated for them. Class prepare events are not generated for
a61af66fc99e Initial load
duke
parents:
diff changeset
12325 primitive classes (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
12326 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12327 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12328 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12329 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12330 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12331 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12332 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12333 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12334 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12335 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12336 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12337 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12338 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12339 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12340 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12341 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12342 Thread generating the class prepare
a61af66fc99e Initial load
duke
parents:
diff changeset
12343 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12344 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12345 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12346 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12347 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12348 Class being prepared
a61af66fc99e Initial load
duke
parents:
diff changeset
12349 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12350 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12351 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12352 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12353
a61af66fc99e Initial load
duke
parents:
diff changeset
12354 <event label="Class File Load Hook" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
12355 id="ClassFileLoadHook" const="JVMTI_EVENT_CLASS_FILE_LOAD_HOOK" num="54">
a61af66fc99e Initial load
duke
parents:
diff changeset
12356 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12357 This event is sent when the VM obtains class file data,
a61af66fc99e Initial load
duke
parents:
diff changeset
12358 but before it constructs
a61af66fc99e Initial load
duke
parents:
diff changeset
12359 the in-memory representation for that class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12360 This event is also sent when the class is being modified by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12361 <functionlink id="RetransformClasses"/> function or
a61af66fc99e Initial load
duke
parents:
diff changeset
12362 the <functionlink id="RedefineClasses"/> function,
a61af66fc99e Initial load
duke
parents:
diff changeset
12363 called in any <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
12364 The agent can instrument
a61af66fc99e Initial load
duke
parents:
diff changeset
12365 the existing class file data sent by the VM to include profiling/debugging hooks.
a61af66fc99e Initial load
duke
parents:
diff changeset
12366 See the description of
a61af66fc99e Initial load
duke
parents:
diff changeset
12367 <internallink id="bci">bytecode instrumentation</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12368 for usage information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12369 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12370 This event may be sent before the VM is initialized (the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
12371 <functionlink id="GetPhase">phase</functionlink>). During this time
a61af66fc99e Initial load
duke
parents:
diff changeset
12372 no VM resources should be created. Some classes might not be compatible
a61af66fc99e Initial load
duke
parents:
diff changeset
12373 with the function (eg. ROMized classes) and this event will not be
a61af66fc99e Initial load
duke
parents:
diff changeset
12374 generated for these classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
12375 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12376 The agent must allocate the space for the modified
a61af66fc99e Initial load
duke
parents:
diff changeset
12377 class file data buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
12378 using the memory allocation function
a61af66fc99e Initial load
duke
parents:
diff changeset
12379 <functionlink id="Allocate"></functionlink> because the
a61af66fc99e Initial load
duke
parents:
diff changeset
12380 VM is responsible for freeing the new class file data buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
12381 using <functionlink id="Deallocate"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12382 Note that <functionlink id="Allocate"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12383 is permitted during the primordial phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
12384 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12385 If the agent wishes to modify the class file, it must set
a61af66fc99e Initial load
duke
parents:
diff changeset
12386 <code>new_class_data</code> to point
a61af66fc99e Initial load
duke
parents:
diff changeset
12387 to the newly instrumented class file data buffer and set
a61af66fc99e Initial load
duke
parents:
diff changeset
12388 <code>new_class_data_len</code> to the length of that
a61af66fc99e Initial load
duke
parents:
diff changeset
12389 buffer before returning
a61af66fc99e Initial load
duke
parents:
diff changeset
12390 from this call. If no modification is desired, the agent simply
a61af66fc99e Initial load
duke
parents:
diff changeset
12391 does not set <code>new_class_data</code>. If multiple agents
a61af66fc99e Initial load
duke
parents:
diff changeset
12392 have enabled this event the results are chained. That is, if
a61af66fc99e Initial load
duke
parents:
diff changeset
12393 <code>new_class_data</code> has been set, it becomes the
a61af66fc99e Initial load
duke
parents:
diff changeset
12394 <code>class_data</code> for the next agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12395 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12396 The order that this event is sent to each environment differs
a61af66fc99e Initial load
duke
parents:
diff changeset
12397 from other events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12398 This event is sent to environments in the following order:
a61af66fc99e Initial load
duke
parents:
diff changeset
12399 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12400 <li><fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12401 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12402 incapable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12403 environments, in the
a61af66fc99e Initial load
duke
parents:
diff changeset
12404 order in which they were created
a61af66fc99e Initial load
duke
parents:
diff changeset
12405 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12406 <li><fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12407 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12408 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12409 environments, in the
a61af66fc99e Initial load
duke
parents:
diff changeset
12410 order in which they were created
a61af66fc99e Initial load
duke
parents:
diff changeset
12411 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12412 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12413 When triggered by <functionlink id="RetransformClasses"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
12414 this event is sent only to <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12415 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12416 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12417 environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
12418 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12419 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12420 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12421 <capability id="can_generate_all_class_hook_events"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12422 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12423 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12424 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12425 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12426 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12427 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12428 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12429 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12430 Will be <code>NULL</code> if sent during the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
12431 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12432 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12433 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12434 <param id="class_being_redefined">
a61af66fc99e Initial load
duke
parents:
diff changeset
12435 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12436 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12437 The class being
a61af66fc99e Initial load
duke
parents:
diff changeset
12438 <functionlink id="RedefineClasses">redefined</functionlink> or
a61af66fc99e Initial load
duke
parents:
diff changeset
12439 <functionlink id="RetransformClasses">retransformed</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12440 <code>NULL</code> if sent by class load.
a61af66fc99e Initial load
duke
parents:
diff changeset
12441 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12442 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12443 <param id="loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
12444 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12445 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12446 The class loader loading the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12447 <code>NULL</code> if the bootstrap class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
12448 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12449 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12450 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
12451 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12452 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12453 Name of class being loaded as a VM internal qualified name
a61af66fc99e Initial load
duke
parents:
diff changeset
12454 (for example, "java/util/List"), encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12455 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12456 Note: if the class is defined with a <code>NULL</code> name or
a61af66fc99e Initial load
duke
parents:
diff changeset
12457 without a name specified, <code>name</code> will be <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12458 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12459 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12460 <param id="protection_domain">
a61af66fc99e Initial load
duke
parents:
diff changeset
12461 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12462 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12463 The <code>ProtectionDomain</code> of the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12464 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12465 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12466 <param id="class_data_len">
a61af66fc99e Initial load
duke
parents:
diff changeset
12467 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12468 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12469 Length of current class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12470 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12471 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12472 <param id="class_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
12473 <vmbuf><uchar/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12474 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12475 Pointer to the current class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12476 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12477 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12478 <param id="new_class_data_len">
a61af66fc99e Initial load
duke
parents:
diff changeset
12479 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12480 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12481 Pointer to the length of the new class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12482 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12483 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12484 <param id="new_class_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
12485 <agentbuf incount="new_class_data_len"><uchar/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12486 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12487 Pointer to the pointer to the instrumented class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12488 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12489 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12490 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12491 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12492
a61af66fc99e Initial load
duke
parents:
diff changeset
12493 <event label="VM Start Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12494 id="VMStart" const="JVMTI_EVENT_VM_START" num="57" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12495 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12496 The VM initialization event signals the start of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12497 At this time JNI is live but the VM is not yet fully initialized.
a61af66fc99e Initial load
duke
parents:
diff changeset
12498 Once this event is generated, the agent is free to call any JNI function.
a61af66fc99e Initial load
duke
parents:
diff changeset
12499 This event signals the beginning of the start phase,
a61af66fc99e Initial load
duke
parents:
diff changeset
12500 <jvmti/> functions permitted in the start phase may be called.
a61af66fc99e Initial load
duke
parents:
diff changeset
12501 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12502 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12503 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12504 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12505 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12506 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12507 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12508 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12509 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12510 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12511 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12512 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12513 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12514 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12515 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12516 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12517 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12518
a61af66fc99e Initial load
duke
parents:
diff changeset
12519 <event label="VM Initialization Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12520 id="VMInit" const="JVMTI_EVENT_VM_INIT" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
12521 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12522 The VM initialization event signals the completion of VM initialization. Once
a61af66fc99e Initial load
duke
parents:
diff changeset
12523 this event is generated, the agent is free to call any JNI or <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12524 function. The VM initialization event can be preceded by or can be concurrent
a61af66fc99e Initial load
duke
parents:
diff changeset
12525 with other events, but
a61af66fc99e Initial load
duke
parents:
diff changeset
12526 the preceding events should be handled carefully, if at all, because the
a61af66fc99e Initial load
duke
parents:
diff changeset
12527 VM has not completed its initialization. The thread start event for the
a61af66fc99e Initial load
duke
parents:
diff changeset
12528 main application thread is guaranteed not to occur until after the
a61af66fc99e Initial load
duke
parents:
diff changeset
12529 handler for the VM initialization event returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
12530 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12531 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12532 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12533 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12534 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12535 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12536 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12537 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12538 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12539 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12540 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12541 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12542 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12543 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12544 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12545 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12546 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12547 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12548 The initial thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12549 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12550 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12551 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12552 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12553
a61af66fc99e Initial load
duke
parents:
diff changeset
12554 <event label="VM Death Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12555 id="VMDeath" const="JVMTI_EVENT_VM_DEATH" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
12556 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12557 The VM death event notifies the agent of the termination of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12558 No events will occur after the VMDeath event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12559 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12560 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12561 Note that <internallink id="onunload">Agent_OnUnload</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12562 will still be called in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
12563 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12564 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12565 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12566 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12567 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12568 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12569 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12570 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12571 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12572 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12573 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12574 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12575 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12576 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12577 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12578
a61af66fc99e Initial load
duke
parents:
diff changeset
12579 <event label="Compiled Method Load"
a61af66fc99e Initial load
duke
parents:
diff changeset
12580 id="CompiledMethodLoad" const="JVMTI_EVENT_COMPILED_METHOD_LOAD" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
12581 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12582 Sent when a method is compiled and loaded into memory by the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12583 If it is unloaded, the <eventlink id="CompiledMethodUnload"/> event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12584 If it is moved, the <eventlink id="CompiledMethodUnload"/> event is sent,
a61af66fc99e Initial load
duke
parents:
diff changeset
12585 followed by a new <code>CompiledMethodLoad</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12586 Note that a single method may have multiple compiled forms, and that
a61af66fc99e Initial load
duke
parents:
diff changeset
12587 this event will be sent for each form.
a61af66fc99e Initial load
duke
parents:
diff changeset
12588 Note also that several methods may be inlined into a single
a61af66fc99e Initial load
duke
parents:
diff changeset
12589 address range, and that this event will be sent for each method.
a61af66fc99e Initial load
duke
parents:
diff changeset
12590 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12591 These events can be sent after their initial occurrence with
a61af66fc99e Initial load
duke
parents:
diff changeset
12592 <functionlink id="GenerateEvents"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12593 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12594 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12595 <typedef id="jvmtiAddrLocationMap" label="Native address to location entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
12596 <field id="start_address">
a61af66fc99e Initial load
duke
parents:
diff changeset
12597 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12598 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12599 Starting native address of code corresponding to a location
a61af66fc99e Initial load
duke
parents:
diff changeset
12600 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12601 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
12602 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12603 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12604 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12605 Corresponding location. See
a61af66fc99e Initial load
duke
parents:
diff changeset
12606 <functionlink id="GetJLocationFormat"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12607 for the meaning of location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12608 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12609 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
12610 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
12611 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12612 <required id="can_generate_compiled_method_load_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12613 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12614 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12615 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12616 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12617 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12618 Class of the method being compiled and loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12619 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12620 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12621 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12622 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12623 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12624 Method being compiled and loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12625 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12626 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12627 <param id="code_size">
a61af66fc99e Initial load
duke
parents:
diff changeset
12628 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12629 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12630 Size of compiled code
a61af66fc99e Initial load
duke
parents:
diff changeset
12631 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12632 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12633 <param id="code_addr">
a61af66fc99e Initial load
duke
parents:
diff changeset
12634 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12635 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12636 Address where compiled method code is loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12637 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12638 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12639 <param id="map_length">
a61af66fc99e Initial load
duke
parents:
diff changeset
12640 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12641 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12642 Number of <typelink id="jvmtiAddrLocationMap"></typelink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12643 entries in the address map.
a61af66fc99e Initial load
duke
parents:
diff changeset
12644 Zero if mapping information cannot be supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
12645 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12646 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12647 <param id="map">
a61af66fc99e Initial load
duke
parents:
diff changeset
12648 <vmbuf><struct>jvmtiAddrLocationMap</struct></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12649 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12650 Map from native addresses to location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12651 The native address range of each entry is from
a61af66fc99e Initial load
duke
parents:
diff changeset
12652 <fieldlink id="start_address" struct="jvmtiAddrLocationMap"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12653 to <code>start_address-1</code> of the next entry.
a61af66fc99e Initial load
duke
parents:
diff changeset
12654 <code>NULL</code> if mapping information cannot be supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
12655 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12656 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12657 <param id="compile_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
12658 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12659 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12660 VM-specific compilation information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12661 The referenced compile information is managed by the VM
a61af66fc99e Initial load
duke
parents:
diff changeset
12662 and must not depend on the agent for collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
12663 A VM implementation defines the content and lifetime
a61af66fc99e Initial load
duke
parents:
diff changeset
12664 of the information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12665 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12666 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12667 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12668 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12669
a61af66fc99e Initial load
duke
parents:
diff changeset
12670 <event label="Compiled Method Unload"
a61af66fc99e Initial load
duke
parents:
diff changeset
12671 id="CompiledMethodUnload" const="JVMTI_EVENT_COMPILED_METHOD_UNLOAD" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
12672 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12673 Sent when a compiled method is unloaded from memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
12674 This event might not be sent on the thread which performed the unload.
a61af66fc99e Initial load
duke
parents:
diff changeset
12675 This event may be sent sometime after the unload occurs, but
a61af66fc99e Initial load
duke
parents:
diff changeset
12676 will be sent before the memory is reused
a61af66fc99e Initial load
duke
parents:
diff changeset
12677 by a newly generated compiled method. This event may be sent after
a61af66fc99e Initial load
duke
parents:
diff changeset
12678 the class is unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12679 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12680 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12681 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12682 <required id="can_generate_compiled_method_load_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12683 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12684 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12685 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12686 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12687 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12688 Class of the compiled method being unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12689 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12690 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12691 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12692 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12693 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12694 Compiled method being unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12695 For identification of the compiled method only -- the class
a61af66fc99e Initial load
duke
parents:
diff changeset
12696 may be unloaded and therefore the method should not be used
a61af66fc99e Initial load
duke
parents:
diff changeset
12697 as an argument to further JNI or <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
12698 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12699 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12700 <param id="code_addr">
a61af66fc99e Initial load
duke
parents:
diff changeset
12701 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12702 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12703 Address where compiled method code was loaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12704 For identification of the compiled method only --
a61af66fc99e Initial load
duke
parents:
diff changeset
12705 the space may have been reclaimed.
a61af66fc99e Initial load
duke
parents:
diff changeset
12706 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12707 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12708 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12709 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12710
a61af66fc99e Initial load
duke
parents:
diff changeset
12711 <event label="Dynamic Code Generated" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
12712 id="DynamicCodeGenerated" const="JVMTI_EVENT_DYNAMIC_CODE_GENERATED" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
12713 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12714 Sent when a component of the virtual machine is generated dynamically.
a61af66fc99e Initial load
duke
parents:
diff changeset
12715 This does not correspond to Java programming language code that is
a61af66fc99e Initial load
duke
parents:
diff changeset
12716 compiled--see <eventlink id="CompiledMethodLoad"></eventlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12717 This is for native code--for example, an interpreter that is generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12718 differently depending on command-line options.
a61af66fc99e Initial load
duke
parents:
diff changeset
12719 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12720 Note that this event has no controlling capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
12721 If a VM cannot generate these events, it simply does not send any.
a61af66fc99e Initial load
duke
parents:
diff changeset
12722 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12723 These events can be sent after their initial occurrence with
a61af66fc99e Initial load
duke
parents:
diff changeset
12724 <functionlink id="GenerateEvents"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12725 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12726 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12727 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12728 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12729 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12730 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
12731 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12732 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12733 Name of the code, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12734 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12735 Intended for display to an end-user.
a61af66fc99e Initial load
duke
parents:
diff changeset
12736 The name might not be unique.
a61af66fc99e Initial load
duke
parents:
diff changeset
12737 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12738 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12739 <param id="address">
a61af66fc99e Initial load
duke
parents:
diff changeset
12740 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12741 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12742 Native address of the code
a61af66fc99e Initial load
duke
parents:
diff changeset
12743 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12744 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12745 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
12746 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12747 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12748 Length in bytes of the code
a61af66fc99e Initial load
duke
parents:
diff changeset
12749 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12750 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12751 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12752 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12753
a61af66fc99e Initial load
duke
parents:
diff changeset
12754 <event label="Data Dump Request"
a61af66fc99e Initial load
duke
parents:
diff changeset
12755 id="DataDumpRequest" const="JVMTI_EVENT_DATA_DUMP_REQUEST" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
12756 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12757 Sent by the VM to request the agent to dump its data. This
a61af66fc99e Initial load
duke
parents:
diff changeset
12758 is just a hint and the agent need not react to this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12759 This is useful for processing command-line signals from users. For
a61af66fc99e Initial load
duke
parents:
diff changeset
12760 example, in the Java 2 SDK a CTRL-Break on Win32 and a CTRL-\ on Solaris
a61af66fc99e Initial load
duke
parents:
diff changeset
12761 causes the VM to send this event to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12762 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12763 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12764 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12765 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12766 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12767 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12768 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12769
a61af66fc99e Initial load
duke
parents:
diff changeset
12770 <event label="Monitor Contended Enter"
a61af66fc99e Initial load
duke
parents:
diff changeset
12771 id="MonitorContendedEnter" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTER" filtered="thread" num="75">
a61af66fc99e Initial load
duke
parents:
diff changeset
12772 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12773 Sent when a thread is attempting to enter a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12774 monitor already acquired by another thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12775 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12776 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12777 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12778 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12779 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12780 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12781 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12782 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12783 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12784 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12785 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12786 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12787 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12788 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12789 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12790 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12791 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12792 JNI local reference to the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12793 attempting to enter the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12794 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12795 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12796 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12797 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12798 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12799 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12800 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12801 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12802 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12803 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12804
a61af66fc99e Initial load
duke
parents:
diff changeset
12805 <event label="Monitor Contended Entered"
a61af66fc99e Initial load
duke
parents:
diff changeset
12806 id="MonitorContendedEntered" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTERED" filtered="thread" num="76">
a61af66fc99e Initial load
duke
parents:
diff changeset
12807 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12808 Sent when a thread enters a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12809 monitor after waiting for it to be released by another thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12810 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12811 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12812 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12813 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12814 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12815 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12816 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12817 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12818 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12819 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12820 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12821 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12822 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12823 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12824 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12825 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12826 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12827 JNI local reference to the thread entering
a61af66fc99e Initial load
duke
parents:
diff changeset
12828 the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12829 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12830 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12831 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12832 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12833 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12834 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12835 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12836 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12837 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12838 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12839
a61af66fc99e Initial load
duke
parents:
diff changeset
12840 <event label="Monitor Wait"
a61af66fc99e Initial load
duke
parents:
diff changeset
12841 id="MonitorWait" const="JVMTI_EVENT_MONITOR_WAIT" filtered="thread" num="73">
a61af66fc99e Initial load
duke
parents:
diff changeset
12842 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12843 Sent when a thread is about to wait on an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12844 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12845 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12846 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12847 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12848 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12849 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12850 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12851 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12852 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12853 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12854 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12855 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12856 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12857 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12858 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12859 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12860 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12861 JNI local reference to the thread about to wait
a61af66fc99e Initial load
duke
parents:
diff changeset
12862 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12863 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12864 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12865 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12866 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12867 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12868 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12869 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12870 <param id="timeout">
a61af66fc99e Initial load
duke
parents:
diff changeset
12871 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12872 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12873 The number of milliseconds the thread will wait
a61af66fc99e Initial load
duke
parents:
diff changeset
12874 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12875 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12876 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12877 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12878
a61af66fc99e Initial load
duke
parents:
diff changeset
12879 <event label="Monitor Waited"
a61af66fc99e Initial load
duke
parents:
diff changeset
12880 id="MonitorWaited" const="JVMTI_EVENT_MONITOR_WAITED" filtered="thread" num="74">
a61af66fc99e Initial load
duke
parents:
diff changeset
12881 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12882 Sent when a thread finishes waiting on an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12883 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12884 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12885 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12886 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12887 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12888 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12889 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12890 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12891 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12892 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12893 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12894 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12895 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12896 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12897 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12898 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12899 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12900 JNI local reference to the thread that was finished waiting
a61af66fc99e Initial load
duke
parents:
diff changeset
12901 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12902 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12903 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12904 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12905 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12906 JNI local reference to the monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
12907 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12908 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12909 <param id="timed_out">
a61af66fc99e Initial load
duke
parents:
diff changeset
12910 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12911 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12912 True if the monitor timed out
a61af66fc99e Initial load
duke
parents:
diff changeset
12913 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12914 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12915 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12916 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12917
a61af66fc99e Initial load
duke
parents:
diff changeset
12918 <event label="Resource Exhausted"
a61af66fc99e Initial load
duke
parents:
diff changeset
12919 id="ResourceExhausted" const="JVMTI_EVENT_RESOURCE_EXHAUSTED" num="80"
a61af66fc99e Initial load
duke
parents:
diff changeset
12920 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
12921 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12922 Sent when a VM resource needed by a running application has been exhausted.
a61af66fc99e Initial load
duke
parents:
diff changeset
12923 Except as required by the optional capabilities, the set of resources
a61af66fc99e Initial load
duke
parents:
diff changeset
12924 which report exhaustion is implementation dependent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12925 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12926 The following bit flags define the properties of the resource exhaustion:
a61af66fc99e Initial load
duke
parents:
diff changeset
12927 <constants id="jvmtiResourceExhaustionFlags"
a61af66fc99e Initial load
duke
parents:
diff changeset
12928 label="Resource Exhaustion Flags"
a61af66fc99e Initial load
duke
parents:
diff changeset
12929 kind="bits"
a61af66fc99e Initial load
duke
parents:
diff changeset
12930 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
12931 <constant id="JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR" num="0x0001">
a61af66fc99e Initial load
duke
parents:
diff changeset
12932 After this event returns, the VM will throw a
a61af66fc99e Initial load
duke
parents:
diff changeset
12933 <code>java.lang.OutOfMemoryError</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12934 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12935 <constant id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP" num="0x0002">
a61af66fc99e Initial load
duke
parents:
diff changeset
12936 The VM was unable to allocate memory from the <tm>Java</tm>
a61af66fc99e Initial load
duke
parents:
diff changeset
12937 platform <i>heap</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12938 The <i>heap</i> is the runtime
a61af66fc99e Initial load
duke
parents:
diff changeset
12939 data area from which memory for all class instances and
a61af66fc99e Initial load
duke
parents:
diff changeset
12940 arrays are allocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12941 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12942 <constant id="JVMTI_RESOURCE_EXHAUSTED_THREADS" num="0x0004">
a61af66fc99e Initial load
duke
parents:
diff changeset
12943 The VM was unable to create a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12944 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12945 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
12946 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12947 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12948 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12949 <capability id="can_generate_resource_exhaustion_heap_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
12950 Can generate events when the VM is unable to allocate memory from the
a61af66fc99e Initial load
duke
parents:
diff changeset
12951 <internallink id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP">heap</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12952 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12953 <capability id="can_generate_resource_exhaustion_threads_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
12954 Can generate events when the VM is unable to
a61af66fc99e Initial load
duke
parents:
diff changeset
12955 <internallink id="JVMTI_RESOURCE_EXHAUSTED_THREADS">create
a61af66fc99e Initial load
duke
parents:
diff changeset
12956 a thread</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12957 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12958 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12959 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12960 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12961 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12962 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12963 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12964 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12965 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12966 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12967 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12968 <param id="flags">
a61af66fc99e Initial load
duke
parents:
diff changeset
12969 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12970 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12971 Flags defining the properties of the of resource exhaustion
a61af66fc99e Initial load
duke
parents:
diff changeset
12972 as specified by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12973 <internallink id="jvmtiResourceExhaustionFlags">Resource
a61af66fc99e Initial load
duke
parents:
diff changeset
12974 Exhaustion Flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12975 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12976 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12977 <param id="reserved">
a61af66fc99e Initial load
duke
parents:
diff changeset
12978 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12979 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12980 Reserved.
a61af66fc99e Initial load
duke
parents:
diff changeset
12981 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12982 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12983 <param id="description">
a61af66fc99e Initial load
duke
parents:
diff changeset
12984 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12985 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12986 Description of the resource exhaustion, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12987 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12988 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12989 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12990 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12991 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12992
a61af66fc99e Initial load
duke
parents:
diff changeset
12993 <event label="VM Object Allocation"
a61af66fc99e Initial load
duke
parents:
diff changeset
12994 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
a61af66fc99e Initial load
duke
parents:
diff changeset
12995 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12996 Sent when a method causes the virtual machine to allocate an
a61af66fc99e Initial load
duke
parents:
diff changeset
12997 Object visible to Java programming language code and the
a61af66fc99e Initial load
duke
parents:
diff changeset
12998 allocation is not detectable by other intrumentation mechanisms.
a61af66fc99e Initial load
duke
parents:
diff changeset
12999 Generally object allocation should be detected by instrumenting
a61af66fc99e Initial load
duke
parents:
diff changeset
13000 the bytecodes of allocating methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
13001 Object allocation generated in native code by JNI function
a61af66fc99e Initial load
duke
parents:
diff changeset
13002 calls should be detected using
a61af66fc99e Initial load
duke
parents:
diff changeset
13003 <internallink id="jniIntercept">JNI function interception</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13004 Some methods might not have associated bytecodes and are not
a61af66fc99e Initial load
duke
parents:
diff changeset
13005 native methods, they instead are executed directly by the
a61af66fc99e Initial load
duke
parents:
diff changeset
13006 VM. These methods should send this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13007 Virtual machines which are incapable of bytecode instrumentation
a61af66fc99e Initial load
duke
parents:
diff changeset
13008 for some or all of their methods can send this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13009 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13010 Typical examples where this event might be sent:
a61af66fc99e Initial load
duke
parents:
diff changeset
13011 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13012 <li>Reflection -- for example, <code>java.lang.Class.newInstance()</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13013 <li>Methods not represented by bytecodes -- for example, VM intrinsics and
a61af66fc99e Initial load
duke
parents:
diff changeset
13014 J2ME preloaded classes</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13015 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13016 Cases where this event would not be generated:
a61af66fc99e Initial load
duke
parents:
diff changeset
13017 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13018 <li>Allocation due to bytecodes -- for example, the <code>new</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
13019 and <code>newarray</code> VM instructions</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13020 <li>Allocation due to JNI function calls -- for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
13021 <code>AllocObject</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13022 <li>Allocations during VM initialization</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13023 <li>VM internal objects</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13024 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13025 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13026 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13027 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13028 <required id="can_generate_vm_object_alloc_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13029 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13030 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13031 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
13032 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
13033 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
13034 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
13035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13036 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
13037 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13038 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13039 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
13040 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13041 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13042 Thread allocating the object.
a61af66fc99e Initial load
duke
parents:
diff changeset
13043 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13044 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13045 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
13046 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13047 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13048 JNI local reference to the object that was allocated
a61af66fc99e Initial load
duke
parents:
diff changeset
13049 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13050 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13051 <param id="object_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
13052 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13053 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13054 JNI local reference to the class of the object
a61af66fc99e Initial load
duke
parents:
diff changeset
13055 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13056 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13057 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
13058 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13059 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13060 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13061 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13062 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13063 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13064 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13065
a61af66fc99e Initial load
duke
parents:
diff changeset
13066 <event label="Object Free"
a61af66fc99e Initial load
duke
parents:
diff changeset
13067 id="ObjectFree" const="JVMTI_EVENT_OBJECT_FREE" num="83">
a61af66fc99e Initial load
duke
parents:
diff changeset
13068 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13069 An Object Free event is sent when the garbage collector frees an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
13070 Events are only sent for tagged objects--see
a61af66fc99e Initial load
duke
parents:
diff changeset
13071 <internallink id="Heap">heap functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13072 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13073 The event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13074 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13075 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13076 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13077 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13078 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13079 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13080 <required id="can_generate_object_free_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13081 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13082 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13083 <param id="tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
13084 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13085 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13086 The freed object's tag
a61af66fc99e Initial load
duke
parents:
diff changeset
13087 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13088 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13089 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13090 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13091
a61af66fc99e Initial load
duke
parents:
diff changeset
13092 <event label="Garbage Collection Start"
a61af66fc99e Initial load
duke
parents:
diff changeset
13093 id="GarbageCollectionStart" const="JVMTI_EVENT_GARBAGE_COLLECTION_START" num="81">
a61af66fc99e Initial load
duke
parents:
diff changeset
13094 <description>
2125
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13095 A Garbage Collection Start event is sent when a
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13096 garbage collection pause begins.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13097 Only stop-the-world collections are reported--that is, collections during
a61af66fc99e Initial load
duke
parents:
diff changeset
13098 which all threads cease to modify the state of the Java virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
13099 This means that some collectors will never generate these events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13100 This event is sent while the VM is still stopped, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
13101 the event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13102 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13103 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13104 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13105 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13106 This event is always sent as a matched pair with
a61af66fc99e Initial load
duke
parents:
diff changeset
13107 <eventlink id="GarbageCollectionFinish"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13108 (assuming both events are enabled) and no garbage collection
a61af66fc99e Initial load
duke
parents:
diff changeset
13109 events will occur between them.
a61af66fc99e Initial load
duke
parents:
diff changeset
13110 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13111 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13112 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13113 <required id="can_generate_garbage_collection_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13114 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13115 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13116 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13117 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13118
a61af66fc99e Initial load
duke
parents:
diff changeset
13119 <event label="Garbage Collection Finish"
a61af66fc99e Initial load
duke
parents:
diff changeset
13120 id="GarbageCollectionFinish" const="JVMTI_EVENT_GARBAGE_COLLECTION_FINISH" num="82">
a61af66fc99e Initial load
duke
parents:
diff changeset
13121 <description>
2125
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13122 A Garbage Collection Finish event is sent when a
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13123 garbage collection pause ends.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13124 This event is sent while the VM is still stopped, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
13125 the event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13126 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13127 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13128 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13129 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13130 Some agents may need to do post garbage collection operations that
a61af66fc99e Initial load
duke
parents:
diff changeset
13131 require the use of the disallowed <jvmti/> or JNI functions. For these
a61af66fc99e Initial load
duke
parents:
diff changeset
13132 cases an agent thread can be created which waits on a raw monitor,
a61af66fc99e Initial load
duke
parents:
diff changeset
13133 and the handler for the Garbage Collection Finish event simply
a61af66fc99e Initial load
duke
parents:
diff changeset
13134 notifies the raw monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13135 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13136 This event is always sent as a matched pair with
a61af66fc99e Initial load
duke
parents:
diff changeset
13137 <eventlink id="GarbageCollectionStart"/> (assuming both events are enabled).
a61af66fc99e Initial load
duke
parents:
diff changeset
13138 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13139 The most important use of this event is to provide timing information,
a61af66fc99e Initial load
duke
parents:
diff changeset
13140 and thus additional information is not required. However,
a61af66fc99e Initial load
duke
parents:
diff changeset
13141 information about the collection which is "free" should be included -
a61af66fc99e Initial load
duke
parents:
diff changeset
13142 what that information is needs to be determined.
a61af66fc99e Initial load
duke
parents:
diff changeset
13143 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13144 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13145 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13146 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13147 <required id="can_generate_garbage_collection_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13148 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13149 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13150 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13151 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13152
a61af66fc99e Initial load
duke
parents:
diff changeset
13153 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
13154 <event label="Verbose Output" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
13155 id="VerboseOutput" const="JVMTI_EVENT_VERBOSE_OUTPUT" num="85">
a61af66fc99e Initial load
duke
parents:
diff changeset
13156 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13157 Send verbose messages as strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
13158 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13159 This format is extremely fragile, as it can change with each
a61af66fc99e Initial load
duke
parents:
diff changeset
13160 platform, collector and version. Alternatives include:
a61af66fc99e Initial load
duke
parents:
diff changeset
13161 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13162 <li>building off Java programming language M and M APIs</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13163 <li>XML</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13164 <li>key/value pairs</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13165 <li>removing it</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13166 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13167 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13168 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13169 Though this seemed trivial to implement.
a61af66fc99e Initial load
duke
parents:
diff changeset
13170 In the RI it appears this will be quite complex.
a61af66fc99e Initial load
duke
parents:
diff changeset
13171 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13172 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13173 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13174 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13175 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13176 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13177 <param id="flag">
a61af66fc99e Initial load
duke
parents:
diff changeset
13178 <enum>jvmtiVerboseFlag</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
13179 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13180 Which verbose output is being sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13181 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13182 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13183 <param id="message">
a61af66fc99e Initial load
duke
parents:
diff changeset
13184 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
13185 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13186 Message text, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
13187 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
13188 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13189 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13190 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13191 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13192 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
13193
a61af66fc99e Initial load
duke
parents:
diff changeset
13194 </eventsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13195
a61af66fc99e Initial load
duke
parents:
diff changeset
13196 <datasection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13197 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13198 <jvmti/> extends the data types defined by JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
13199 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13200 <basetypes id="jniTypes" label="JNI Types Used in the JVM Tool Interface">
a61af66fc99e Initial load
duke
parents:
diff changeset
13201 <basetype id="jboolean">
a61af66fc99e Initial load
duke
parents:
diff changeset
13202 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13203 Holds a Java programming language <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13204 Unsigned 8 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13205 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13206 </basetype>
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13207 <basetype id="jchar">
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13208 <description>
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13209 Holds a Java programming language <code>char</code>.
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13210 Unsigned 16 bits.
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13211 </description>
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13212 </basetype>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13213 <basetype id="jint">
a61af66fc99e Initial load
duke
parents:
diff changeset
13214 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13215 Holds a Java programming language <code>int</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13216 Signed 32 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13217 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13218 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13219 <basetype id="jlong">
a61af66fc99e Initial load
duke
parents:
diff changeset
13220 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13221 Holds a Java programming language <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13222 Signed 64 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13223 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13224 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13225 <basetype id="jfloat">
a61af66fc99e Initial load
duke
parents:
diff changeset
13226 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13227 Holds a Java programming language <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13228 32 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13229 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13230 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13231 <basetype id="jdouble">
a61af66fc99e Initial load
duke
parents:
diff changeset
13232 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13233 Holds a Java programming language <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13234 64 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13235 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13236 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13237 <basetype id="jobject">
a61af66fc99e Initial load
duke
parents:
diff changeset
13238 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13239 Holds a Java programming language object.
a61af66fc99e Initial load
duke
parents:
diff changeset
13240 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13241 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13242 <basetype id="jclass">
a61af66fc99e Initial load
duke
parents:
diff changeset
13243 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13244 Holds a Java programming language class.
a61af66fc99e Initial load
duke
parents:
diff changeset
13245 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13246 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13247 <basetype id="jvalue">
a61af66fc99e Initial load
duke
parents:
diff changeset
13248 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13249 Is a union of all primitive types and <code>jobject</code>. Thus, holds any Java
a61af66fc99e Initial load
duke
parents:
diff changeset
13250 programming language value.
a61af66fc99e Initial load
duke
parents:
diff changeset
13251 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13252 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13253 <basetype id="jfieldID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13254 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13255 Identifies a Java programming language field.
a61af66fc99e Initial load
duke
parents:
diff changeset
13256 <code>jfieldID</code>s returned by <jvmti/> functions and events may be
a61af66fc99e Initial load
duke
parents:
diff changeset
13257 safely stored.
a61af66fc99e Initial load
duke
parents:
diff changeset
13258 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13259 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13260 <basetype id="jmethodID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13261 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13262 Identifies a Java programming language method, initializer, or constructor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13263 <code>jmethodID</code>s returned by <jvmti/> functions and events may be
a61af66fc99e Initial load
duke
parents:
diff changeset
13264 safely stored. However, if the class is unloaded, they become invalid
a61af66fc99e Initial load
duke
parents:
diff changeset
13265 and must not be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
13266 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13267 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13268 <basetype id="JNIEnv">
a61af66fc99e Initial load
duke
parents:
diff changeset
13269 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13270 Pointer to the JNI function table. Pointer to this (<code>JNIEnv *</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
13271 is a JNI environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
13272 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13273 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13274 </basetypes>
a61af66fc99e Initial load
duke
parents:
diff changeset
13275
a61af66fc99e Initial load
duke
parents:
diff changeset
13276 <basetypes id="jvmtiTypes" label="JVM Tool Interface Base Types">
a61af66fc99e Initial load
duke
parents:
diff changeset
13277 <basetype id="jvmtiEnv">
a61af66fc99e Initial load
duke
parents:
diff changeset
13278 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13279 The <jvmti/> <internallink id="environments">environment</internallink> pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13280 See the <internallink id="FunctionSection">Function Section</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13281 <code>jvmtiEnv</code> points to the
a61af66fc99e Initial load
duke
parents:
diff changeset
13282 <internallink id="FunctionTable">function table</internallink> pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13283 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13284 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13285 <basetype id="jthread">
a61af66fc99e Initial load
duke
parents:
diff changeset
13286 <definition>typedef jobject jthread;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13287 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13288 Subtype of <datalink id="jobject"></datalink> that holds a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13289 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13290 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13291 <basetype id="jthreadGroup">
a61af66fc99e Initial load
duke
parents:
diff changeset
13292 <definition>typedef jobject jthreadGroup;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13293 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13294 Subtype of <datalink id="jobject"></datalink> that holds a thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
13295 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13296 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13297 <basetype id="jlocation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13298 <definition>typedef jlong jlocation;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13299 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13300 A 64 bit value, representing a monotonically increasing
a61af66fc99e Initial load
duke
parents:
diff changeset
13301 executable position within a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13302 <code>-1</code> indicates a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13303 See <functionlink id="GetJLocationFormat"></functionlink> for the format on a
a61af66fc99e Initial load
duke
parents:
diff changeset
13304 given VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
13305 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13306 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13307 <basetype id="jrawMonitorID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13308 <definition>struct _jrawMonitorID;
a61af66fc99e Initial load
duke
parents:
diff changeset
13309 typedef struct _jrawMonitorID *jrawMonitorID;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13310 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13311 A raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13312 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13313 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13314 <basetype id="jvmtiError">
a61af66fc99e Initial load
duke
parents:
diff changeset
13315 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13316 Holds an error return code.
a61af66fc99e Initial load
duke
parents:
diff changeset
13317 See the <internallink id="ErrorSection">Error section</internallink> for possible values.
a61af66fc99e Initial load
duke
parents:
diff changeset
13318 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13319 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
13320 JVMTI_ERROR_NONE = 0,
a61af66fc99e Initial load
duke
parents:
diff changeset
13321 JVMTI_ERROR_INVALID_THREAD = 10,
a61af66fc99e Initial load
duke
parents:
diff changeset
13322 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13323 } jvmtiError;
a61af66fc99e Initial load
duke
parents:
diff changeset
13324 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13325 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13326 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13327 <basetype id="jvmtiEvent">
a61af66fc99e Initial load
duke
parents:
diff changeset
13328 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13329 An identifier for an event type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13330 See the <internallink id="EventSection">Event section</internallink> for possible values.
a61af66fc99e Initial load
duke
parents:
diff changeset
13331 It is guaranteed that future versions of this specification will
a61af66fc99e Initial load
duke
parents:
diff changeset
13332 never assign zero as an event type identifier.
a61af66fc99e Initial load
duke
parents:
diff changeset
13333 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13334 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
13335 JVMTI_EVENT_SINGLE_STEP = 1,
a61af66fc99e Initial load
duke
parents:
diff changeset
13336 JVMTI_EVENT_BREAKPOINT = 2,
a61af66fc99e Initial load
duke
parents:
diff changeset
13337 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13338 } jvmtiEvent;
a61af66fc99e Initial load
duke
parents:
diff changeset
13339 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13340 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13341 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13342 <basetype id="jvmtiEventCallbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
13343 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13344 The callbacks used for events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13345 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13346 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
13347 jvmtiEventVMInit VMInit;
a61af66fc99e Initial load
duke
parents:
diff changeset
13348 jvmtiEventVMDeath VMDeath;
a61af66fc99e Initial load
duke
parents:
diff changeset
13349 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13350 } jvmtiEventCallbacks;
a61af66fc99e Initial load
duke
parents:
diff changeset
13351 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13352 See <internallink id="jvmtiEventCallbacks">event callbacks</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13353 for the complete structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
13354 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13355 Where, for example, the VM initialization callback is defined:
a61af66fc99e Initial load
duke
parents:
diff changeset
13356 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13357 typedef void (JNICALL *jvmtiEventVMInit)
a61af66fc99e Initial load
duke
parents:
diff changeset
13358 (jvmtiEnv *jvmti_env,
a61af66fc99e Initial load
duke
parents:
diff changeset
13359 JNIEnv* jni_env,
a61af66fc99e Initial load
duke
parents:
diff changeset
13360 jthread thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
13361 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13362 See the individual events for the callback function definition.
a61af66fc99e Initial load
duke
parents:
diff changeset
13363 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13364 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13365 <basetype id="jniNativeInterface">
a61af66fc99e Initial load
duke
parents:
diff changeset
13366 <definition>typedef struct JNINativeInterface_ jniNativeInterface;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13367 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13368 Typedef for the JNI function table <code>JNINativeInterface</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
13369 defined in the
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13370 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp23720">JNI Specification</externallink>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13371 The JNI reference implementation defines this with an underscore.
a61af66fc99e Initial load
duke
parents:
diff changeset
13372 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13373 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13374 </basetypes>
a61af66fc99e Initial load
duke
parents:
diff changeset
13375
a61af66fc99e Initial load
duke
parents:
diff changeset
13376 </datasection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13377
a61af66fc99e Initial load
duke
parents:
diff changeset
13378 <issuessection label="Issues">
a61af66fc99e Initial load
duke
parents:
diff changeset
13379 <intro id="suspendRequired" label="Resolved Issue: Suspend - Required or Automatic">
a61af66fc99e Initial load
duke
parents:
diff changeset
13380 JVMDI requires that the agent suspend threads before calling
a61af66fc99e Initial load
duke
parents:
diff changeset
13381 certain sensitive functions. JVMPI requires garbage collection to be
a61af66fc99e Initial load
duke
parents:
diff changeset
13382 disabled before calling certain sensitive functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13383 It was suggested that rather than have this requirement, that
a61af66fc99e Initial load
duke
parents:
diff changeset
13384 VM place itself in a suitable state before performing an
a61af66fc99e Initial load
duke
parents:
diff changeset
13385 operation. This makes considerable sense since each VM
a61af66fc99e Initial load
duke
parents:
diff changeset
13386 knows its requirements and can most easily arrange a
a61af66fc99e Initial load
duke
parents:
diff changeset
13387 safe state.
a61af66fc99e Initial load
duke
parents:
diff changeset
13388 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13389 The ability to externally suspend/resume threads will, of
a61af66fc99e Initial load
duke
parents:
diff changeset
13390 course, remain. The ability to enable/disable garbage collection will not.
a61af66fc99e Initial load
duke
parents:
diff changeset
13391 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13392 This issue is resolved--suspend will not
a61af66fc99e Initial load
duke
parents:
diff changeset
13393 be required. The spec has been updated to reflect this.
a61af66fc99e Initial load
duke
parents:
diff changeset
13394 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13395
a61af66fc99e Initial load
duke
parents:
diff changeset
13396 <intro id="stackSampling" label="Resolved Issue: Call Stack Sampling">
a61af66fc99e Initial load
duke
parents:
diff changeset
13397 There are a variety of approaches to sampling call stacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13398 The biggest bifurcation is between VM controlled and agent
a61af66fc99e Initial load
duke
parents:
diff changeset
13399 controlled.
a61af66fc99e Initial load
duke
parents:
diff changeset
13400 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13401 This issue is resolved--agent controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
13402 sampling will be the approach.
a61af66fc99e Initial load
duke
parents:
diff changeset
13403 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13404
a61af66fc99e Initial load
duke
parents:
diff changeset
13405 <intro id="threadRepresentation" label="Resolved Issue: Thread Representation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13406 JVMDI represents threads as jthread. JVMPI primarily
a61af66fc99e Initial load
duke
parents:
diff changeset
13407 uses JNIEnv* to represent threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13408 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13409 The Expert Group has chosen jthread as the representation
a61af66fc99e Initial load
duke
parents:
diff changeset
13410 for threads in <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13411 JNIEnv* is sent by
a61af66fc99e Initial load
duke
parents:
diff changeset
13412 events since it is needed to JNI functions. JNIEnv, per the
a61af66fc99e Initial load
duke
parents:
diff changeset
13413 JNI spec, are not supposed to be used outside their thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13414 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13415
a61af66fc99e Initial load
duke
parents:
diff changeset
13416 <intro id="design" label="Resolved Issue: Method Representation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13417 The JNI spec allows an implementation to depend on jclass/jmethodID
a61af66fc99e Initial load
duke
parents:
diff changeset
13418 pairs, rather than simply a jmethodID, to reference a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13419 JVMDI, for consistency, choose the same representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13420 JVMPI, however, specifies that a jmethodID alone maps to a
a61af66fc99e Initial load
duke
parents:
diff changeset
13421 method. Both of the Sun <tm>J2SE</tm> virtual machines (Classic and <tm>HotSpot</tm>) store
a61af66fc99e Initial load
duke
parents:
diff changeset
13422 pointers in jmethodIDs, and as a result, a jmethodID is sufficient.
a61af66fc99e Initial load
duke
parents:
diff changeset
13423 In fact, any JVM implementation that supports JVMPI must have
a61af66fc99e Initial load
duke
parents:
diff changeset
13424 such a representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13425 <jvmti/> will use jmethodID as a unique representation of a method
a61af66fc99e Initial load
duke
parents:
diff changeset
13426 (no jclass is used).
a61af66fc99e Initial load
duke
parents:
diff changeset
13427 There should be efficiency gains, particularly in
a61af66fc99e Initial load
duke
parents:
diff changeset
13428 functionality like stack dumping, to this representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13429 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13430 Note that fields were not used in JVMPI and that the access profile
a61af66fc99e Initial load
duke
parents:
diff changeset
13431 of fields differs from methods--for implementation efficiency
a61af66fc99e Initial load
duke
parents:
diff changeset
13432 reasons, a jclass/jfieldID pair will still be needed for field
a61af66fc99e Initial load
duke
parents:
diff changeset
13433 reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
13434 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13435
a61af66fc99e Initial load
duke
parents:
diff changeset
13436 <intro id="localReferenceIssue" label="Resolved Issue: Local References">
a61af66fc99e Initial load
duke
parents:
diff changeset
13437 Functions return local references.
a61af66fc99e Initial load
duke
parents:
diff changeset
13438 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13439
a61af66fc99e Initial load
duke
parents:
diff changeset
13440 <intro id="frameRep" label="Resolved Issue: Representation of frames">
a61af66fc99e Initial load
duke
parents:
diff changeset
13441 In JVMDI, a frame ID is used to represent a frame. Problem with this
a61af66fc99e Initial load
duke
parents:
diff changeset
13442 is that a VM must track when a frame becomes invalid, a far better
a61af66fc99e Initial load
duke
parents:
diff changeset
13443 approach, and the one used in <jvmti/>, is to reference frames by depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
13444 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13445
a61af66fc99e Initial load
duke
parents:
diff changeset
13446 <intro id="requiredCapabilities" label="Issue: Required Capabilities">
a61af66fc99e Initial load
duke
parents:
diff changeset
13447 Currently, having a required capabilities means that the functionality
a61af66fc99e Initial load
duke
parents:
diff changeset
13448 is optional. Capabilities are useful even for required functionality
a61af66fc99e Initial load
duke
parents:
diff changeset
13449 since they can inform the VM is needed set-up. Thus, there should be
a61af66fc99e Initial load
duke
parents:
diff changeset
13450 a set of capabilities that a conformant implementation must provide
a61af66fc99e Initial load
duke
parents:
diff changeset
13451 (if requested during Agent_OnLoad).
a61af66fc99e Initial load
duke
parents:
diff changeset
13452 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13453
a61af66fc99e Initial load
duke
parents:
diff changeset
13454 <intro id="taghint" label="Proposal: add tag hint function">
a61af66fc99e Initial load
duke
parents:
diff changeset
13455 A hint of the percentage of objects that will be tagged would
a61af66fc99e Initial load
duke
parents:
diff changeset
13456 help the VM pick a good implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13457 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13458
a61af66fc99e Initial load
duke
parents:
diff changeset
13459 <intro id="moreMonitorQueries" label="Request: More Monitor Quires">
a61af66fc99e Initial load
duke
parents:
diff changeset
13460 How difficult or easy would be to extend the monitor_info category to include
a61af66fc99e Initial load
duke
parents:
diff changeset
13461 <pre>
a61af66fc99e Initial load
duke
parents:
diff changeset
13462 - current number of monitors
a61af66fc99e Initial load
duke
parents:
diff changeset
13463 - enumeration of monitors
a61af66fc99e Initial load
duke
parents:
diff changeset
13464 - enumeration of threads waiting on a given monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13465 </pre>
a61af66fc99e Initial load
duke
parents:
diff changeset
13466 The reason for my question is the fact that current get_monitor_info support
a61af66fc99e Initial load
duke
parents:
diff changeset
13467 requires the agent to specify a given thread to get the info which is probably
a61af66fc99e Initial load
duke
parents:
diff changeset
13468 OK in the profiling/debugging space, while in the monitoring space the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
13469 could be watching the monitor list and then decide which thread to ask for
a61af66fc99e Initial load
duke
parents:
diff changeset
13470 the info. You might ask why is this important for monitoring .... I think it
a61af66fc99e Initial load
duke
parents:
diff changeset
13471 can aid in the detection/prediction of application contention caused by hot-locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13472 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13473 </issuessection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13474
a61af66fc99e Initial load
duke
parents:
diff changeset
13475 <changehistory id="ChangeHistory" update="09/05/07">
a61af66fc99e Initial load
duke
parents:
diff changeset
13476 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13477 The <jvmti/> specification is an evolving document with major, minor,
a61af66fc99e Initial load
duke
parents:
diff changeset
13478 and micro version numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13479 A released version of the specification is uniquely identified
a61af66fc99e Initial load
duke
parents:
diff changeset
13480 by its major and minor version.
a61af66fc99e Initial load
duke
parents:
diff changeset
13481 The functions, events, and capabilities in this specification
a61af66fc99e Initial load
duke
parents:
diff changeset
13482 indicate a "Since" value which is the major and minor version in
a61af66fc99e Initial load
duke
parents:
diff changeset
13483 which it was introduced.
a61af66fc99e Initial load
duke
parents:
diff changeset
13484 The version of the specification implemented by the VM can
a61af66fc99e Initial load
duke
parents:
diff changeset
13485 be retrieved at runtime with the <functionlink id="GetVersionNumber"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13486 function.
a61af66fc99e Initial load
duke
parents:
diff changeset
13487 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13488 <change date="14 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13489 Converted to XML document.
a61af66fc99e Initial load
duke
parents:
diff changeset
13490 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13491 <change date="14 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13492 Elided heap dump functions (for now) since what was there
a61af66fc99e Initial load
duke
parents:
diff changeset
13493 was wrong.
a61af66fc99e Initial load
duke
parents:
diff changeset
13494 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13495 <change date="18 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13496 Added detail throughout.
a61af66fc99e Initial load
duke
parents:
diff changeset
13497 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13498 <change date="18 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13499 Changed JVMTI_THREAD_STATUS_RUNNING to JVMTI_THREAD_STATUS_RUNNABLE.
a61af66fc99e Initial load
duke
parents:
diff changeset
13500 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13501 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13502 Added AsyncGetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13503 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13504 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13505 Added jframeID return to GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13506 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13507 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13508 Elided GetCurrentFrame and GetCallingFrame functions (for now) since what was there
a61af66fc99e Initial load
duke
parents:
diff changeset
13509 since they are redundant with GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13510 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13511 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13512 Elided ClearAllBreakpoints since it has always been redundant.
a61af66fc99e Initial load
duke
parents:
diff changeset
13513 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13514 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13515 Added GetSystemProperties.
a61af66fc99e Initial load
duke
parents:
diff changeset
13516 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13517 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13518 Changed the thread local storage functions to use jthread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13519 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13520 <change date="20 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13521 Added GetJLocationFormat.
a61af66fc99e Initial load
duke
parents:
diff changeset
13522 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13523 <change date="22 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13524 Added events and introductory text.
a61af66fc99e Initial load
duke
parents:
diff changeset
13525 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13526 <change date="22 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13527 Cross reference type and constant definitions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13528 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13529 <change date="24 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13530 Added DTD.
a61af66fc99e Initial load
duke
parents:
diff changeset
13531 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13532 <change date="24 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13533 Added capabilities function section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13534 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13535 <change date="29 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13536 Assign capabilities to each function and event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13537 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13538 <change date="29 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13539 Add <internallink id="jniIntercept">JNI interception functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13540 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13541 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13542 Auto generate SetEventNotificationMode capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13543 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13544 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13545 Add <eventlink id="VMObjectAlloc"></eventlink> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13546 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13547 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13548 Add <eventlink id="DynamicCodeGenerated"></eventlink> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13549 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13550 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13551 Add const to declarations.
a61af66fc99e Initial load
duke
parents:
diff changeset
13552 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13553 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13554 Change method exit and frame pop to send on exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
13555 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13556 <change date="1 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13557 Add ForceGarbageCollection.
a61af66fc99e Initial load
duke
parents:
diff changeset
13558 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13559 <change date="2 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13560 Redo Xrun section; clarify GetStackTrace and add example;
a61af66fc99e Initial load
duke
parents:
diff changeset
13561 Fix width problems; use "agent" consistently.
a61af66fc99e Initial load
duke
parents:
diff changeset
13562 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13563 <change date="8 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13564 Remove previous start-up intro.
a61af66fc99e Initial load
duke
parents:
diff changeset
13565 Add <internallink id="environments"><jvmti/> Environments</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13566 section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13567 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13568 <change date="8 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13569 Add <functionlink id="DisposeEnvironment"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13570 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13571 <change date="9 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13572 Numerous minor updates.
a61af66fc99e Initial load
duke
parents:
diff changeset
13573 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13574 <change date="15 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13575 Add heap profiling functions added:
a61af66fc99e Initial load
duke
parents:
diff changeset
13576 get/set annotation, iterate live objects/heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
13577 Add heap profiling functions place holder added:
a61af66fc99e Initial load
duke
parents:
diff changeset
13578 heap roots.
a61af66fc99e Initial load
duke
parents:
diff changeset
13579 Heap profiling event added: object free.
a61af66fc99e Initial load
duke
parents:
diff changeset
13580 Heap profiling event redesigned: vm object allocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13581 Heap profiling event placeholders added: garbage collection start/finish.
a61af66fc99e Initial load
duke
parents:
diff changeset
13582 Native method bind event added.
a61af66fc99e Initial load
duke
parents:
diff changeset
13583 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13584 <change date="19 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13585 Revamp suspend/resume functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13586 Add origin information with jvmdi tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
13587 Misc fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13588 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13589 <change date="24 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13590 Add semantics to types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13591 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13592 <change date="27 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13593 Add local reference section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13594 Autogenerate parameter descriptions from types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13595 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13596 <change date="28 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13597 Document that RunAgentThread sends threadStart.
a61af66fc99e Initial load
duke
parents:
diff changeset
13598 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13599 <change date="29 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13600 Remove redundant local ref and dealloc warning.
a61af66fc99e Initial load
duke
parents:
diff changeset
13601 Convert GetRawMonitorName to allocated buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13602 Add GenerateEvents.
a61af66fc99e Initial load
duke
parents:
diff changeset
13603 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13604 <change date="30 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13605 Make raw monitors a type and rename to "jrawMonitorID".
a61af66fc99e Initial load
duke
parents:
diff changeset
13606 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13607 <change date="1 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13608 Include origin information.
a61af66fc99e Initial load
duke
parents:
diff changeset
13609 Clean-up JVMDI issue references.
a61af66fc99e Initial load
duke
parents:
diff changeset
13610 Remove Deallocate warnings which are now automatically generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
13611 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13612 <change date="2 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13613 Fix representation issues for jthread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13614 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13615 <change date="3 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13616 Make capabilities buffered out to 64 bits - and do it automatically.
a61af66fc99e Initial load
duke
parents:
diff changeset
13617 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13618 <change date="4 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13619 Make constants which are enumeration into enum types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13620 Parameters now of enum type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13621 Clean-up and index type section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13622 Replace remaining datadef entities with callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
13623 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13624 <change date="7 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13625 Correct GenerateEvents description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13626 More internal semantics work.
a61af66fc99e Initial load
duke
parents:
diff changeset
13627 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13628 <change date="9 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13629 Replace previous GetSystemProperties with two functions
a61af66fc99e Initial load
duke
parents:
diff changeset
13630 which use allocated information instead fixed.
a61af66fc99e Initial load
duke
parents:
diff changeset
13631 Add SetSystemProperty.
a61af66fc99e Initial load
duke
parents:
diff changeset
13632 More internal semantics work.
a61af66fc99e Initial load
duke
parents:
diff changeset
13633 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13634 <change date="12 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13635 Add varargs to end of SetEventNotificationMode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13636 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13637 <change date="20 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13638 Finish fixing spec to reflect that alloc sizes are jlong.
a61af66fc99e Initial load
duke
parents:
diff changeset
13639 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13640 <change date="22 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13641 Allow NULL as RunAgentThread arg.
a61af66fc99e Initial load
duke
parents:
diff changeset
13642 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13643 <change date="22 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13644 Fixed names to standardized naming convention
a61af66fc99e Initial load
duke
parents:
diff changeset
13645 Removed AsyncGetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13646 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13647 <change date="29 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13648 Since we are using jthread, removed GetThread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13649 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13650 <change date="31 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13651 Change GetFieldName to allow NULLs like GetMethodName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13652 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13653 <change date="29 Feb 2003" version="v40">
a61af66fc99e Initial load
duke
parents:
diff changeset
13654 Rewrite the introductory text, adding sections on
a61af66fc99e Initial load
duke
parents:
diff changeset
13655 start-up, environments and bytecode instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13656 Change the command line arguments per EG discussions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13657 Add an introduction to the capabilities section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13658 Add the extension mechanism category and functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13659 Mark for deletion, but clarified anyhow, SuspendAllThreads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13660 Rename IterateOverLiveObjects to IterateOverReachableObjects and
a61af66fc99e Initial load
duke
parents:
diff changeset
13661 change the text accordingly.
a61af66fc99e Initial load
duke
parents:
diff changeset
13662 Clarify IterateOverHeap.
a61af66fc99e Initial load
duke
parents:
diff changeset
13663 Clarify CompiledMethodLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13664 Discuss prerequisite state for Calling Functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13665 Clarify SetAllocationHooks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13666 Added issues ("To be resolved:") through-out.
a61af66fc99e Initial load
duke
parents:
diff changeset
13667 And so on...
a61af66fc99e Initial load
duke
parents:
diff changeset
13668 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13669 <change date="6 Mar 2003" version="v41">
a61af66fc99e Initial load
duke
parents:
diff changeset
13670 Remove struct from the call to GetOwnedMonitorInfo.
a61af66fc99e Initial load
duke
parents:
diff changeset
13671 Automatically generate most error documentation, remove
a61af66fc99e Initial load
duke
parents:
diff changeset
13672 (rather broken) hand written error doc.
a61af66fc99e Initial load
duke
parents:
diff changeset
13673 Better describe capability use (empty initial set).
a61af66fc99e Initial load
duke
parents:
diff changeset
13674 Add min value to jint params.
a61af66fc99e Initial load
duke
parents:
diff changeset
13675 Remove the capability can_access_thread_local_storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
13676 Rename error JVMTI_ERROR_NOT_IMPLEMENTED to JVMTI_ERROR_MUST_POSSESS_CAPABILITY;
a61af66fc99e Initial load
duke
parents:
diff changeset
13677 same for *NOT_IMPLEMENTED.
a61af66fc99e Initial load
duke
parents:
diff changeset
13678 Description fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13679 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13680 <change date="8 Mar 2003" version="v42">
a61af66fc99e Initial load
duke
parents:
diff changeset
13681 Rename GetClassSignature to GetClassName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13682 Rename IterateOverClassObjects to IterateOverInstancesOfClass.
a61af66fc99e Initial load
duke
parents:
diff changeset
13683 Remove GetMaxStack (operand stack isn't used in <jvmti/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
13684 Description fixes: define launch-time, remove native frame pop
a61af66fc99e Initial load
duke
parents:
diff changeset
13685 from PopFrame, and assorted clarifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
13686 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13687 <change date="8 Mar 2003" version="v43">
a61af66fc99e Initial load
duke
parents:
diff changeset
13688 Fix minor editing problem.
a61af66fc99e Initial load
duke
parents:
diff changeset
13689 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13690 <change date="10 Mar 2003" version="v44">
a61af66fc99e Initial load
duke
parents:
diff changeset
13691 Add phase information.
a61af66fc99e Initial load
duke
parents:
diff changeset
13692 Remap (compact) event numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13693 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13694 <change date="11 Mar 2003" version="v45">
a61af66fc99e Initial load
duke
parents:
diff changeset
13695 More phase information - allow "any".
a61af66fc99e Initial load
duke
parents:
diff changeset
13696 Elide raw monitor queries and events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13697 Minor description fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13698 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13699 <change date="12 Mar 2003" version="v46">
a61af66fc99e Initial load
duke
parents:
diff changeset
13700 Add GetPhase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13701 Use "phase" through document.
a61af66fc99e Initial load
duke
parents:
diff changeset
13702 Elide GetRawMonitorName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13703 Elide GetObjectMonitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13704 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13705 <change date="12 Mar 2003" version="v47">
a61af66fc99e Initial load
duke
parents:
diff changeset
13706 Fixes from link, XML, and spell checking.
a61af66fc99e Initial load
duke
parents:
diff changeset
13707 Auto-generate the callback structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
13708 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13709 <change date="13 Mar 2003" version="v48">
a61af66fc99e Initial load
duke
parents:
diff changeset
13710 One character XML fix.
a61af66fc99e Initial load
duke
parents:
diff changeset
13711 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13712 <change date="13 Mar 2003" version="v49">
a61af66fc99e Initial load
duke
parents:
diff changeset
13713 Change function parameter names to be consistent with
a61af66fc99e Initial load
duke
parents:
diff changeset
13714 event parameters (fooBarBaz becomes foo_bar_baz).
a61af66fc99e Initial load
duke
parents:
diff changeset
13715 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13716 <change date="14 Mar 2003" version="v50">
a61af66fc99e Initial load
duke
parents:
diff changeset
13717 Fix broken link. Fix thread markers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13718 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13719 <change date="14 Mar 2003" version="v51">
a61af66fc99e Initial load
duke
parents:
diff changeset
13720 Change constants so they are under 128 to workaround
a61af66fc99e Initial load
duke
parents:
diff changeset
13721 compiler problems.
a61af66fc99e Initial load
duke
parents:
diff changeset
13722 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13723 <change date="23 Mar 2003" version="v52">
a61af66fc99e Initial load
duke
parents:
diff changeset
13724 Overhaul capabilities. Separate GetStackTrace into
a61af66fc99e Initial load
duke
parents:
diff changeset
13725 GetStackTrace and GetStackFrames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13726 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13727 <change date="8 Apr 2003" version="v54">
a61af66fc99e Initial load
duke
parents:
diff changeset
13728 Use depth instead of jframeID to reference frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13729 Remove the now irrelevant GetCurrentFrame, GetCallerFrame and GetStackFrames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13730 Remove frame arg from events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13731 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13732 <change date="9 Apr 2003" version="v55">
a61af66fc99e Initial load
duke
parents:
diff changeset
13733 Remove GetObjectWithAnnotation since tests show bufferred approach more efficient.
a61af66fc99e Initial load
duke
parents:
diff changeset
13734 Add missing annotation_count to GetObjectsWithAnnotations
a61af66fc99e Initial load
duke
parents:
diff changeset
13735 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13736 <change date="10 Apr 2003" version="v56">
a61af66fc99e Initial load
duke
parents:
diff changeset
13737 Remove confusing parenthetical statement in GetObjectsWithAnnotations
a61af66fc99e Initial load
duke
parents:
diff changeset
13738 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13739 <change date="13 Apr 2003" version="v58">
a61af66fc99e Initial load
duke
parents:
diff changeset
13740 Replace jclass/jmethodID representation of method with simply jmethodID;
a61af66fc99e Initial load
duke
parents:
diff changeset
13741 Pass JvmtiEnv* as first arg of every event; remove JNIEnv* where inappropriate.
a61af66fc99e Initial load
duke
parents:
diff changeset
13742 Replace can_access_frames with can_access_local_variables; remove from purely stack access.
a61af66fc99e Initial load
duke
parents:
diff changeset
13743 Use can_get_synthetic_attribute; fix description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13744 Clarify that zero length arrays must be deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
13745 Clarify RelinquishCapabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13746 Generalize JVMTI_ERROR_VM_DEAD to JVMTI_ERROR_WRONG_PHASE.
a61af66fc99e Initial load
duke
parents:
diff changeset
13747 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13748 <change date="27 Apr 2003" version="v59">
a61af66fc99e Initial load
duke
parents:
diff changeset
13749 Remove lingering indirect references to OBSOLETE_METHOD_ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
13750 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13751 <change date="4 May 2003" version="v60">
a61af66fc99e Initial load
duke
parents:
diff changeset
13752 Allow DestroyRawMonitor during OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13753 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13754 <change date="7 May 2003" version="v61">
a61af66fc99e Initial load
duke
parents:
diff changeset
13755 Added not monitor owner error return to DestroyRawMonitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13756 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13757 <change date="13 May 2003" version="v62">
a61af66fc99e Initial load
duke
parents:
diff changeset
13758 Clarify semantics of raw monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13759 Change flags on <code>GetThreadStatus</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13760 <code>GetClassLoader</code> return NULL for the bootstrap class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
13761 Add <code>GetClassName</code> issue.
a61af66fc99e Initial load
duke
parents:
diff changeset
13762 Define local variable signature.
a61af66fc99e Initial load
duke
parents:
diff changeset
13763 Disallow zero in annotations array of <code>GetObjectsWithAnnotations</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13764 Remove over specification in <code>GetObjectsWithAnnotations</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13765 Elide <code>SetAllocationHooks</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13766 Elide <code>SuspendAllThreads</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13767 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13768 <change date="14 May 2003" version="v63">
a61af66fc99e Initial load
duke
parents:
diff changeset
13769 Define the data type <code>jvmtiEventCallbacks</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13770 Zero length allocations return NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13771 Keep SetAllocationHooks in JVMDI, but remove from <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13772 Add JVMTI_THREAD_STATUS_FLAG_INTERRUPTED.
a61af66fc99e Initial load
duke
parents:
diff changeset
13773 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13774 <change date="15 May 2003" version="v64">
a61af66fc99e Initial load
duke
parents:
diff changeset
13775 Better wording, per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13776 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13777 <change date="15 May 2003" version="v65">
a61af66fc99e Initial load
duke
parents:
diff changeset
13778 First Alpha.
a61af66fc99e Initial load
duke
parents:
diff changeset
13779 Make jmethodID and jfieldID unique, jclass not used.
a61af66fc99e Initial load
duke
parents:
diff changeset
13780 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13781 <change date="27 May 2003" version="v66">
a61af66fc99e Initial load
duke
parents:
diff changeset
13782 Fix minor XSLT errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13783 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13784 <change date="13 June 2003" version="v67">
a61af66fc99e Initial load
duke
parents:
diff changeset
13785 Undo making jfieldID unique (jmethodID still is).
a61af66fc99e Initial load
duke
parents:
diff changeset
13786 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13787 <change date="17 June 2003" version="v68">
a61af66fc99e Initial load
duke
parents:
diff changeset
13788 Changes per June 11th Expert Group meeting --
a61af66fc99e Initial load
duke
parents:
diff changeset
13789 Overhaul Heap functionality: single callback,
a61af66fc99e Initial load
duke
parents:
diff changeset
13790 remove GetHeapRoots, add reachable iterators,
a61af66fc99e Initial load
duke
parents:
diff changeset
13791 and rename "annotation" to "tag".
a61af66fc99e Initial load
duke
parents:
diff changeset
13792 NULL thread parameter on most functions is current
a61af66fc99e Initial load
duke
parents:
diff changeset
13793 thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13794 Add timers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13795 Remove ForceExit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13796 Add GetEnvironmentLocalStorage.
a61af66fc99e Initial load
duke
parents:
diff changeset
13797 Add verbose flag and event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13798 Add AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13799 Update ClassFileLoadHook.
a61af66fc99e Initial load
duke
parents:
diff changeset
13800 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13801 <change date="18 June 2003" version="v69">
a61af66fc99e Initial load
duke
parents:
diff changeset
13802 Clean up issues sections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13803 Rename GetClassName back to GetClassSignature and
a61af66fc99e Initial load
duke
parents:
diff changeset
13804 fix description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13805 Add generic signature to GetClassSignature,
a61af66fc99e Initial load
duke
parents:
diff changeset
13806 GetFieldSignature, GetMethodSignature, and
a61af66fc99e Initial load
duke
parents:
diff changeset
13807 GetLocalVariableTable.
a61af66fc99e Initial load
duke
parents:
diff changeset
13808 Elide EstimateCostOfCapabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13809 Clarify that the system property functions operate
a61af66fc99e Initial load
duke
parents:
diff changeset
13810 on the VM view of system properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
13811 Clarify Agent_OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13812 Remove "const" from JNIEnv* in events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13813 Add metadata accessors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13814 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13815 <change date="18 June 2003" version="v70">
a61af66fc99e Initial load
duke
parents:
diff changeset
13816 Add start_depth to GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13817 Move system properties to a new category.
a61af66fc99e Initial load
duke
parents:
diff changeset
13818 Add GetObjectSize.
a61af66fc99e Initial load
duke
parents:
diff changeset
13819 Remove "X" from command line flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
13820 XML, HTML, and spell check corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13821 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13822 <change date="19 June 2003" version="v71">
a61af66fc99e Initial load
duke
parents:
diff changeset
13823 Fix JVMTI_HEAP_ROOT_THREAD to be 6.
a61af66fc99e Initial load
duke
parents:
diff changeset
13824 Make each synopsis match the function name.
a61af66fc99e Initial load
duke
parents:
diff changeset
13825 Fix unclear wording.
a61af66fc99e Initial load
duke
parents:
diff changeset
13826 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13827 <change date="26 June 2003" version="v72">
a61af66fc99e Initial load
duke
parents:
diff changeset
13828 SetThreadLocalStorage and SetEnvironmentLocalStorage should allow value
a61af66fc99e Initial load
duke
parents:
diff changeset
13829 to be set to NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13830 NotifyFramePop, GetFrameLocationm and all the local variable operations
a61af66fc99e Initial load
duke
parents:
diff changeset
13831 needed to have their wording about frames fixed.
a61af66fc99e Initial load
duke
parents:
diff changeset
13832 Grammar and clarity need to be fixed throughout.
a61af66fc99e Initial load
duke
parents:
diff changeset
13833 Capitalization and puntuation need to be consistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13834 Need micro version number and masks for accessing major, minor, and micro.
a61af66fc99e Initial load
duke
parents:
diff changeset
13835 The error code lists should indicate which must be returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
13836 an implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13837 The command line properties should be visible in the properties functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13838 Disallow popping from the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13839 Allow implementations to return opaque frame error when they cannot pop.
a61af66fc99e Initial load
duke
parents:
diff changeset
13840 The NativeMethodBind event should be sent during any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13841 The DynamicCodeGenerated event should be sent during any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13842 The following functions should be allowed to operate before VMInit:
a61af66fc99e Initial load
duke
parents:
diff changeset
13843 Set/GetEnvironmentLocalStorage
a61af66fc99e Initial load
duke
parents:
diff changeset
13844 GetMethodDeclaringClass
a61af66fc99e Initial load
duke
parents:
diff changeset
13845 GetClassSignature
a61af66fc99e Initial load
duke
parents:
diff changeset
13846 GetClassModifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
13847 IsInterface
a61af66fc99e Initial load
duke
parents:
diff changeset
13848 IsArrayClass
a61af66fc99e Initial load
duke
parents:
diff changeset
13849 GetMethodName
a61af66fc99e Initial load
duke
parents:
diff changeset
13850 GetMethodModifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
13851 GetMaxLocals
a61af66fc99e Initial load
duke
parents:
diff changeset
13852 GetArgumentsSize
a61af66fc99e Initial load
duke
parents:
diff changeset
13853 GetLineNumberTable
a61af66fc99e Initial load
duke
parents:
diff changeset
13854 GetMethodLocation
a61af66fc99e Initial load
duke
parents:
diff changeset
13855 IsMethodNative
a61af66fc99e Initial load
duke
parents:
diff changeset
13856 IsMethodSynthetic.
a61af66fc99e Initial load
duke
parents:
diff changeset
13857 Other changes (to XSL):
a61af66fc99e Initial load
duke
parents:
diff changeset
13858 Argument description should show asterisk after not before pointers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13859 NotifyFramePop, GetFrameLocationm and all the local variable operations
a61af66fc99e Initial load
duke
parents:
diff changeset
13860 should hsve the NO_MORE_FRAMES error added.
a61af66fc99e Initial load
duke
parents:
diff changeset
13861 Not alive threads should have a different error return than invalid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13862 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13863 <change date="7 July 2003" version="v73">
a61af66fc99e Initial load
duke
parents:
diff changeset
13864 VerboseOutput event was missing message parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13865 Minor fix-ups.
a61af66fc99e Initial load
duke
parents:
diff changeset
13866 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13867 <change date="14 July 2003" version="v74">
a61af66fc99e Initial load
duke
parents:
diff changeset
13868 Technical Publications Department corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13869 Allow thread and environment local storage to be set to NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13870 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13871 <change date="23 July 2003" version="v75">
a61af66fc99e Initial load
duke
parents:
diff changeset
13872 Use new Agent_OnLoad rather than overloaded JVM_OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13873 Add JNICALL to callbacks (XSL).
a61af66fc99e Initial load
duke
parents:
diff changeset
13874 Document JNICALL requirement for both events and callbacks (XSL).
a61af66fc99e Initial load
duke
parents:
diff changeset
13875 Restrict RedefineClasses to methods and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13876 Elide the VerboseOutput event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13877 VMObjectAlloc: restrict when event is sent and remove method parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13878 Finish loose ends from Tech Pubs edit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13879 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13880 <change date="24 July 2003" version="v76">
a61af66fc99e Initial load
duke
parents:
diff changeset
13881 Change ClassFileLoadHook event to send the class instead of a boolean of redefine.
a61af66fc99e Initial load
duke
parents:
diff changeset
13882 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13883 <change date="24 July 2003" version="v77">
a61af66fc99e Initial load
duke
parents:
diff changeset
13884 XML fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13885 Minor text clarifications and corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13886 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13887 <change date="24 July 2003" version="v78">
a61af66fc99e Initial load
duke
parents:
diff changeset
13888 Remove GetExceptionHandlerTable and GetThrownExceptions from <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13889 Clarify that stack frames are JVM Spec frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13890 Split can_get_source_info into can_get_source_file_name, can_get_line_numbers,
a61af66fc99e Initial load
duke
parents:
diff changeset
13891 and can_get_source_debug_extension.
a61af66fc99e Initial load
duke
parents:
diff changeset
13892 PopFrame cannot have a native calling method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13893 Removed incorrect statement in GetClassloaderClasses
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
13894 (see <vmspec chapter="4.4"/>).
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13895 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13896 <change date="24 July 2003" version="v79">
a61af66fc99e Initial load
duke
parents:
diff changeset
13897 XML and text fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13898 Move stack frame description into Stack Frame category.
a61af66fc99e Initial load
duke
parents:
diff changeset
13899 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13900 <change date="26 July 2003" version="v80">
a61af66fc99e Initial load
duke
parents:
diff changeset
13901 Allow NULL (means bootstrap loader) for GetClassloaderClasses.
a61af66fc99e Initial load
duke
parents:
diff changeset
13902 Add new heap reference kinds for references from classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13903 Add timer information struct and query functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13904 Add AvailableProcessors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13905 Rename GetOtherThreadCpuTime to GetThreadCpuTime.
a61af66fc99e Initial load
duke
parents:
diff changeset
13906 Explicitly add JVMTI_ERROR_INVALID_THREAD and JVMTI_ERROR_THREAD_NOT_ALIVE
a61af66fc99e Initial load
duke
parents:
diff changeset
13907 to SetEventNotification mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13908 Add initial thread to the VM_INIT event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13909 Remove platform assumptions from AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13910 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13911 <change date="26 July 2003" version="v81">
a61af66fc99e Initial load
duke
parents:
diff changeset
13912 Grammar and clarity changes per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13913 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13914 <change date="27 July 2003" version="v82">
a61af66fc99e Initial load
duke
parents:
diff changeset
13915 More grammar and clarity changes per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13916 Add Agent_OnUnload.
a61af66fc99e Initial load
duke
parents:
diff changeset
13917 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13918 <change date="28 July 2003" version="v83">
a61af66fc99e Initial load
duke
parents:
diff changeset
13919 Change return type of Agent_OnUnload to void.
a61af66fc99e Initial load
duke
parents:
diff changeset
13920 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13921 <change date="28 July 2003" version="v84">
a61af66fc99e Initial load
duke
parents:
diff changeset
13922 Rename JVMTI_REFERENCE_ARRAY to JVMTI_REFERENCE_ARRAY_ELEMENT.
a61af66fc99e Initial load
duke
parents:
diff changeset
13923 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13924 <change date="28 July 2003" version="v85">
a61af66fc99e Initial load
duke
parents:
diff changeset
13925 Steal java.lang.Runtime.availableProcessors() wording for
a61af66fc99e Initial load
duke
parents:
diff changeset
13926 AvailableProcessors().
a61af66fc99e Initial load
duke
parents:
diff changeset
13927 Guarantee that zero will never be an event ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
13928 Remove some issues which are no longer issues.
a61af66fc99e Initial load
duke
parents:
diff changeset
13929 Per review, rename and more completely document the timer
a61af66fc99e Initial load
duke
parents:
diff changeset
13930 information functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13931 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13932 <change date="29 July 2003" version="v86">
a61af66fc99e Initial load
duke
parents:
diff changeset
13933 Non-spec visible change to XML controlled implementation:
a61af66fc99e Initial load
duke
parents:
diff changeset
13934 SetThreadLocalStorage must run in VM mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13935 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13936 <change date="5 August 2003" version="0.1.87">
a61af66fc99e Initial load
duke
parents:
diff changeset
13937 Add GetErrorName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13938 Add varargs warning to jvmtiExtensionEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13939 Remove "const" on the jvmtiEnv* of jvmtiExtensionEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13940 Remove unused can_get_exception_info capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
13941 Pass jvmtiEnv* and JNIEnv* to the jvmtiStartFunction.
a61af66fc99e Initial load
duke
parents:
diff changeset
13942 Fix jvmtiExtensionFunctionInfo.func declared type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13943 Extension function returns error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
13944 Use new version numbering.
a61af66fc99e Initial load
duke
parents:
diff changeset
13945 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13946 <change date="5 August 2003" version="0.2.88">
a61af66fc99e Initial load
duke
parents:
diff changeset
13947 Remove the ClassUnload event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13948 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13949 <change date="8 August 2003" version="0.2.89">
a61af66fc99e Initial load
duke
parents:
diff changeset
13950 Heap reference iterator callbacks return an enum that
a61af66fc99e Initial load
duke
parents:
diff changeset
13951 allows outgoing object references to be ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
13952 Allow JNIEnv as a param type to extension events/functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13953 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13954 <change date="15 August 2003" version="0.2.90">
a61af66fc99e Initial load
duke
parents:
diff changeset
13955 Fix a typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
13956 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13957 <change date="2 September 2003" version="0.2.91">
a61af66fc99e Initial load
duke
parents:
diff changeset
13958 Remove all metadata functions: GetClassMetadata,
a61af66fc99e Initial load
duke
parents:
diff changeset
13959 GetFieldMetadata, and GetMethodMetadata.
a61af66fc99e Initial load
duke
parents:
diff changeset
13960 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13961 <change date="1 October 2003" version="0.2.92">
a61af66fc99e Initial load
duke
parents:
diff changeset
13962 Mark the functions Allocate. Deallocate, RawMonitor*,
a61af66fc99e Initial load
duke
parents:
diff changeset
13963 SetEnvironmentLocalStorage, and GetEnvironmentLocalStorage
a61af66fc99e Initial load
duke
parents:
diff changeset
13964 as safe for use in heap callbacks and GC events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13965 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13966 <change date="24 November 2003" version="0.2.93">
a61af66fc99e Initial load
duke
parents:
diff changeset
13967 Add pass through opaque user data pointer to heap iterate
a61af66fc99e Initial load
duke
parents:
diff changeset
13968 functions and callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13969 In the CompiledMethodUnload event, send the code address.
a61af66fc99e Initial load
duke
parents:
diff changeset
13970 Add GarbageCollectionOccurred event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13971 Add constant pool reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
13972 Mark the functions CreateRawMonitor and DestroyRawMonitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13973 as safe for use in heap callbacks and GC events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13974 Clarify: VMDeath, GetCurrentThreadCpuTimerInfo,
a61af66fc99e Initial load
duke
parents:
diff changeset
13975 GetThreadCpuTimerInfo, IterateOverReachableObjects,
a61af66fc99e Initial load
duke
parents:
diff changeset
13976 IterateOverObjectsReachableFromObject, GetTime and
a61af66fc99e Initial load
duke
parents:
diff changeset
13977 JVMTI_ERROR_NULL_POINTER.
a61af66fc99e Initial load
duke
parents:
diff changeset
13978 Add missing errors to: GenerateEvents and
a61af66fc99e Initial load
duke
parents:
diff changeset
13979 AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13980 Fix description of ClassFileLoadHook name parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13981 In heap callbacks and GC/ObjectFree events, specify
a61af66fc99e Initial load
duke
parents:
diff changeset
13982 that only explicitly allowed functions can be called.
a61af66fc99e Initial load
duke
parents:
diff changeset
13983 Allow GetCurrentThreadCpuTimerInfo, GetCurrentThreadCpuTime,
a61af66fc99e Initial load
duke
parents:
diff changeset
13984 GetTimerInfo, and GetTime during callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
13985 Allow calling SetTag/GetTag during the onload phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13986 SetEventNotificationMode, add: error attempted inappropriate
a61af66fc99e Initial load
duke
parents:
diff changeset
13987 thread level control.
a61af66fc99e Initial load
duke
parents:
diff changeset
13988 Remove jvmtiExceptionHandlerEntry.
a61af66fc99e Initial load
duke
parents:
diff changeset
13989 Fix handling of native methods on the stack --
a61af66fc99e Initial load
duke
parents:
diff changeset
13990 location_ptr param of GetFrameLocation, remove
a61af66fc99e Initial load
duke
parents:
diff changeset
13991 JVMTI_ERROR_OPAQUE_FRAME from GetFrameLocation,
a61af66fc99e Initial load
duke
parents:
diff changeset
13992 jvmtiFrameInfo.location, and jlocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13993 Remove typo (from JVMPI) implying that the MonitorWaited
a61af66fc99e Initial load
duke
parents:
diff changeset
13994 event is sent on sleep.
a61af66fc99e Initial load
duke
parents:
diff changeset
13995 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13996 <change date="25 November 2003" version="0.2.94">
a61af66fc99e Initial load
duke
parents:
diff changeset
13997 Clarifications and typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
13998 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13999 <change date="3 December 2003" version="0.2.95">
a61af66fc99e Initial load
duke
parents:
diff changeset
14000 Allow NULL user_data in heap iterators.
a61af66fc99e Initial load
duke
parents:
diff changeset
14001 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14002 <change date="28 January 2004" version="0.2.97">
a61af66fc99e Initial load
duke
parents:
diff changeset
14003 Add GetThreadState, deprecate GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
14004 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14005 <change date="29 January 2004" version="0.2.98">
a61af66fc99e Initial load
duke
parents:
diff changeset
14006 INVALID_SLOT and TYPE_MISMATCH errors should be optional.
a61af66fc99e Initial load
duke
parents:
diff changeset
14007 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14008 <change date="12 February 2004" version="0.2.102">
a61af66fc99e Initial load
duke
parents:
diff changeset
14009 Remove MonitorContendedExit.
a61af66fc99e Initial load
duke
parents:
diff changeset
14010 Added JNIEnv parameter to VMObjectAlloc.
a61af66fc99e Initial load
duke
parents:
diff changeset
14011 Clarified definition of class_tag and referrer_index
a61af66fc99e Initial load
duke
parents:
diff changeset
14012 parameters to heap callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14013 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14014 <change date="16 Febuary 2004" version="0.2.103">
a61af66fc99e Initial load
duke
parents:
diff changeset
14015 Document JAVA_TOOL_OPTIONS.
a61af66fc99e Initial load
duke
parents:
diff changeset
14016 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14017 <change date="17 Febuary 2004" version="0.2.105">
a61af66fc99e Initial load
duke
parents:
diff changeset
14018 Divide start phase into primordial and start.
a61af66fc99e Initial load
duke
parents:
diff changeset
14019 Add VMStart event
a61af66fc99e Initial load
duke
parents:
diff changeset
14020 Change phase associations of functions and events.
a61af66fc99e Initial load
duke
parents:
diff changeset
14021 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14022 <change date="18 Febuary 2004" version="0.3.6">
a61af66fc99e Initial load
duke
parents:
diff changeset
14023 Elide deprecated GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
14024 Bump minor version, subtract 100 from micro version
a61af66fc99e Initial load
duke
parents:
diff changeset
14025 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14026 <change date="18 Febuary 2004" version="0.3.7">
a61af66fc99e Initial load
duke
parents:
diff changeset
14027 Document that timer nanosecond values are unsigned.
a61af66fc99e Initial load
duke
parents:
diff changeset
14028 Clarify text having to do with native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
14029 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14030 <change date="19 Febuary 2004" version="0.3.8">
a61af66fc99e Initial load
duke
parents:
diff changeset
14031 Fix typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14032 Remove elided deprecated GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
14033 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14034 <change date="23 Febuary 2004" version="0.3.9">
a61af66fc99e Initial load
duke
parents:
diff changeset
14035 Require NotifyFramePop to act on suspended threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
14036 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14037 <change date="24 Febuary 2004" version="0.3.10">
a61af66fc99e Initial load
duke
parents:
diff changeset
14038 Add capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
14039 (<internallink id="jvmtiCapabilities.can_redefine_any_class"
a61af66fc99e Initial load
duke
parents:
diff changeset
14040 ><code>can_redefine_any_class</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
14041 and
a61af66fc99e Initial load
duke
parents:
diff changeset
14042 <internallink id="jvmtiCapabilities.can_generate_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
14043 ><code>can_generate_all_class_hook_events</code></internallink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
14044 and an error (<errorlink id="JVMTI_ERROR_UNMODIFIABLE_CLASS"></errorlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
14045 which allow some classes to be unmodifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
14046 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14047 <change date="28 Febuary 2004" version="0.3.11">
a61af66fc99e Initial load
duke
parents:
diff changeset
14048 Add JVMTI_ERROR_MUST_POSSESS_CAPABILITY to SetEventNotificationMode.
a61af66fc99e Initial load
duke
parents:
diff changeset
14049 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14050 <change date="8 March 2004" version="0.3.12">
a61af66fc99e Initial load
duke
parents:
diff changeset
14051 Clarified CompiledMethodUnload so that it is clear the event
a61af66fc99e Initial load
duke
parents:
diff changeset
14052 may be posted after the class has been unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
14053 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14054 <change date="5 March 2004" version="0.3.13">
a61af66fc99e Initial load
duke
parents:
diff changeset
14055 Change the size parameter of VMObjectAlloc to jlong to match GetObjectSize.
a61af66fc99e Initial load
duke
parents:
diff changeset
14056 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14057 <change date="13 March 2004" version="0.3.14">
a61af66fc99e Initial load
duke
parents:
diff changeset
14058 Added guideline for the use of the JNI FindClass function in event
a61af66fc99e Initial load
duke
parents:
diff changeset
14059 callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14060 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14061 <change date="15 March 2004" version="0.3.15">
a61af66fc99e Initial load
duke
parents:
diff changeset
14062 Add GetAllStackTraces and GetThreadListStackTraces.
a61af66fc99e Initial load
duke
parents:
diff changeset
14063 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14064 <change date="19 March 2004" version="0.3.16">
a61af66fc99e Initial load
duke
parents:
diff changeset
14065 ClassLoad and ClassPrepare events can be posted during start phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14066 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14067 <change date="25 March 2004" version="0.3.17">
a61af66fc99e Initial load
duke
parents:
diff changeset
14068 Add JVMTI_ERROR_NATIVE_METHOD to GetLineNumberTable, GetLocalVariableTable,
a61af66fc99e Initial load
duke
parents:
diff changeset
14069 GetMaxLocals, GetArgumentsSize, GetMethodLocation, GetBytecodes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14070 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14071 <change date="29 March 2004" version="0.3.18">
a61af66fc99e Initial load
duke
parents:
diff changeset
14072 Return the timer kind in the timer information structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
14073 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14074 <change date="31 March 2004" version="0.3.19">
a61af66fc99e Initial load
duke
parents:
diff changeset
14075 Spec clarifications:
a61af66fc99e Initial load
duke
parents:
diff changeset
14076 JVMTI_THREAD_STATE_IN_NATIVE might not include JNI or <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
14077 ForceGarbageCollection does not run finalizers.
a61af66fc99e Initial load
duke
parents:
diff changeset
14078 The context of the specification is the Java platform.
a61af66fc99e Initial load
duke
parents:
diff changeset
14079 Warn about early instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14080 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14081 <change date="1 April 2004" version="0.3.20">
a61af66fc99e Initial load
duke
parents:
diff changeset
14082 Refinements to the above clarifications and
a61af66fc99e Initial load
duke
parents:
diff changeset
14083 Clarify that an error returned by Agent_OnLoad terminates the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
14084 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14085 <change date="1 April 2004" version="0.3.21">
a61af66fc99e Initial load
duke
parents:
diff changeset
14086 Array class creation does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14087 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14088 <change date="7 April 2004" version="0.3.22">
a61af66fc99e Initial load
duke
parents:
diff changeset
14089 Align thread state hierarchy more closely with java.lang.Thread.State.
a61af66fc99e Initial load
duke
parents:
diff changeset
14090 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14091 <change date="12 April 2004" version="0.3.23">
a61af66fc99e Initial load
duke
parents:
diff changeset
14092 Clarify the documentation of thread state.
a61af66fc99e Initial load
duke
parents:
diff changeset
14093 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14094 <change date="19 April 2004" version="0.3.24">
a61af66fc99e Initial load
duke
parents:
diff changeset
14095 Remove GarbageCollectionOccurred event -- can be done by agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14096 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14097 <change date="22 April 2004" version="0.3.25">
a61af66fc99e Initial load
duke
parents:
diff changeset
14098 Define "command-line option".
a61af66fc99e Initial load
duke
parents:
diff changeset
14099 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14100 <change date="29 April 2004" version="0.3.26">
a61af66fc99e Initial load
duke
parents:
diff changeset
14101 Describe the intended use of bytecode instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14102 Fix description of extension event first parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
14103 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14104 <change date="30 April 2004" version="0.3.27">
a61af66fc99e Initial load
duke
parents:
diff changeset
14105 Clarification and typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14106 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14107 <change date="18 May 2004" version="0.3.28">
a61af66fc99e Initial load
duke
parents:
diff changeset
14108 Remove DataDumpRequest event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14109 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14110 <change date="18 May 2004" version="0.3.29">
a61af66fc99e Initial load
duke
parents:
diff changeset
14111 Clarify RawMonitorWait with zero timeout.
a61af66fc99e Initial load
duke
parents:
diff changeset
14112 Clarify thread state after RunAgentThread.
a61af66fc99e Initial load
duke
parents:
diff changeset
14113 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14114 <change date="24 May 2004" version="0.3.30">
a61af66fc99e Initial load
duke
parents:
diff changeset
14115 Clean-up: fix bad/old links, etc.
a61af66fc99e Initial load
duke
parents:
diff changeset
14116 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14117 <change date="30 May 2004" version="0.3.31">
a61af66fc99e Initial load
duke
parents:
diff changeset
14118 Clarifications including:
a61af66fc99e Initial load
duke
parents:
diff changeset
14119 All character strings are modified UTF-8.
a61af66fc99e Initial load
duke
parents:
diff changeset
14120 Agent thread visibiity.
a61af66fc99e Initial load
duke
parents:
diff changeset
14121 Meaning of obsolete method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
14122 Thread invoking heap callbacks,
a61af66fc99e Initial load
duke
parents:
diff changeset
14123 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14124 <change date="1 June 2004" version="1.0.32">
a61af66fc99e Initial load
duke
parents:
diff changeset
14125 Bump major.minor version numbers to "1.0".
a61af66fc99e Initial load
duke
parents:
diff changeset
14126 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14127 <change date="2 June 2004" version="1.0.33">
a61af66fc99e Initial load
duke
parents:
diff changeset
14128 Clarify interaction between ForceGarbageCollection
a61af66fc99e Initial load
duke
parents:
diff changeset
14129 and ObjectFree.
a61af66fc99e Initial load
duke
parents:
diff changeset
14130 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14131 <change date="6 June 2004" version="1.0.34">
a61af66fc99e Initial load
duke
parents:
diff changeset
14132 Restrict AddToBootstrapClassLoaderSearch and
a61af66fc99e Initial load
duke
parents:
diff changeset
14133 SetSystemProperty to the OnLoad phase only.
a61af66fc99e Initial load
duke
parents:
diff changeset
14134 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14135 <change date="11 June 2004" version="1.0.35">
a61af66fc99e Initial load
duke
parents:
diff changeset
14136 Fix typo in SetTag.
a61af66fc99e Initial load
duke
parents:
diff changeset
14137 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14138 <change date="18 June 2004" version="1.0.36">
a61af66fc99e Initial load
duke
parents:
diff changeset
14139 Fix trademarks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14140 Add missing parameter in example GetThreadState usage.
a61af66fc99e Initial load
duke
parents:
diff changeset
14141 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14142 <change date="4 August 2004" version="1.0.37">
a61af66fc99e Initial load
duke
parents:
diff changeset
14143 Copyright updates.
a61af66fc99e Initial load
duke
parents:
diff changeset
14144 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14145 <change date="5 November 2004" version="1.0.38">
a61af66fc99e Initial load
duke
parents:
diff changeset
14146 Add missing function table layout.
a61af66fc99e Initial load
duke
parents:
diff changeset
14147 Add missing description of C++ member function format of functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14148 Clarify that name in CFLH can be NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
14149 Released as part of <tm>J2SE</tm> 5.0.
a61af66fc99e Initial load
duke
parents:
diff changeset
14150 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14151 <change date="24 April 2005" version="1.1.47">
a61af66fc99e Initial load
duke
parents:
diff changeset
14152 Bump major.minor version numbers to "1.1".
a61af66fc99e Initial load
duke
parents:
diff changeset
14153 Add ForceEarlyReturn* functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14154 Add GetOwnedMonitorStackDepthInfo function.
a61af66fc99e Initial load
duke
parents:
diff changeset
14155 Add GetCurrentThread function.
a61af66fc99e Initial load
duke
parents:
diff changeset
14156 Add "since" version marker.
a61af66fc99e Initial load
duke
parents:
diff changeset
14157 Add AddToSystemClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
14158 Allow AddToBootstrapClassLoaderSearch be used in live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14159 Fix historic rubbish in the descriptions of the heap_object_callback
a61af66fc99e Initial load
duke
parents:
diff changeset
14160 parameter of IterateOverHeap and IterateOverInstancesOfClass functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
14161 disallow NULL for this parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
14162 Clarify, correct and make consistent: wording about current thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
14163 opaque frames and insufficient number of frames in PopFrame.
a61af66fc99e Initial load
duke
parents:
diff changeset
14164 Consistently use "current frame" rather than "topmost".
a61af66fc99e Initial load
duke
parents:
diff changeset
14165 Clarify the JVMTI_ERROR_TYPE_MISMATCH errors in GetLocal* and SetLocal*
a61af66fc99e Initial load
duke
parents:
diff changeset
14166 by making them compatible with those in ForceEarlyReturn*.
a61af66fc99e Initial load
duke
parents:
diff changeset
14167 Many other clarifications and wording clean ups.
a61af66fc99e Initial load
duke
parents:
diff changeset
14168 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14169 <change date="25 April 2005" version="1.1.48">
a61af66fc99e Initial load
duke
parents:
diff changeset
14170 Add GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14171 Switch references to the first edition of the VM Spec, to the seconds edition.
a61af66fc99e Initial load
duke
parents:
diff changeset
14172 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14173 <change date="26 April 2005" version="1.1.49">
a61af66fc99e Initial load
duke
parents:
diff changeset
14174 Clarify minor/major version order in GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14175 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14176 <change date="26 April 2005" version="1.1.50">
a61af66fc99e Initial load
duke
parents:
diff changeset
14177 Add SetNativeMethodPrefix and SetNativeMethodPrefixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14178 Reassign GetOwnedMonitorStackDepthInfo to position 153.
a61af66fc99e Initial load
duke
parents:
diff changeset
14179 Break out Class Loader Search in its own documentation category.
a61af66fc99e Initial load
duke
parents:
diff changeset
14180 Deal with overly long lines in XML source.
a61af66fc99e Initial load
duke
parents:
diff changeset
14181 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14182 <change date="29 April 2005" version="1.1.51">
a61af66fc99e Initial load
duke
parents:
diff changeset
14183 Allow agents be started in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14184 Added paragraph about deploying agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
14185 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14186 <change date="30 April 2005" version="1.1.52">
a61af66fc99e Initial load
duke
parents:
diff changeset
14187 Add specification description to SetNativeMethodPrefix(es).
a61af66fc99e Initial load
duke
parents:
diff changeset
14188 Better define the conditions on GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14189 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14190 <change date="30 April 2005" version="1.1.53">
a61af66fc99e Initial load
duke
parents:
diff changeset
14191 Break out the GetClassVersionNumber function from GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14192 Clean-up the references to the VM Spec.
a61af66fc99e Initial load
duke
parents:
diff changeset
14193 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14194 <change date="1 May 2005" version="1.1.54">
a61af66fc99e Initial load
duke
parents:
diff changeset
14195 Allow SetNativeMethodPrefix(es) in any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14196 Add clarifications about the impact of redefinition on GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14197 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14198 <change date="2 May 2005" version="1.1.56">
a61af66fc99e Initial load
duke
parents:
diff changeset
14199 Various clarifications to SetNativeMethodPrefix(es).
a61af66fc99e Initial load
duke
parents:
diff changeset
14200 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14201 <change date="2 May 2005" version="1.1.57">
a61af66fc99e Initial load
duke
parents:
diff changeset
14202 Add missing performance warning to the method entry event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14203 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14204 <change date="5 May 2005" version="1.1.58">
a61af66fc99e Initial load
duke
parents:
diff changeset
14205 Remove internal JVMDI support.
a61af66fc99e Initial load
duke
parents:
diff changeset
14206 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14207 <change date="8 May 2005" version="1.1.59">
a61af66fc99e Initial load
duke
parents:
diff changeset
14208 Add <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
14209 Revamp the bytecode instrumentation documentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14210 Change <functionlink id="IsMethodObsolete"/> to no longer
a61af66fc99e Initial load
duke
parents:
diff changeset
14211 require the can_redefine_classes capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
14212 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14213 <change date="11 May 2005" version="1.1.63">
a61af66fc99e Initial load
duke
parents:
diff changeset
14214 Clarifications for retransformation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14215 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14216 <change date="11 May 2005" version="1.1.64">
a61af66fc99e Initial load
duke
parents:
diff changeset
14217 Clarifications for retransformation, per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
14218 Lock "retransformation (in)capable" at class load enable time.
a61af66fc99e Initial load
duke
parents:
diff changeset
14219 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14220 <change date="4 June 2005" version="1.1.67">
a61af66fc99e Initial load
duke
parents:
diff changeset
14221 Add new heap functionity which supports reporting primitive values,
a61af66fc99e Initial load
duke
parents:
diff changeset
14222 allows setting the referrer tag, and has more powerful filtering:
a61af66fc99e Initial load
duke
parents:
diff changeset
14223 FollowReferences, IterateThroughHeap, and their associated
a61af66fc99e Initial load
duke
parents:
diff changeset
14224 callbacks, structs, enums, and constants.
a61af66fc99e Initial load
duke
parents:
diff changeset
14225 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14226 <change date="4 June 2005" version="1.1.68">
a61af66fc99e Initial load
duke
parents:
diff changeset
14227 Clarification.
a61af66fc99e Initial load
duke
parents:
diff changeset
14228 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14229 <change date="6 June 2005" version="1.1.69">
a61af66fc99e Initial load
duke
parents:
diff changeset
14230 FollowReferences, IterateThroughHeap: Put callbacks in a struct;
a61af66fc99e Initial load
duke
parents:
diff changeset
14231 Add missing error codes; reduce bits in the visit control flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
14232 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14233 <change date="14 June 2005" version="1.1.70">
a61af66fc99e Initial load
duke
parents:
diff changeset
14234 More on new heap functionity: spec clean-up per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
14235 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14236 <change date="15 June 2005" version="1.1.71">
a61af66fc99e Initial load
duke
parents:
diff changeset
14237 More on new heap functionity: Rename old heap section to Heap (1.0).
a61af66fc99e Initial load
duke
parents:
diff changeset
14238 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14239 <change date="21 June 2005" version="1.1.72">
a61af66fc99e Initial load
duke
parents:
diff changeset
14240 Fix typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14241 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14242 <change date="27 June 2005" version="1.1.73">
a61af66fc99e Initial load
duke
parents:
diff changeset
14243 Make referrer info structure a union.
a61af66fc99e Initial load
duke
parents:
diff changeset
14244 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14245 <change date="9 September 2005" version="1.1.74">
a61af66fc99e Initial load
duke
parents:
diff changeset
14246 In new heap functions:
a61af66fc99e Initial load
duke
parents:
diff changeset
14247 Add missing superclass reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
14248 Use a single scheme for computing field indexes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14249 Remove outdated references to struct based referrer info.
a61af66fc99e Initial load
duke
parents:
diff changeset
14250 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14251 <change date="12 September 2005" version="1.1.75">
a61af66fc99e Initial load
duke
parents:
diff changeset
14252 Don't callback during FollowReferences on frivolous java.lang.Object superclass.
a61af66fc99e Initial load
duke
parents:
diff changeset
14253 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14254 <change date="13 September 2005" version="1.1.76">
a61af66fc99e Initial load
duke
parents:
diff changeset
14255 In string primitive callback, length now Unicode length.
a61af66fc99e Initial load
duke
parents:
diff changeset
14256 In array and string primitive callbacks, value now "const".
a61af66fc99e Initial load
duke
parents:
diff changeset
14257 Note possible compiler impacts on setting JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
14258 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14259 <change date="13 September 2005" version="1.1.77">
a61af66fc99e Initial load
duke
parents:
diff changeset
14260 GetClassVersionNumbers() and GetConstantPool() should return
a61af66fc99e Initial load
duke
parents:
diff changeset
14261 error on array or primitive class.
a61af66fc99e Initial load
duke
parents:
diff changeset
14262 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14263 <change date="14 September 2005" version="1.1.78">
a61af66fc99e Initial load
duke
parents:
diff changeset
14264 Grammar fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14265 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14266 <change date="26 September 2005" version="1.1.79">
a61af66fc99e Initial load
duke
parents:
diff changeset
14267 Add IsModifiableClass query.
a61af66fc99e Initial load
duke
parents:
diff changeset
14268 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14269 <change date="9 February 2006" version="1.1.81">
a61af66fc99e Initial load
duke
parents:
diff changeset
14270 Add referrer_class_tag parameter to jvmtiHeapReferenceCallback.
a61af66fc99e Initial load
duke
parents:
diff changeset
14271 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14272 <change date="13 February 2006" version="1.1.82">
a61af66fc99e Initial load
duke
parents:
diff changeset
14273 Doc fixes: update can_redefine_any_class to include retransform.
a61af66fc99e Initial load
duke
parents:
diff changeset
14274 Clarify that exception events cover all Throwables.
a61af66fc99e Initial load
duke
parents:
diff changeset
14275 In GetStackTrace, no test is done for start_depth too big if start_depth is zero,
a61af66fc99e Initial load
duke
parents:
diff changeset
14276 Clarify fields reported in Primitive Field Callback -- static vs instance.
a61af66fc99e Initial load
duke
parents:
diff changeset
14277 Repair confusing names of heap types, including callback names.
a61af66fc99e Initial load
duke
parents:
diff changeset
14278 Require consistent usage of stack depth in the face of thread launch methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
14279 Note incompatibility of <jvmti/> memory management with other systems.
a61af66fc99e Initial load
duke
parents:
diff changeset
14280 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14281 <change date="14 February 2006" version="1.1.85">
a61af66fc99e Initial load
duke
parents:
diff changeset
14282 Fix typos and missing renames.
a61af66fc99e Initial load
duke
parents:
diff changeset
14283 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14284 <change date="13 March 2006" version="1.1.86">
a61af66fc99e Initial load
duke
parents:
diff changeset
14285 Clarify that jmethodIDs and jfieldIDs can be saved.
a61af66fc99e Initial load
duke
parents:
diff changeset
14286 Clarify that Iterate Over Instances Of Class includes subclasses.
a61af66fc99e Initial load
duke
parents:
diff changeset
14287 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14288 <change date="14 March 2006" version="1.1.87">
a61af66fc99e Initial load
duke
parents:
diff changeset
14289 Better phrasing.
a61af66fc99e Initial load
duke
parents:
diff changeset
14290 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14291 <change date="16 March 2006" version="1.1.88">
a61af66fc99e Initial load
duke
parents:
diff changeset
14292 Match the referrer_index for static fields in Object Reference Callback
a61af66fc99e Initial load
duke
parents:
diff changeset
14293 with the Reference Implementation (and all other known implementations);
a61af66fc99e Initial load
duke
parents:
diff changeset
14294 that is, make it match the definition for instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
14295 In GetThreadListStackTraces, add JVMTI_ERROR_INVALID_THREAD to cover
a61af66fc99e Initial load
duke
parents:
diff changeset
14296 an invalid thread in the list; and specify that not started threads
a61af66fc99e Initial load
duke
parents:
diff changeset
14297 return empty stacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14298 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14299 <change date="17 March 2006" version="1.1.89">
a61af66fc99e Initial load
duke
parents:
diff changeset
14300 Typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
14301 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14302 <change date="25 March 2006" version="1.1.90">
a61af66fc99e Initial load
duke
parents:
diff changeset
14303 Typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
14304 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14305 <change date="6 April 2006" version="1.1.91">
a61af66fc99e Initial load
duke
parents:
diff changeset
14306 Remove restrictions on AddToBootstrapClassLoaderSearch and
a61af66fc99e Initial load
duke
parents:
diff changeset
14307 AddToSystemClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
14308 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14309 <change date="1 May 2006" version="1.1.93">
a61af66fc99e Initial load
duke
parents:
diff changeset
14310 Changed spec to return -1 for monitor stack depth for the
a61af66fc99e Initial load
duke
parents:
diff changeset
14311 implementation which can not determine stack depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
14312 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14313 <change date="3 May 2006" version="1.1.94">
a61af66fc99e Initial load
duke
parents:
diff changeset
14314 Corrections for readability and accuracy courtesy of Alan Pratt of IBM.
a61af66fc99e Initial load
duke
parents:
diff changeset
14315 List the object relationships reported in FollowReferences.
a61af66fc99e Initial load
duke
parents:
diff changeset
14316 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14317 <change date="5 May 2006" version="1.1.95">
a61af66fc99e Initial load
duke
parents:
diff changeset
14318 Clarify the object relationships reported in FollowReferences.
a61af66fc99e Initial load
duke
parents:
diff changeset
14319 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14320 <change date="28 June 2006" version="1.1.98">
a61af66fc99e Initial load
duke
parents:
diff changeset
14321 Clarify DisposeEnvironment; add warning.
a61af66fc99e Initial load
duke
parents:
diff changeset
14322 Fix typos in SetLocalXXX "retrieve" => "set".
a61af66fc99e Initial load
duke
parents:
diff changeset
14323 Clarify that native method prefixes must remain set while used.
a61af66fc99e Initial load
duke
parents:
diff changeset
14324 Clarify that exactly one Agent_OnXXX is called per agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14325 Clarify that library loading is independent from start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
14326 Remove ambiguous reference to Agent_OnLoad in the Agent_OnUnload spec.
a61af66fc99e Initial load
duke
parents:
diff changeset
14327 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14328 <change date="31 July 2006" version="1.1.99">
a61af66fc99e Initial load
duke
parents:
diff changeset
14329 Clarify the interaction between functions and exceptions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14330 Clarify and give examples of field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
14331 Remove confusing "That is" sentence from MonitorWait and MonitorWaited events.
a61af66fc99e Initial load
duke
parents:
diff changeset
14332 Update links to point to Java 6.
a61af66fc99e Initial load
duke
parents:
diff changeset
14333 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14334 <change date="6 August 2006" version="1.1.102">
a61af66fc99e Initial load
duke
parents:
diff changeset
14335 Add ResourceExhaustedEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14336 </change>
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
14337 <change date="11 October 2012" version="1.2.2">
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
14338 Fixed the "HTTP" and "Missing Anchor" errors reported by the LinkCheck tool.
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
14339 </change>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
14340 <change date="19 June 2013" version="1.2.3">
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
14341 Added support for statically linked agents.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
14342 </change>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
14343 </changehistory>
a61af66fc99e Initial load
duke
parents:
diff changeset
14344
a61af66fc99e Initial load
duke
parents:
diff changeset
14345 </specification>
a61af66fc99e Initial load
duke
parents:
diff changeset
14346 <!-- Keep this comment at the end of the file
a61af66fc99e Initial load
duke
parents:
diff changeset
14347 Local variables:
a61af66fc99e Initial load
duke
parents:
diff changeset
14348 mode: sgml
a61af66fc99e Initial load
duke
parents:
diff changeset
14349 sgml-omittag:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14350 sgml-shorttag:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14351 sgml-namecase-general:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14352 sgml-general-insert-case:lower
a61af66fc99e Initial load
duke
parents:
diff changeset
14353 sgml-minimize-attributes:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14354 sgml-always-quote-attributes:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14355 sgml-indent-step:2
a61af66fc99e Initial load
duke
parents:
diff changeset
14356 sgml-indent-data:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14357 sgml-parent-document:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14358 sgml-exposed-tags:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14359 sgml-local-catalogs:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14360 sgml-local-ecat-files:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14361 End:
a61af66fc99e Initial load
duke
parents:
diff changeset
14362 -->