annotate src/share/vm/prims/jvmti.xml @ 12190:edb5ab0f3fe5

8001107: @Stable annotation for constant folding of lazily evaluated variables Reviewed-by: rbackman, twisti, kvn Contributed-by: john.r.rose@oracle.com, vladimir.x.ivanov@oracle.com
author vlivanov
date Tue, 10 Sep 2013 14:51:48 -0700
parents f92b82d454fa
children 8e94527f601e
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
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
461 a function is exported, at the same point during startup as it would
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
462 have called the dynamic entry point Agent_OnUnLoad.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
463 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
464 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
465 function will be ignored.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
466 <p/>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
467 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
468 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
469 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
470 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
471 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
472 function will be ignored.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
473 </intro>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
474
a61af66fc99e Initial load
duke
parents:
diff changeset
475 <intro id="starting" label="Agent Command Line Options">
a61af66fc99e Initial load
duke
parents:
diff changeset
476 The term "command-line option" is used below to
a61af66fc99e Initial load
duke
parents:
diff changeset
477 mean options supplied in the <code>JavaVMInitArgs</code> argument
a61af66fc99e Initial load
duke
parents:
diff changeset
478 to the <code>JNI_CreateJavaVM</code> function of the JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
479 Invocation API.
a61af66fc99e Initial load
duke
parents:
diff changeset
480 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
481 One of the two following
a61af66fc99e Initial load
duke
parents:
diff changeset
482 command-line options is used on VM startup to
a61af66fc99e Initial load
duke
parents:
diff changeset
483 properly load and run agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
484 These arguments identify the library containing
a61af66fc99e Initial load
duke
parents:
diff changeset
485 the agent as well as an options
a61af66fc99e Initial load
duke
parents:
diff changeset
486 string to be passed in at startup.
a61af66fc99e Initial load
duke
parents:
diff changeset
487 <dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
488 <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
489 <dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
490 The name following <code>-agentlib:</code> is the name of the
a61af66fc99e Initial load
duke
parents:
diff changeset
491 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
492 proceeds in a platform-specific manner.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
493 Typically, the <i>&lt;agent-lib-name&gt;</i> is expanded to an
a61af66fc99e Initial load
duke
parents:
diff changeset
494 operating system specific file name.
a61af66fc99e Initial load
duke
parents:
diff changeset
495 The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
496 For example, if the option
a61af66fc99e Initial load
duke
parents:
diff changeset
497 <code>-agentlib:foo=opt1,opt2</code> is specified, the VM will attempt to
a61af66fc99e Initial load
duke
parents:
diff changeset
498 load the shared library <code>foo.dll</code> from the system <code>PATH</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
499 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
500 <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
501 environment.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
502 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
503 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
504 <p/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
505 </dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
506 <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
507 <dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
508 The path following <code>-agentpath:</code> is the absolute path from which
a61af66fc99e Initial load
duke
parents:
diff changeset
509 to load the library.
a61af66fc99e Initial load
duke
parents:
diff changeset
510 No library name expansion will occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
511 The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
512 For example, if the option
a61af66fc99e Initial load
duke
parents:
diff changeset
513 <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
514 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
515 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
516 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
517 <p/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
518 </dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
519 </dl>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
520 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
521 <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
522 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
523 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
524 <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
525 &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
526 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
527 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
528 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
529 Libraries loaded with <code>-agentlib:</code> or <code>-agentpath:</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
530 will be searched for JNI native method implementations to facilitate the
a61af66fc99e Initial load
duke
parents:
diff changeset
531 use of Java programming language code in tools, as is needed for
a61af66fc99e Initial load
duke
parents:
diff changeset
532 <internallink id="bci">bytecode instrumentation</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
533 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
534 The agent libraries will be searched after all other libraries have been
a61af66fc99e Initial load
duke
parents:
diff changeset
535 searched (agents wishing to override or intercept the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
536 implementations of non-agent methods can use the
a61af66fc99e Initial load
duke
parents:
diff changeset
537 <eventlink id="NativeMethodBind">NativeMethodBind event</eventlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
538 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
539 These switches do the above and nothing more - they do not change the
a61af66fc99e Initial load
duke
parents:
diff changeset
540 state of the VM or <jvmti/>. No command line options are needed
a61af66fc99e Initial load
duke
parents:
diff changeset
541 to enable <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
542 or aspects of <jvmti/>, this is handled programmatically
a61af66fc99e Initial load
duke
parents:
diff changeset
543 by the use of
a61af66fc99e Initial load
duke
parents:
diff changeset
544 <internallink id="capability">capabilities</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
545 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
546
a61af66fc99e Initial load
duke
parents:
diff changeset
547 <intro id="startup" label="Agent Start-Up">
a61af66fc99e Initial load
duke
parents:
diff changeset
548 The VM starts each agent by invoking a start-up function.
a61af66fc99e Initial load
duke
parents:
diff changeset
549 If the agent is started in the <code>OnLoad</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
550 <functionlink id="GetPhase">phase</functionlink> the function
a61af66fc99e Initial load
duke
parents:
diff changeset
551 <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
552 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
553 for statically linked agents will be invoked.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
554 If the agent is started in the live
a61af66fc99e Initial load
duke
parents:
diff changeset
555 <functionlink id="GetPhase">phase</functionlink> the function
a61af66fc99e Initial load
duke
parents:
diff changeset
556 <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
557 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
558 for statically linked agents will be invoked.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
559 Exactly one call to a start-up function is made per agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
560 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
561
a61af66fc99e Initial load
duke
parents:
diff changeset
562 <intro id="onload" label="Agent Start-Up (OnLoad phase)">
a61af66fc99e Initial load
duke
parents:
diff changeset
563 If an agent is started during the <code>OnLoad</code> phase then its
a61af66fc99e Initial load
duke
parents:
diff changeset
564 agent library must export a start-up function with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
565 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
566 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
567 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
568 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
569 <example>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
570 JNIEXPORT jint JNICALL
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
571 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
572
0
a61af66fc99e Initial load
duke
parents:
diff changeset
573 The VM will start the agent by calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
574 It will be called early enough in VM initialization that:
a61af66fc99e Initial load
duke
parents:
diff changeset
575 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
576 <li><functionlink id="SetSystemProperty">system properties</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
577 may be set before they have been used in the start-up of the VM</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
578 <li>the full set of
a61af66fc99e Initial load
duke
parents:
diff changeset
579 <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
580 is still available (note that capabilities that configure the VM
a61af66fc99e Initial load
duke
parents:
diff changeset
581 may only be available at this time--see the
a61af66fc99e Initial load
duke
parents:
diff changeset
582 <internallink id="capability">Capability function section</internallink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
583 <li>no bytecodes have executed</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
584 <li>no classes have been loaded</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
585 <li>no objects have been created</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
586 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
587 <p/>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
588 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
589 <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> function with
0
a61af66fc99e Initial load
duke
parents:
diff changeset
590 <i>&lt;options&gt;</i> as the second argument -
a61af66fc99e Initial load
duke
parents:
diff changeset
591 that is, using the command-line option examples,
a61af66fc99e Initial load
duke
parents:
diff changeset
592 <code>"opt1,opt2"</code> will be passed to the <code>char *options</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
593 argument of <code>Agent_OnLoad</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
594 The <code>options</code> argument is encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
595 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
596 If <i>=&lt;options&gt;</i> is not specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
597 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
598 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
599 <code>Agent_OnLoad</code> or <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
600 call. If needed beyond this time the string or parts of the string must
a61af66fc99e Initial load
duke
parents:
diff changeset
601 be copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
602 The period between when <code>Agent_OnLoad</code> is called and when it
a61af66fc99e Initial load
duke
parents:
diff changeset
603 returns is called the <i>OnLoad phase</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
604 Since the VM is not initialized during the OnLoad
a61af66fc99e Initial load
duke
parents:
diff changeset
605 <functionlink id="GetPhase">phase</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
606 the set of allowed operations
a61af66fc99e Initial load
duke
parents:
diff changeset
607 inside <code>Agent_OnLoad</code> is restricted (see the function descriptions for the
a61af66fc99e Initial load
duke
parents:
diff changeset
608 functionality available at this time).
a61af66fc99e Initial load
duke
parents:
diff changeset
609 The agent can safely process the options and set
a61af66fc99e Initial load
duke
parents:
diff changeset
610 event callbacks with <functionlink id="SetEventCallbacks"></functionlink>. Once
a61af66fc99e Initial load
duke
parents:
diff changeset
611 the VM initialization event is received
a61af66fc99e Initial load
duke
parents:
diff changeset
612 (that is, the <eventlink id="VMInit">VMInit</eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
613 callback is invoked), the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
614 can complete its initialization.
a61af66fc99e Initial load
duke
parents:
diff changeset
615 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
616 Early startup is required so that agents can set the desired capabilities,
a61af66fc99e Initial load
duke
parents:
diff changeset
617 many of which must be set before the VM is initialized.
a61af66fc99e Initial load
duke
parents:
diff changeset
618 In JVMDI, the -Xdebug command-line option provided
a61af66fc99e Initial load
duke
parents:
diff changeset
619 very coarse-grain control of capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
620 JVMPI implementations use various tricks to provide a single "JVMPI on" switch.
a61af66fc99e Initial load
duke
parents:
diff changeset
621 No reasonable command-line
a61af66fc99e Initial load
duke
parents:
diff changeset
622 option could provide the fine-grain of control required to balance needed capabilities vs
a61af66fc99e Initial load
duke
parents:
diff changeset
623 performance impact.
a61af66fc99e Initial load
duke
parents:
diff changeset
624 Early startup is also needed so that agents can control the execution
a61af66fc99e Initial load
duke
parents:
diff changeset
625 environment - modifying the file system and system properties to install
a61af66fc99e Initial load
duke
parents:
diff changeset
626 their functionality.
a61af66fc99e Initial load
duke
parents:
diff changeset
627 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
628 <p/>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
629 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
630 <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> is used to indicate an error.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
631 Any value other than zero indicates an error and causes termination of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
632 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
633
a61af66fc99e Initial load
duke
parents:
diff changeset
634 <intro id="onattach" label="Agent Start-Up (Live phase)">
a61af66fc99e Initial load
duke
parents:
diff changeset
635 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
636 <functionlink id="GetPhase">phase</functionlink>. The details of how this is supported,
a61af66fc99e Initial load
duke
parents:
diff changeset
637 are implementation specific. For example, a tool may use some platform specific mechanism,
a61af66fc99e Initial load
duke
parents:
diff changeset
638 or implementation specific API, to attach to the running VM, and request it start a given
a61af66fc99e Initial load
duke
parents:
diff changeset
639 agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
640 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
641 If an agent is started during the live phase then its agent library
a61af66fc99e Initial load
duke
parents:
diff changeset
642 must export a start-up function
a61af66fc99e Initial load
duke
parents:
diff changeset
643 with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
644 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
645 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
646 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
647 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
648 <example>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
649 JNIEXPORT jint JNICALL
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
650 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
651
0
a61af66fc99e Initial load
duke
parents:
diff changeset
652 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
653 The VM will start the agent by calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
654 It will be called in the context of a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
655 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
656 The <i>&lt;options&gt;</i> argument is the startup options provided to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
657 <i>&lt;options&gt;</i> is encoded as a <internallink id="mUTF">modified UTF-8
a61af66fc99e Initial load
duke
parents:
diff changeset
658 </internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
659 If startup options were not provided, a zero length string is passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
660 <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
661 <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
662 If needed beyond this time the string or parts of the string must be copied.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
663 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
664 Note that some <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
665 may not be available in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
666 <p/>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
667 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
668 &gt;</code> function initializes the agent and returns a value
0
a61af66fc99e Initial load
duke
parents:
diff changeset
669 to the VM to indicate if an error occurred. Any value other than zero indicates an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
670 An error does not cause the VM to terminate. Instead the VM ignores the error, or takes
a61af66fc99e Initial load
duke
parents:
diff changeset
671 some implementation specific action -- for example it might print an error to standard error,
a61af66fc99e Initial load
duke
parents:
diff changeset
672 or record the error in a system log.
a61af66fc99e Initial load
duke
parents:
diff changeset
673 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
674
a61af66fc99e Initial load
duke
parents:
diff changeset
675 <intro id="onunload" label="Agent Shutdown">
a61af66fc99e Initial load
duke
parents:
diff changeset
676 The library may optionally export a
a61af66fc99e Initial load
duke
parents:
diff changeset
677 shutdown function with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
678 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
679 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
680 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
681 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
682 <example>
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
683 JNIEXPORT void JNICALL
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
684 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
685
0
a61af66fc99e Initial load
duke
parents:
diff changeset
686 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
687 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
688 executable) and this function will be called if some platform specific
0
a61af66fc99e Initial load
duke
parents:
diff changeset
689 mechanism causes the unload (an unload mechanism is not specified in this document)
a61af66fc99e Initial load
duke
parents:
diff changeset
690 or the library is (in effect) unloaded by the termination of the VM whether through
a61af66fc99e Initial load
duke
parents:
diff changeset
691 normal termination or VM failure, including start-up failure.
a61af66fc99e Initial load
duke
parents:
diff changeset
692 Uncontrolled shutdown is, of couse, an exception to this rule.
a61af66fc99e Initial load
duke
parents:
diff changeset
693 Note the distinction between this function and the
a61af66fc99e Initial load
duke
parents:
diff changeset
694 <eventlink id="VMDeath">VM Death event</eventlink>: for the VM Death event
a61af66fc99e Initial load
duke
parents:
diff changeset
695 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
696 <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
697 and enabled the event.
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
698 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
699 <code>Agent_OnUnload_&lt;agent-lib-name&gt;</code> and this function
0
a61af66fc99e Initial load
duke
parents:
diff changeset
700 is also called if the library is unloaded for other reasons.
a61af66fc99e Initial load
duke
parents:
diff changeset
701 In the case that a VM Death event is sent, it will be sent before this
a61af66fc99e Initial load
duke
parents:
diff changeset
702 function is called (assuming this function is called due to VM termination).
a61af66fc99e Initial load
duke
parents:
diff changeset
703 This function can be used to clean-up resources allocated by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
704 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
705
a61af66fc99e Initial load
duke
parents:
diff changeset
706 <intro id="tooloptions" label="JAVA_TOOL_OPTIONS">
a61af66fc99e Initial load
duke
parents:
diff changeset
707 Since the command-line cannot always be accessed or modified, for example in embedded VMs
a61af66fc99e Initial load
duke
parents:
diff changeset
708 or simply VMs launched deep within scripts, a <code>JAVA_TOOL_OPTIONS</code> variable is
a61af66fc99e Initial load
duke
parents:
diff changeset
709 provided so that agents may be launched in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
710 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
711 Platforms which support environment variables or other named strings, may support the
a61af66fc99e Initial load
duke
parents:
diff changeset
712 <code>JAVA_TOOL_OPTIONS</code> variable. This variable will be broken into options at white-space
a61af66fc99e Initial load
duke
parents:
diff changeset
713 boundaries. White-space characters include space, tab, carriage-return, new-line,
a61af66fc99e Initial load
duke
parents:
diff changeset
714 vertical-tab, and form-feed. Sequences of white-space characters are considered
a61af66fc99e Initial load
duke
parents:
diff changeset
715 equivalent to a single white-space character. No white-space is included in the options
a61af66fc99e Initial load
duke
parents:
diff changeset
716 unless quoted. Quoting is as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
717 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
718 <li>All characters enclosed between a pair of single quote marks (''), except a single
a61af66fc99e Initial load
duke
parents:
diff changeset
719 quote, are quoted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
720 <li>Double quote characters have no special meaning inside a pair of single quote marks.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
721 <li>All characters enclosed between a pair of double quote marks (""), except a double
a61af66fc99e Initial load
duke
parents:
diff changeset
722 quote, are quoted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
723 <li>Single quote characters have no special meaning inside a pair of double quote marks.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
724 <li>A quoted part can start or end anywhere in the variable.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
725 <li>White-space characters have no special meaning when quoted -- they are included in
a61af66fc99e Initial load
duke
parents:
diff changeset
726 the option like any other character and do not mark white-space boundaries.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
727 <li>The pair of quote marks is not included in the option.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
728 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
729 <code>JNI_CreateJavaVM</code> (in the JNI Invocation API) will prepend these options to the options supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
730 in its <code>JavaVMInitArgs</code> argument. Platforms may disable this feature in cases where security is
a61af66fc99e Initial load
duke
parents:
diff changeset
731 a concern; for example, the Reference Implementation disables this feature on Unix systems when
a61af66fc99e Initial load
duke
parents:
diff changeset
732 the effective user or group ID differs from the real ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
733 This feature is intended to support the initialization of tools -- specifically including the
a61af66fc99e Initial load
duke
parents:
diff changeset
734 launching of native or Java programming language agents. Multiple tools may wish to use this
a61af66fc99e Initial load
duke
parents:
diff changeset
735 feature, so the variable should not be overwritten, instead, options should be appended to
a61af66fc99e Initial load
duke
parents:
diff changeset
736 the variable. Note that since the variable is processed at the time of the JNI Invocation
a61af66fc99e Initial load
duke
parents:
diff changeset
737 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
738 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
739
a61af66fc99e Initial load
duke
parents:
diff changeset
740 <intro id="environments" label="Environments">
a61af66fc99e Initial load
duke
parents:
diff changeset
741 The <jvmti/> specification supports the use of multiple simultaneous
a61af66fc99e Initial load
duke
parents:
diff changeset
742 <jvmti/> agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
743 Each agent has its own <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
744 That is, the <jvmti/> state is
a61af66fc99e Initial load
duke
parents:
diff changeset
745 separate for each agent - changes to one environment do not affect the
a61af66fc99e Initial load
duke
parents:
diff changeset
746 others. The state of a <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
747 environment includes:
a61af66fc99e Initial load
duke
parents:
diff changeset
748 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
749 <li><functionlink id="SetEventCallbacks">the event callbacks</functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
750 <li><functionlink id="SetEventNotificationMode">the set of events which are enabled</functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
751 <li><internallink id="capability">the capabilities</internallink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
752 <li><internallink id="memory">the memory allocation/deallocation hooks</internallink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
753 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
754 Although their <jvmti/> state
a61af66fc99e Initial load
duke
parents:
diff changeset
755 is separate, agents inspect and modify the shared state
a61af66fc99e Initial load
duke
parents:
diff changeset
756 of the VM, they also share the native environment in which they execute.
a61af66fc99e Initial load
duke
parents:
diff changeset
757 As such, an agent can perturb the results of other agents or cause them
a61af66fc99e Initial load
duke
parents:
diff changeset
758 to fail. It is the responsibility of the agent writer to specify the level
a61af66fc99e Initial load
duke
parents:
diff changeset
759 of compatibility with other agents. <jvmti/> implementations are not capable
a61af66fc99e Initial load
duke
parents:
diff changeset
760 of preventing destructive interactions between agents. Techniques to reduce
a61af66fc99e Initial load
duke
parents:
diff changeset
761 the likelihood of these occurrences are beyond the scope of this document.
a61af66fc99e Initial load
duke
parents:
diff changeset
762 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
763 An agent creates a <jvmti/> environment
a61af66fc99e Initial load
duke
parents:
diff changeset
764 by passing a <jvmti/> version
a61af66fc99e Initial load
duke
parents:
diff changeset
765 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
766 <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
767 See <internallink id="jvmtiEnvAccess">Accessing <jvmti/> Functions</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
768 for more details on the creation and use of
a61af66fc99e Initial load
duke
parents:
diff changeset
769 <jvmti/> environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
770 Typically, <jvmti/> environments are created by calling <code>GetEnv</code> from
a61af66fc99e Initial load
duke
parents:
diff changeset
771 <internallink id="onload"><code>Agent_OnLoad</code></internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
772 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
773
a61af66fc99e Initial load
duke
parents:
diff changeset
774 <intro id="bci" label="Bytecode Instrumentation">
a61af66fc99e Initial load
duke
parents:
diff changeset
775 This interface does not include some events that one might expect in an interface with
a61af66fc99e Initial load
duke
parents:
diff changeset
776 profiling support. Some examples include object allocation events and full speed
a61af66fc99e Initial load
duke
parents:
diff changeset
777 method enter and exit events. The interface instead provides support for
a61af66fc99e Initial load
duke
parents:
diff changeset
778 <i>bytecode instrumentation</i>, the ability to alter the Java virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
779 bytecode instructions which comprise the target program. Typically, these alterations
a61af66fc99e Initial load
duke
parents:
diff changeset
780 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
781 a call to <code>MyProfiler.methodEntered()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
782 Since the changes are purely additive, they do not modify application
a61af66fc99e Initial load
duke
parents:
diff changeset
783 state or behavior.
a61af66fc99e Initial load
duke
parents:
diff changeset
784 Because the inserted agent code is standard bytecodes, the VM can run at full speed,
a61af66fc99e Initial load
duke
parents:
diff changeset
785 optimizing not only the target program but also the instrumentation. If the
a61af66fc99e Initial load
duke
parents:
diff changeset
786 instrumentation does not involve switching from bytecode execution, no expensive
a61af66fc99e Initial load
duke
parents:
diff changeset
787 state transitions are needed. The result is high performance events.
a61af66fc99e Initial load
duke
parents:
diff changeset
788 This approach also provides complete control to the agent: instrumentation can be
a61af66fc99e Initial load
duke
parents:
diff changeset
789 restricted to "interesting" portions of the code (e.g., the end user's code) and
a61af66fc99e Initial load
duke
parents:
diff changeset
790 can be conditional. Instrumentation can run entirely in Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
791 code or can call into the native agent. Instrumentation can simply maintain
a61af66fc99e Initial load
duke
parents:
diff changeset
792 counters or can statistically sample events.
a61af66fc99e Initial load
duke
parents:
diff changeset
793 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
794 Instrumentation can be inserted in one of three ways:
a61af66fc99e Initial load
duke
parents:
diff changeset
795 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
796 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
797 Static Instrumentation: The class file is instrumented before it
a61af66fc99e Initial load
duke
parents:
diff changeset
798 is loaded into the VM - for example, by creating a duplicate directory of
a61af66fc99e Initial load
duke
parents:
diff changeset
799 <code>*.class</code> files which have been modified to add the instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
800 This method is extremely awkward and, in general, an agent cannot know
a61af66fc99e Initial load
duke
parents:
diff changeset
801 the origin of the class files which will be loaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
802 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
803 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
804 Load-Time Instrumentation: When a class file is loaded by the VM, the raw
a61af66fc99e Initial load
duke
parents:
diff changeset
805 bytes of the class file are sent for instrumentation to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
806 The <eventlink id="ClassFileLoadHook"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
807 event, triggered by the class load,
a61af66fc99e Initial load
duke
parents:
diff changeset
808 provides this functionality. This mechanism provides efficient
a61af66fc99e Initial load
duke
parents:
diff changeset
809 and complete access to one-time instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
810 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
811 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
812 Dynamic Instrumentation: A class which is already loaded (and possibly
a61af66fc99e Initial load
duke
parents:
diff changeset
813 even running) is modified. This optional feature is provided by the
a61af66fc99e Initial load
duke
parents:
diff changeset
814 <eventlink id="ClassFileLoadHook"/> event, triggered by calling the
a61af66fc99e Initial load
duke
parents:
diff changeset
815 <functionlink id="RetransformClasses"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
816 Classes can be modified multiple times and can be returned to their
a61af66fc99e Initial load
duke
parents:
diff changeset
817 original state.
a61af66fc99e Initial load
duke
parents:
diff changeset
818 The mechanism allows instrumentation which changes during the
a61af66fc99e Initial load
duke
parents:
diff changeset
819 course of execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
820 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
821 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
822 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
823 The class modification functionality provided in this interface
a61af66fc99e Initial load
duke
parents:
diff changeset
824 is intended to provide a mechanism for instrumentation
a61af66fc99e Initial load
duke
parents:
diff changeset
825 (the <eventlink id="ClassFileLoadHook"/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
826 and the <functionlink id="RetransformClasses"/> function)
a61af66fc99e Initial load
duke
parents:
diff changeset
827 and, during development, for fix-and-continue debugging
a61af66fc99e Initial load
duke
parents:
diff changeset
828 (the <functionlink id="RedefineClasses"/> function).
a61af66fc99e Initial load
duke
parents:
diff changeset
829 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
830 Care must be taken to avoid perturbing dependencies, especially when
a61af66fc99e Initial load
duke
parents:
diff changeset
831 instrumenting core classes. For example, an approach to getting notification
a61af66fc99e Initial load
duke
parents:
diff changeset
832 of every object allocation is to instrument the constructor on
a61af66fc99e Initial load
duke
parents:
diff changeset
833 <code>Object</code>. Assuming that the constructor is initially
a61af66fc99e Initial load
duke
parents:
diff changeset
834 empty, the constructor could be changed to:
a61af66fc99e Initial load
duke
parents:
diff changeset
835 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
836 public Object() {
a61af66fc99e Initial load
duke
parents:
diff changeset
837 MyProfiler.allocationTracker(this);
a61af66fc99e Initial load
duke
parents:
diff changeset
838 }
a61af66fc99e Initial load
duke
parents:
diff changeset
839 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
840 However, if this change was made using the
a61af66fc99e Initial load
duke
parents:
diff changeset
841 <eventlink id="ClassFileLoadHook"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
842 event then this might impact a typical VM as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
843 the first created object will call the constructor causing a class load of
a61af66fc99e Initial load
duke
parents:
diff changeset
844 <code>MyProfiler</code>; which will then cause
a61af66fc99e Initial load
duke
parents:
diff changeset
845 object creation, and since <code>MyProfiler</code> isn't loaded yet,
a61af66fc99e Initial load
duke
parents:
diff changeset
846 infinite recursion; resulting in a stack overflow. A refinement of this
a61af66fc99e Initial load
duke
parents:
diff changeset
847 would be to delay invoking the tracking method until a safe time. For
a61af66fc99e Initial load
duke
parents:
diff changeset
848 example, <code>trackAllocations</code> could be set in the
a61af66fc99e Initial load
duke
parents:
diff changeset
849 handler for the <code>VMInit</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
850 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
851 static boolean trackAllocations = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
852
a61af66fc99e Initial load
duke
parents:
diff changeset
853 public Object() {
a61af66fc99e Initial load
duke
parents:
diff changeset
854 if (trackAllocations) {
a61af66fc99e Initial load
duke
parents:
diff changeset
855 MyProfiler.allocationTracker(this);
a61af66fc99e Initial load
duke
parents:
diff changeset
856 }
a61af66fc99e Initial load
duke
parents:
diff changeset
857 }
a61af66fc99e Initial load
duke
parents:
diff changeset
858 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
859 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
860 The <functionlink id="SetNativeMethodPrefix"/> allows native methods
a61af66fc99e Initial load
duke
parents:
diff changeset
861 to be instrumented by the use of wrapper methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
862 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
863
a61af66fc99e Initial load
duke
parents:
diff changeset
864 <intro id="mUTF" label="Modified UTF-8 String Encoding">
a61af66fc99e Initial load
duke
parents:
diff changeset
865 <jvmti/> uses modified UTF-8 to encode character strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
866 This is the same encoding used by JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
867 Modified UTF-8 differs
a61af66fc99e Initial load
duke
parents:
diff changeset
868 from standard UTF-8 in the representation of supplementary characters
a61af66fc99e Initial load
duke
parents:
diff changeset
869 and of the null character. See the
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
870 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp16542">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
871 Modified UTF-8 Strings</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
872 section of the JNI specification for details.
a61af66fc99e Initial load
duke
parents:
diff changeset
873 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
874
a61af66fc99e Initial load
duke
parents:
diff changeset
875 <intro id="context" label="Specification Context">
a61af66fc99e Initial load
duke
parents:
diff changeset
876 Since this interface provides access to the state of applications running in the
a61af66fc99e Initial load
duke
parents:
diff changeset
877 Java virtual machine;
a61af66fc99e Initial load
duke
parents:
diff changeset
878 terminology refers to the Java platform and not the native
a61af66fc99e Initial load
duke
parents:
diff changeset
879 platform (unless stated otherwise). For example:
a61af66fc99e Initial load
duke
parents:
diff changeset
880 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
881 <li>"thread" means Java programming language thread.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
882 <li>"stack frame" means Java virtual machine stack frame.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
883 <li>"class" means Java programming language class.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
884 <li>"heap" means Java virtual machine heap.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
885 <li>"monitor" means Java programming language object monitor.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
886 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
887 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
888 Sun, Sun Microsystems, the Sun logo, Java, and JVM
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
889 are trademarks or registered trademarks of Oracle
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
890 and/or its affiliates, in the U.S. and other countries.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
891 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
892
a61af66fc99e Initial load
duke
parents:
diff changeset
893
a61af66fc99e Initial load
duke
parents:
diff changeset
894 <functionsection label="Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
895 <intro id="jvmtiEnvAccess" label="Accessing Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
896 Native code accesses <jvmti/> features
a61af66fc99e Initial load
duke
parents:
diff changeset
897 by calling <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
898 Access to <jvmti/> functions is by use of an interface pointer
a61af66fc99e Initial load
duke
parents:
diff changeset
899 in the same manner as
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
900 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html">Java
0
a61af66fc99e Initial load
duke
parents:
diff changeset
901 Native Interface (JNI) functions</externallink> are accessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
902 The <jvmti/> interface pointer is called the
a61af66fc99e Initial load
duke
parents:
diff changeset
903 <i>environment pointer</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
904 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
905 An environment pointer is a pointer to an environment and has
a61af66fc99e Initial load
duke
parents:
diff changeset
906 the type <code>jvmtiEnv*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
907 An environment has information about its <jvmti/> connection.
a61af66fc99e Initial load
duke
parents:
diff changeset
908 The first value in the environment is a pointer to the function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
909 The function table is an array of pointers to <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
910 Every function pointer is at a predefined offset inside the
a61af66fc99e Initial load
duke
parents:
diff changeset
911 array.
a61af66fc99e Initial load
duke
parents:
diff changeset
912 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
913 When used from the C language:
a61af66fc99e Initial load
duke
parents:
diff changeset
914 double indirection is used to access the functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
915 the environment pointer provides context and is the first
a61af66fc99e Initial load
duke
parents:
diff changeset
916 parameter of each function call; for example:
a61af66fc99e Initial load
duke
parents:
diff changeset
917 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
918 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
919 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
920 jvmtiError err = (*jvmti)->GetLoadedClasses(jvmti, &amp;class_count, &amp;classes);
a61af66fc99e Initial load
duke
parents:
diff changeset
921 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
922 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
923 When used from the C++ language:
a61af66fc99e Initial load
duke
parents:
diff changeset
924 functions are accessed as member functions of <code>jvmtiEnv</code>;
a61af66fc99e Initial load
duke
parents:
diff changeset
925 the environment pointer is not passed to the function call; for example:
a61af66fc99e Initial load
duke
parents:
diff changeset
926 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
927 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
928 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
929 jvmtiError err = jvmti->GetLoadedClasses(&amp;class_count, &amp;classes);
a61af66fc99e Initial load
duke
parents:
diff changeset
930 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
931 Unless otherwise stated, all examples and declarations in this
a61af66fc99e Initial load
duke
parents:
diff changeset
932 specification use the C language.
a61af66fc99e Initial load
duke
parents:
diff changeset
933 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
934 A <jvmti/> environment can be obtained through the JNI Invocation API
a61af66fc99e Initial load
duke
parents:
diff changeset
935 <code>GetEnv</code> function:
a61af66fc99e Initial load
duke
parents:
diff changeset
936 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
937 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
938 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
939 (*jvm)->GetEnv(jvm, &amp;jvmti, JVMTI_VERSION_1_0);
a61af66fc99e Initial load
duke
parents:
diff changeset
940 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
941 Each call to <code>GetEnv</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
942 creates a new <jvmti/> connection and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
943 a new <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
944 The <code>version</code> argument of <code>GetEnv</code> must be
a61af66fc99e Initial load
duke
parents:
diff changeset
945 a <jvmti/> version.
a61af66fc99e Initial load
duke
parents:
diff changeset
946 The returned environment may have a different version than the
a61af66fc99e Initial load
duke
parents:
diff changeset
947 requested version but the returned environment must be compatible.
a61af66fc99e Initial load
duke
parents:
diff changeset
948 <code>GetEnv</code> will return <code>JNI_EVERSION</code> if a
a61af66fc99e Initial load
duke
parents:
diff changeset
949 compatible version is not available, if <jvmti/> is not supported or
a61af66fc99e Initial load
duke
parents:
diff changeset
950 <jvmti/> is not supported in the current VM configuration.
a61af66fc99e Initial load
duke
parents:
diff changeset
951 Other interfaces may be added for creating <jvmti/> environments
a61af66fc99e Initial load
duke
parents:
diff changeset
952 in specific contexts.
a61af66fc99e Initial load
duke
parents:
diff changeset
953 Each environment has its own state (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
954 <functionlink id="SetEventNotificationMode">desired events</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
955 <functionlink id="SetEventCallbacks">event handling functions</functionlink>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
956 <functionlink id="AddCapabilities">capabilities</functionlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
957 An environment is released with
a61af66fc99e Initial load
duke
parents:
diff changeset
958 <functionlink id="DisposeEnvironment"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
959 Thus, unlike JNI which has one environment per thread, <jvmti/> environments work
a61af66fc99e Initial load
duke
parents:
diff changeset
960 across threads and are created dynamically.
a61af66fc99e Initial load
duke
parents:
diff changeset
961 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
962
a61af66fc99e Initial load
duke
parents:
diff changeset
963 <intro id="functionReturn" label="Function Return Values">
a61af66fc99e Initial load
duke
parents:
diff changeset
964 <jvmti/> functions always return an
a61af66fc99e Initial load
duke
parents:
diff changeset
965 <internallink id="ErrorSection">error code</internallink> via the
a61af66fc99e Initial load
duke
parents:
diff changeset
966 <datalink id="jvmtiError"/> function return value.
a61af66fc99e Initial load
duke
parents:
diff changeset
967 Some functions can return additional
a61af66fc99e Initial load
duke
parents:
diff changeset
968 values through pointers provided by the calling function.
a61af66fc99e Initial load
duke
parents:
diff changeset
969 In some cases, <jvmti/> functions allocate memory that your program must
a61af66fc99e Initial load
duke
parents:
diff changeset
970 explicitly deallocate. This is indicated in the individual <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
971 function descriptions. Empty lists, arrays, sequences, etc are
a61af66fc99e Initial load
duke
parents:
diff changeset
972 returned as <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
973 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
974 In the event that the <jvmti/> function encounters
a61af66fc99e Initial load
duke
parents:
diff changeset
975 an error (any return value other than <code>JVMTI_ERROR_NONE</code>) the values
a61af66fc99e Initial load
duke
parents:
diff changeset
976 of memory referenced by argument pointers is undefined, but no memory
a61af66fc99e Initial load
duke
parents:
diff changeset
977 will have been allocated and no global references will have been allocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
978 If the error occurs because of invalid input, no action will have occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
979 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
980
a61af66fc99e Initial load
duke
parents:
diff changeset
981 <intro id="refs" label="Managing JNI Object References">
a61af66fc99e Initial load
duke
parents:
diff changeset
982 <jvmti/> functions identify objects with JNI references
a61af66fc99e Initial load
duke
parents:
diff changeset
983 (<datalink id="jobject"/> and <datalink id="jclass"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
984 and their derivatives
a61af66fc99e Initial load
duke
parents:
diff changeset
985 (<datalink id="jthread"/> and <datalink id="jthreadGroup"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
986 References passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
987 <jvmti/> functions can be either global or local, but they must be
a61af66fc99e Initial load
duke
parents:
diff changeset
988 strong references. All references returned by <jvmti/> functions are
a61af66fc99e Initial load
duke
parents:
diff changeset
989 local references--these local references are created
a61af66fc99e Initial load
duke
parents:
diff changeset
990 during the <jvmti/> call.
a61af66fc99e Initial load
duke
parents:
diff changeset
991 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
992 <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
993 When threads return from native code all local references
a61af66fc99e Initial load
duke
parents:
diff changeset
994 are freed. Note that some threads, including typical
a61af66fc99e Initial load
duke
parents:
diff changeset
995 agent threads, will never return from native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
996 A thread is ensured the ability to create sixteen local
a61af66fc99e Initial load
duke
parents:
diff changeset
997 references without the need for any explicit management.
a61af66fc99e Initial load
duke
parents:
diff changeset
998 For threads executing a limited number of <jvmti/> calls before
a61af66fc99e Initial load
duke
parents:
diff changeset
999 returning from native code
a61af66fc99e Initial load
duke
parents:
diff changeset
1000 (for example, threads processing events),
a61af66fc99e Initial load
duke
parents:
diff changeset
1001 it may be determined that no explicit management
a61af66fc99e Initial load
duke
parents:
diff changeset
1002 is needed.
a61af66fc99e Initial load
duke
parents:
diff changeset
1003 However, long running agent threads will need explicit
a61af66fc99e Initial load
duke
parents:
diff changeset
1004 local reference management--usually with the JNI functions
a61af66fc99e Initial load
duke
parents:
diff changeset
1005 <code>PushLocalFrame</code> and <code>PopLocalFrame</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1006 Conversely, to preserve references beyond the
a61af66fc99e Initial load
duke
parents:
diff changeset
1007 return from native code, they must be converted to global references.
a61af66fc99e Initial load
duke
parents:
diff changeset
1008 These rules do not apply to <datalink id="jmethodID"/> and <datalink id="jfieldID"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1009 as they are not <datalink id="jobject"/>s.
a61af66fc99e Initial load
duke
parents:
diff changeset
1010 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1011
a61af66fc99e Initial load
duke
parents:
diff changeset
1012 <intro id="prereqState" label="Prerequisite State for Calling Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
1013 Unless the function explicitly states that the agent must bring
a61af66fc99e Initial load
duke
parents:
diff changeset
1014 a thread or the VM to a particular state (for example, suspended),
a61af66fc99e Initial load
duke
parents:
diff changeset
1015 the <jvmti/> implementation is responsible for bringing the VM to a
a61af66fc99e Initial load
duke
parents:
diff changeset
1016 safe and consistent state for performing the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1017 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1018
a61af66fc99e Initial load
duke
parents:
diff changeset
1019 <intro id="functionsExceptions" label="Exceptions and Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
1020 <jvmti/> functions never throw exceptions; error conditions are
a61af66fc99e Initial load
duke
parents:
diff changeset
1021 communicated via the
a61af66fc99e Initial load
duke
parents:
diff changeset
1022 <internallink id="functionReturn">function return value</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1023 Any existing exception state is preserved across a call to a
a61af66fc99e Initial load
duke
parents:
diff changeset
1024 <jvmti/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1025 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
1026 <externallink
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
1027 id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html#wp770"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1028 >Java Exceptions</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1029 section of the JNI specification for information on handling exceptions.
a61af66fc99e Initial load
duke
parents:
diff changeset
1030 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1031
a61af66fc99e Initial load
duke
parents:
diff changeset
1032 <category id="memory" label="Memory Management">
a61af66fc99e Initial load
duke
parents:
diff changeset
1033 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1034 These functions provide for the allocation and deallocation of
a61af66fc99e Initial load
duke
parents:
diff changeset
1035 memory used by <jvmti/> functionality and can be used to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
1036 working memory for agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
1037 Memory managed by <jvmti/> is not compatible with other memory
a61af66fc99e Initial load
duke
parents:
diff changeset
1038 allocation libraries and mechanisms.
a61af66fc99e Initial load
duke
parents:
diff changeset
1039 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1040
a61af66fc99e Initial load
duke
parents:
diff changeset
1041 <function id="Allocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="46">
a61af66fc99e Initial load
duke
parents:
diff changeset
1042 <synopsis>Allocate</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1043 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1044 Allocate an area of memory through the <jvmti/> allocator.
a61af66fc99e Initial load
duke
parents:
diff changeset
1045 The allocated
a61af66fc99e Initial load
duke
parents:
diff changeset
1046 memory should be freed with <functionlink id="Deallocate"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1047 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1048 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1049 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1050 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1051 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1052 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
1053 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1054 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1055 The number of bytes to allocate.
a61af66fc99e Initial load
duke
parents:
diff changeset
1056 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
1057 <code>jlong</code> is used for compatibility with JVMDI.
a61af66fc99e Initial load
duke
parents:
diff changeset
1058 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
1059 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1060 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1061 <param id="mem_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1062 <allocbuf incount="size"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1063 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1064 On return, a pointer to the beginning of the allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
1065 If <code>size</code> is zero, <code>NULL</code> is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1066 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1067 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1068 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1069 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1070 <error id="JVMTI_ERROR_OUT_OF_MEMORY">
a61af66fc99e Initial load
duke
parents:
diff changeset
1071 Memory request cannot be honored.
a61af66fc99e Initial load
duke
parents:
diff changeset
1072 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1073 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
1074 <paramlink id="size"></paramlink> is less than zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1075 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1076 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1077 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1078
a61af66fc99e Initial load
duke
parents:
diff changeset
1079 <function id="Deallocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="47">
a61af66fc99e Initial load
duke
parents:
diff changeset
1080 <synopsis>Deallocate</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1081 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1082 Deallocate <code>mem</code> using the <jvmti/> allocator.
a61af66fc99e Initial load
duke
parents:
diff changeset
1083 This function should
a61af66fc99e Initial load
duke
parents:
diff changeset
1084 be used to deallocate any memory allocated and returned
a61af66fc99e Initial load
duke
parents:
diff changeset
1085 by a <jvmti/> function
a61af66fc99e Initial load
duke
parents:
diff changeset
1086 (including memory allocated with <functionlink id="Allocate"></functionlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1087 All allocated memory must be deallocated
a61af66fc99e Initial load
duke
parents:
diff changeset
1088 or the memory cannot be reclaimed.
a61af66fc99e Initial load
duke
parents:
diff changeset
1089 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1090 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1091 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1092 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1093 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1094 <param id="mem">
a61af66fc99e Initial load
duke
parents:
diff changeset
1095 <outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1096 <uchar/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1097 <nullok>the call is ignored</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
1098 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1099 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1100 A pointer to the beginning of the allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
1101 Please ignore "On return, the elements are set."
a61af66fc99e Initial load
duke
parents:
diff changeset
1102 <todo>keep it from generating "On return, the elements are set"</todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
1103 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1104 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1105 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1106 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1107 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1108 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1109 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
1110
a61af66fc99e Initial load
duke
parents:
diff changeset
1111 <category id="threadCategory" label="Thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1112 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1113 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1114
a61af66fc99e Initial load
duke
parents:
diff changeset
1115 <function id="GetThreadState" num="17">
a61af66fc99e Initial load
duke
parents:
diff changeset
1116 <synopsis>Get Thread State</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1117 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1118 Get the state of a thread. The state of the thread is represented by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1119 answers to the hierarchical set of questions below:
a61af66fc99e Initial load
duke
parents:
diff changeset
1120 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1121 <li><i>Alive?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1122 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1123 <li>Not alive.
a61af66fc99e Initial load
duke
parents:
diff changeset
1124 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1125 <li><i>Why not alive?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1126 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1127 <li>New.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1128 <li>Terminated (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1129 id="JVMTI_THREAD_STATE_TERMINATED"><code>JVMTI_THREAD_STATE_TERMINATED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1130 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1131 </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 <li>Alive (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1135 id="JVMTI_THREAD_STATE_ALIVE"><code>JVMTI_THREAD_STATE_ALIVE</code></datalink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1136 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1137 <li><i>Suspended?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1138 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1139 <li>Suspended (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1140 id="JVMTI_THREAD_STATE_SUSPENDED"><code>JVMTI_THREAD_STATE_SUSPENDED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1141 <li>Not suspended</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1142 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1143 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1144 <li><i>Interrupted?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1145 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1146 <li>Interrupted (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1147 id="JVMTI_THREAD_STATE_INTERRUPTED"><code>JVMTI_THREAD_STATE_INTERRUPTED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1148 <li>Not interrupted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1149 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1150 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1151 <li><i>In native?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1152 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1153 <li>In native code (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1154 id="JVMTI_THREAD_STATE_IN_NATIVE"><code>JVMTI_THREAD_STATE_IN_NATIVE</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1155 <li>In Java programming language code</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1156 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1157 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1158 <li><i>What alive state?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1159 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1160 <li>Runnable (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1161 id="JVMTI_THREAD_STATE_RUNNABLE"><code>JVMTI_THREAD_STATE_RUNNABLE</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1162 <li>Blocked (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1163 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
1164 <li>Waiting (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1165 id="JVMTI_THREAD_STATE_WAITING"><code>JVMTI_THREAD_STATE_WAITING</code></datalink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1166 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1167 <li><i>Timed wait?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1168 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1169 <li>Indefinite (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1170 id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY"><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></datalink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1171 <li>Timed (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1172 id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT"><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1173 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1174 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1175 <li><i>Why waiting?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1176 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1177 <li>Object.wait (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1178 id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT"><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1179 <li>LockSupport.park (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1180 id="JVMTI_THREAD_STATE_PARKED"><code>JVMTI_THREAD_STATE_PARKED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1181 <li>Sleeping (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1182 id="JVMTI_THREAD_STATE_SLEEPING"><code>JVMTI_THREAD_STATE_SLEEPING</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1183 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1184 </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 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1195 The answers are represented by the following bit vector.
a61af66fc99e Initial load
duke
parents:
diff changeset
1196 <constants id="jvmtiThreadState" label="Thread State Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
1197 <constant id="JVMTI_THREAD_STATE_ALIVE" num="0x0001">
a61af66fc99e Initial load
duke
parents:
diff changeset
1198 Thread is alive. Zero if thread is new (not started) or terminated.
a61af66fc99e Initial load
duke
parents:
diff changeset
1199 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1200 <constant id="JVMTI_THREAD_STATE_TERMINATED" num="0x0002">
a61af66fc99e Initial load
duke
parents:
diff changeset
1201 Thread has completed execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
1202 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1203 <constant id="JVMTI_THREAD_STATE_RUNNABLE" num="0x0004">
a61af66fc99e Initial load
duke
parents:
diff changeset
1204 Thread is runnable.
a61af66fc99e Initial load
duke
parents:
diff changeset
1205 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1206 <constant id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER" num="0x0400">
a61af66fc99e Initial load
duke
parents:
diff changeset
1207 Thread is waiting to enter a synchronization block/method or,
a61af66fc99e Initial load
duke
parents:
diff changeset
1208 after an <code>Object.wait()</code>, waiting to re-enter a
a61af66fc99e Initial load
duke
parents:
diff changeset
1209 synchronization block/method.
a61af66fc99e Initial load
duke
parents:
diff changeset
1210 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1211 <constant id="JVMTI_THREAD_STATE_WAITING" num="0x0080">
a61af66fc99e Initial load
duke
parents:
diff changeset
1212 Thread is waiting.
a61af66fc99e Initial load
duke
parents:
diff changeset
1213 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1214 <constant id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY" num="0x0010">
a61af66fc99e Initial load
duke
parents:
diff changeset
1215 Thread is waiting without a timeout.
a61af66fc99e Initial load
duke
parents:
diff changeset
1216 For example, <code>Object.wait()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1217 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1218 <constant id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT" num="0x0020">
a61af66fc99e Initial load
duke
parents:
diff changeset
1219 Thread is waiting with a maximum time to wait specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
1220 For example, <code>Object.wait(long)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1221 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1222 <constant id="JVMTI_THREAD_STATE_SLEEPING" num="0x0040">
a61af66fc99e Initial load
duke
parents:
diff changeset
1223 Thread is sleeping -- <code>Thread.sleep(long)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1224 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1225 <constant id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT" num="0x0100">
a61af66fc99e Initial load
duke
parents:
diff changeset
1226 Thread is waiting on an object monitor -- <code>Object.wait</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1227 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1228 <constant id="JVMTI_THREAD_STATE_PARKED" num="0x0200">
a61af66fc99e Initial load
duke
parents:
diff changeset
1229 Thread is parked, for example: <code>LockSupport.park</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
1230 <code>LockSupport.parkUtil</code> and <code>LockSupport.parkNanos</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1231 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1232 <constant id="JVMTI_THREAD_STATE_SUSPENDED" num="0x100000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1233 Thread suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1234 <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1235 or a <jvmti/> suspend function
a61af66fc99e Initial load
duke
parents:
diff changeset
1236 (such as <functionlink id="SuspendThread"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1237 has been called on the thread. If this bit
a61af66fc99e Initial load
duke
parents:
diff changeset
1238 is set, the other bits refer to the thread state before suspension.
a61af66fc99e Initial load
duke
parents:
diff changeset
1239 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1240 <constant id="JVMTI_THREAD_STATE_INTERRUPTED" num="0x200000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1241 Thread has been interrupted.
a61af66fc99e Initial load
duke
parents:
diff changeset
1242 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1243 <constant id="JVMTI_THREAD_STATE_IN_NATIVE" num="0x400000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1244 Thread is in native code--that is, a native method is running
a61af66fc99e Initial load
duke
parents:
diff changeset
1245 which has not called back into the VM or Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
1246 language code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1247 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1248 This flag is not set when running VM compiled Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
1249 language code nor is it set when running VM code or
a61af66fc99e Initial load
duke
parents:
diff changeset
1250 VM support code. Native VM interface functions, such as JNI and
a61af66fc99e Initial load
duke
parents:
diff changeset
1251 <jvmti/> functions, may be implemented as VM code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1252 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1253 <constant id="JVMTI_THREAD_STATE_VENDOR_1" num="0x10000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1254 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1255 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1256 <constant id="JVMTI_THREAD_STATE_VENDOR_2" num="0x20000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1257 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1258 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1259 <constant id="JVMTI_THREAD_STATE_VENDOR_3" num="0x40000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1260 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1261 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1262 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
1263 The following definitions are used to convert <jvmti/> thread state
a61af66fc99e Initial load
duke
parents:
diff changeset
1264 to <code>java.lang.Thread.State</code> style states.
a61af66fc99e Initial load
duke
parents:
diff changeset
1265 <constants id="jvmtiJavaLangThreadState" label="java.lang.Thread.State Conversion Masks" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
1266 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_MASK"
a61af66fc99e Initial load
duke
parents:
diff changeset
1267 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
1268 Mask the state with this before comparison
a61af66fc99e Initial load
duke
parents:
diff changeset
1269 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1270 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_NEW"
a61af66fc99e Initial load
duke
parents:
diff changeset
1271 num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
1272 <code>java.lang.Thread.State.NEW</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1273 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1274 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED"
a61af66fc99e Initial load
duke
parents:
diff changeset
1275 num="JVMTI_THREAD_STATE_TERMINATED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1276 <code>java.lang.Thread.State.TERMINATED</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1277 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1278 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE"
a61af66fc99e Initial load
duke
parents:
diff changeset
1279 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
1280 <code>java.lang.Thread.State.RUNNABLE</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1281 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1282 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED"
a61af66fc99e Initial load
duke
parents:
diff changeset
1283 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
1284 <code>java.lang.Thread.State.BLOCKED</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1285 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1286 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_WAITING"
a61af66fc99e Initial load
duke
parents:
diff changeset
1287 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY">
a61af66fc99e Initial load
duke
parents:
diff changeset
1288 <code>java.lang.Thread.State.WAITING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1289 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1290 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING"
a61af66fc99e Initial load
duke
parents:
diff changeset
1291 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT">
a61af66fc99e Initial load
duke
parents:
diff changeset
1292 <code>java.lang.Thread.State.TIMED_WAITING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1293 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1294 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
1295 <b>Rules</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1296 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1297 There can be no more than one answer to a question, although there can be no
a61af66fc99e Initial load
duke
parents:
diff changeset
1298 answer (because the answer is unknown, does not apply, or none of the answers is
a61af66fc99e Initial load
duke
parents:
diff changeset
1299 correct). An answer is set only when the enclosing answers match.
a61af66fc99e Initial load
duke
parents:
diff changeset
1300 That is, no more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1301 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1302 <li><code>JVMTI_THREAD_STATE_RUNNABLE</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1303 <li><code>JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1304 <li><code>JVMTI_THREAD_STATE_WAITING</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1305 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1306 can be set (a <tm>J2SE</tm> compliant implementation will always set
a61af66fc99e Initial load
duke
parents:
diff changeset
1307 one of these if <code>JVMTI_THREAD_STATE_ALIVE</code> is set).
a61af66fc99e Initial load
duke
parents:
diff changeset
1308 And if any of these are set, the enclosing answer
a61af66fc99e Initial load
duke
parents:
diff changeset
1309 <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1310 No more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1311 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1312 <li><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1313 <li><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1314 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1315 can be set (a <tm>J2SE</tm> compliant implementation will always set
a61af66fc99e Initial load
duke
parents:
diff changeset
1316 one of these if <code>JVMTI_THREAD_STATE_WAITING</code> is set).
a61af66fc99e Initial load
duke
parents:
diff changeset
1317 And if either is set, the enclosing answers
a61af66fc99e Initial load
duke
parents:
diff changeset
1318 <code>JVMTI_THREAD_STATE_ALIVE</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
1319 <code>JVMTI_THREAD_STATE_WAITING</code> are set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1320 No more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1321 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1322 <li><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1323 <li><code>JVMTI_THREAD_STATE_PARKED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1324 <li><code>JVMTI_THREAD_STATE_SLEEPING</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1325 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1326 can be set. And if any of these is set, the enclosing answers
a61af66fc99e Initial load
duke
parents:
diff changeset
1327 <code>JVMTI_THREAD_STATE_ALIVE</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
1328 <code>JVMTI_THREAD_STATE_WAITING</code> are set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1329 Also, if <code>JVMTI_THREAD_STATE_SLEEPING</code> is set,
a61af66fc99e Initial load
duke
parents:
diff changeset
1330 then <code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1331 If a state <i>A</i> is implemented using the mechanism of
a61af66fc99e Initial load
duke
parents:
diff changeset
1332 state <i>B</i> then it is state <i>A</i> which
a61af66fc99e Initial load
duke
parents:
diff changeset
1333 is returned by this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1334 For example, if <code>Thread.sleep(long)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1335 is implemented using <code>Object.wait(long)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1336 then it is still <code>JVMTI_THREAD_STATE_SLEEPING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1337 which is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1338 More than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1339 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1340 <li><code>JVMTI_THREAD_STATE_SUSPENDED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1341 <li><code>JVMTI_THREAD_STATE_INTERRUPTED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1342 <li><code>JVMTI_THREAD_STATE_IN_NATIVE</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1343 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1344 can be set, but if any is set,
a61af66fc99e Initial load
duke
parents:
diff changeset
1345 <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1346 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1347 And finally,
a61af66fc99e Initial load
duke
parents:
diff changeset
1348 <code>JVMTI_THREAD_STATE_TERMINATED</code> cannot be set unless
a61af66fc99e Initial load
duke
parents:
diff changeset
1349 <code>JVMTI_THREAD_STATE_ALIVE</code> is not set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1350 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1351 The thread state representation is designed for extension in future versions
a61af66fc99e Initial load
duke
parents:
diff changeset
1352 of the specification; thread state values should be used accordingly, that is
a61af66fc99e Initial load
duke
parents:
diff changeset
1353 they should not be used as ordinals.
a61af66fc99e Initial load
duke
parents:
diff changeset
1354 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
1355 the state bits should be masked with the interesting bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
1356 All bits not defined above are reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
1357 A VM, compliant to the current specification, must set reserved bits to zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1358 An agent should ignore reserved bits --
a61af66fc99e Initial load
duke
parents:
diff changeset
1359 they should not be assumed to be zero and thus should not be included in comparisons.
a61af66fc99e Initial load
duke
parents:
diff changeset
1360 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1361 <b>Examples</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1362 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1363 Note that the values below exclude reserved and vendor bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
1364 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1365 The state of a thread blocked at a <code>synchronized</code>-statement would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1366 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1367 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER
a61af66fc99e Initial load
duke
parents:
diff changeset
1368 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1369 The state of a thread which hasn't started yet would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1370 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1371 0
a61af66fc99e Initial load
duke
parents:
diff changeset
1372 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1373 The state of a thread at a <code>Object.wait(3000)</code> would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1374 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1375 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_WAITING +
a61af66fc99e Initial load
duke
parents:
diff changeset
1376 JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT +
a61af66fc99e Initial load
duke
parents:
diff changeset
1377 JVMTI_THREAD_STATE_MONITOR_WAITING
a61af66fc99e Initial load
duke
parents:
diff changeset
1378 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1379 The state of a thread suspended while runnable would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1380 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1381 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_RUNNABLE + JVMTI_THREAD_STATE_SUSPENDED
a61af66fc99e Initial load
duke
parents:
diff changeset
1382 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1383 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1384 <b>Testing the State</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1385 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1386 In most cases, the thread state can be determined by testing the one bit corresponding
a61af66fc99e Initial load
duke
parents:
diff changeset
1387 to that question. For example, the code to test if a thread is sleeping:
a61af66fc99e Initial load
duke
parents:
diff changeset
1388 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1389 jint state;
a61af66fc99e Initial load
duke
parents:
diff changeset
1390 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
1391
a61af66fc99e Initial load
duke
parents:
diff changeset
1392 err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
a61af66fc99e Initial load
duke
parents:
diff changeset
1393 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1394 if (state &amp; JVMTI_THREAD_STATE_SLEEPING) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1395 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1396 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1397 For waiting (that is, in <code>Object.wait</code>, parked, or sleeping) it would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1398 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1399 if (state &amp; JVMTI_THREAD_STATE_WAITING) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1400 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1401 For some states, more than one bit will need to be tested as is the case
a61af66fc99e Initial load
duke
parents:
diff changeset
1402 when testing if a thread has not yet been started:
a61af66fc99e Initial load
duke
parents:
diff changeset
1403 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1404 if ((state &amp; (JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_TERMINATED)) == 0) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1405 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1406 To distinguish timed from untimed <code>Object.wait</code>:
a61af66fc99e Initial load
duke
parents:
diff changeset
1407 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1408 if (state &amp; JVMTI_THREAD_STATE_IN_OBJECT_WAIT) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1409 if (state &amp; JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1410 printf("in Object.wait(long timeout)\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
1411 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
1412 printf("in Object.wait()\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
1413 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1414 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1415 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1416 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1417 <b>Relationship to <code>java.lang.Thread.State</code></b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1418 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1419 The thread state represented by <code>java.lang.Thread.State</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1420 returned from <code>java.lang.Thread.getState()</code> is a subset of the
a61af66fc99e Initial load
duke
parents:
diff changeset
1421 information returned from this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1422 The corresponding <code>java.lang.Thread.State</code> can be determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1423 by using the provided conversion masks.
a61af66fc99e Initial load
duke
parents:
diff changeset
1424 For example, this returns the name of the <code>java.lang.Thread.State</code> thread state:
a61af66fc99e Initial load
duke
parents:
diff changeset
1425 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1426 err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
a61af66fc99e Initial load
duke
parents:
diff changeset
1427 abortOnError(err);
a61af66fc99e Initial load
duke
parents:
diff changeset
1428 switch (state &amp; JVMTI_JAVA_LANG_THREAD_STATE_MASK) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1429 case JVMTI_JAVA_LANG_THREAD_STATE_NEW:
a61af66fc99e Initial load
duke
parents:
diff changeset
1430 return "NEW";
a61af66fc99e Initial load
duke
parents:
diff changeset
1431 case JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED:
a61af66fc99e Initial load
duke
parents:
diff changeset
1432 return "TERMINATED";
a61af66fc99e Initial load
duke
parents:
diff changeset
1433 case JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE:
a61af66fc99e Initial load
duke
parents:
diff changeset
1434 return "RUNNABLE";
a61af66fc99e Initial load
duke
parents:
diff changeset
1435 case JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED:
a61af66fc99e Initial load
duke
parents:
diff changeset
1436 return "BLOCKED";
a61af66fc99e Initial load
duke
parents:
diff changeset
1437 case JVMTI_JAVA_LANG_THREAD_STATE_WAITING:
a61af66fc99e Initial load
duke
parents:
diff changeset
1438 return "WAITING";
a61af66fc99e Initial load
duke
parents:
diff changeset
1439 case JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING:
a61af66fc99e Initial load
duke
parents:
diff changeset
1440 return "TIMED_WAITING";
a61af66fc99e Initial load
duke
parents:
diff changeset
1441 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1442 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1443 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1444 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1445 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1446 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1447 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1448 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1449 <jthread null="current" started="maybe" impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1450 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1451 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1452 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1453 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1454 <param id="thread_state_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1455 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1456 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1457 On return, points to state flags,
a61af66fc99e Initial load
duke
parents:
diff changeset
1458 as defined by the <internallink id="jvmtiThreadState">Thread State Flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1459 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1460 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1461 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1462 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1463 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1464 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1465
a61af66fc99e Initial load
duke
parents:
diff changeset
1466 <function id="GetCurrentThread" phase="start" num="18" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
1467 <synopsis>Get Current Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1468 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1469 Get the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1470 The current thread is the Java programming language thread which has called the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1471 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1472 Note that most <jvmti/> functions that take a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1473 as an argument will accept <code>NULL</code> to mean
a61af66fc99e Initial load
duke
parents:
diff changeset
1474 the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1475 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1476 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1477 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1478 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1479 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1480 <param id="thread_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1481 <outptr><jthread/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1482 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1483 On return, points to the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1484 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1485 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1486 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1487 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1488 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1489 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1490
a61af66fc99e Initial load
duke
parents:
diff changeset
1491 <function id="GetAllThreads" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
1492 <synopsis>Get All Threads</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1493 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1494 Get all live threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1495 The threads are Java programming language threads;
a61af66fc99e Initial load
duke
parents:
diff changeset
1496 that is, threads that are attached to the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1497 A thread is live if <code>java.lang.Thread.isAlive()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1498 would return <code>true</code>, that is, the thread has
a61af66fc99e Initial load
duke
parents:
diff changeset
1499 been started and has not yet died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1500 The universe of threads is determined by the context of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1501 environment, which typically is all threads attached to the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1502 Note that this includes <jvmti/> agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1503 (see <functionlink id="RunAgentThread"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1504 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1505 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1506 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1507 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1508 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1509 <param id="threads_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1510 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1511 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1512 On return, points to the number of running threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1513 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1514 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1515 <param id="threads_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1516 <allocbuf outcount="threads_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1517 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1518 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
1519 for each running thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1520 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1521 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1522 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1523 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1524 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1525 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1526
a61af66fc99e Initial load
duke
parents:
diff changeset
1527 <function id="SuspendThread" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
1528 <synopsis>Suspend Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1529 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1530 Suspend the specified thread. If the calling thread is specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
1531 this function will not return until some other thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
1532 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1533 If the thread is currently suspended, this function
a61af66fc99e Initial load
duke
parents:
diff changeset
1534 does nothing and returns an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
1535 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1536 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1537 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1538 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1539 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1540 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1541 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1542 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1543 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1544 The thread to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1545 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1546 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1547 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1548 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1549 <error id="JVMTI_ERROR_THREAD_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1550 Thread already suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1551 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1552 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1553 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1554
a61af66fc99e Initial load
duke
parents:
diff changeset
1555 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
1556 <function id="SuspendAllThreads" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
1557 <synopsis>Suspend All Threads</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1558 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1559 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
1560 There has been no explicit call for this function, and it will
a61af66fc99e Initial load
duke
parents:
diff changeset
1561 thus be removed if there is no interest.
a61af66fc99e Initial load
duke
parents:
diff changeset
1562 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
1563 Suspend all live threads except:
a61af66fc99e Initial load
duke
parents:
diff changeset
1564 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1565 <li>already suspended threads</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1566 <li>those listed in <paramlink id="except_list"></paramlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1567 <li>certain system (non application) threads, as determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1568 by the VM implementation</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1569 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1570 The threads are Java programming language threads;
a61af66fc99e Initial load
duke
parents:
diff changeset
1571 native threads which are not attached to the VM are not
a61af66fc99e Initial load
duke
parents:
diff changeset
1572 Java programming language threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1573 A thread is live if <code>java.lang.Thread.isAlive()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1574 would return <code>true</code>, that is, the thread has
a61af66fc99e Initial load
duke
parents:
diff changeset
1575 been started and has not yet died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1576 The universe of threads is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1577 by the context of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1578 environment, which, typically, is all threads attached to the VM,
a61af66fc99e Initial load
duke
parents:
diff changeset
1579 except critical VM internal threads and <jvmti/> agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1580 (see <functionlink id="RunAgentThread"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1581 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1582 If the calling thread is specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
1583 all other threads are suspended first then the caller thread is suspended -
a61af66fc99e Initial load
duke
parents:
diff changeset
1584 this function will not return until some other thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
1585 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1586 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1587 The list of actually
a61af66fc99e Initial load
duke
parents:
diff changeset
1588 suspended threads is returned in
a61af66fc99e Initial load
duke
parents:
diff changeset
1589 <paramlink id="suspended_list_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1590 Suspension is as defined in <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1591 <functionlink id="ResumeThreadList"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1592 can be used to resume the suspended threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1593 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1594 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1595 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1596 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1597 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1598 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1599 <param id="except_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1600 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1601 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1602 The number of threads in the list of threads not to be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1603 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1604 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1605 <param id="except_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1606 <inbuf incount="except_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1607 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1608 <nullok>not an error if <code>except_count == 0</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
1609 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1610 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1611 The list of threads not to be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1612 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1613 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1614 <param id="suspended_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1615 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1616 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1617 On return, points to the number of threads suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1618 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1619 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1620 <param id="suspended_list_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1621 <allocbuf outcount="suspended_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1622 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1623 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
1624 for each thread suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1625 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1626 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1627 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1628 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1629 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
1630 A thread in <paramlink id="except_list"></paramlink> was invalid.
a61af66fc99e Initial load
duke
parents:
diff changeset
1631 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1632 <error id="JVMTI_ERROR_NULL_POINTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
1633 Both <paramlink id="except_list"></paramlink> was <code>NULL</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1634 and <paramlink id="except_count"></paramlink> was non-zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1635 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1636 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1637 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1638 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
1639
a61af66fc99e Initial load
duke
parents:
diff changeset
1640 <function id="SuspendThreadList" num="92">
a61af66fc99e Initial load
duke
parents:
diff changeset
1641 <synopsis>Suspend Thread List</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1642 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1643 Suspend the <paramlink id="request_count"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1644 threads specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1645 <paramlink id="request_list"></paramlink> array.
a61af66fc99e Initial load
duke
parents:
diff changeset
1646 Threads may be resumed with
a61af66fc99e Initial load
duke
parents:
diff changeset
1647 <functionlink id="ResumeThreadList"></functionlink> or
a61af66fc99e Initial load
duke
parents:
diff changeset
1648 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1649 If the calling thread is specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1650 <paramlink id="request_list"></paramlink> array, this function will
a61af66fc99e Initial load
duke
parents:
diff changeset
1651 not return until some other thread resumes it.
a61af66fc99e Initial load
duke
parents:
diff changeset
1652 Errors encountered in the suspension of a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1653 are returned in the <paramlink id="results"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1654 array, <b>not</b> in the return value of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1655 Threads that are currently suspended do not change state.
a61af66fc99e Initial load
duke
parents:
diff changeset
1656 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1657 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1658 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1659 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1660 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1661 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1662 <param id="request_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1663 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1664 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1665 The number of threads to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1666 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1667 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1668 <param id="request_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1669 <inbuf incount="request_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1670 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1671 The list of threads to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1672 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1673 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1674 <param id="results">
a61af66fc99e Initial load
duke
parents:
diff changeset
1675 <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1676 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1677 An agent supplied array of
a61af66fc99e Initial load
duke
parents:
diff changeset
1678 <paramlink id="request_count"></paramlink> elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
1679 On return, filled with the error code for
a61af66fc99e Initial load
duke
parents:
diff changeset
1680 the suspend of the corresponding thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1681 The error code will be
a61af66fc99e Initial load
duke
parents:
diff changeset
1682 <errorlink id="JVMTI_ERROR_NONE"></errorlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1683 if the thread was suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1684 Possible error codes are those specified
a61af66fc99e Initial load
duke
parents:
diff changeset
1685 for <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1686 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1687 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1688 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1689 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1690 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1691 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1692
a61af66fc99e Initial load
duke
parents:
diff changeset
1693 <function id="ResumeThread" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
1694 <synopsis>Resume Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1695 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1696 Resume a suspended thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1697 Any threads currently suspended through
a61af66fc99e Initial load
duke
parents:
diff changeset
1698 a <jvmti/> suspend function (eg.
a61af66fc99e Initial load
duke
parents:
diff changeset
1699 <functionlink id="SuspendThread"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1700 or <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1701 will resume execution;
a61af66fc99e Initial load
duke
parents:
diff changeset
1702 all other threads are unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
1703 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1704 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1705 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1706 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1707 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1708 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1709 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1710 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1711 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1712 The thread to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1713 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1714 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1715 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1716 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1717 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1718 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1719 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1720 <error id="JVMTI_ERROR_INVALID_TYPESTATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
1721 The state of the thread has been modified, and is now inconsistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
1722 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1723 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1724 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1725
a61af66fc99e Initial load
duke
parents:
diff changeset
1726 <function id="ResumeThreadList" num="93">
a61af66fc99e Initial load
duke
parents:
diff changeset
1727 <synopsis>Resume Thread List</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1728 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1729 Resume the <paramlink id="request_count"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1730 threads specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1731 <paramlink id="request_list"></paramlink> array.
a61af66fc99e Initial load
duke
parents:
diff changeset
1732 Any thread suspended through
a61af66fc99e Initial load
duke
parents:
diff changeset
1733 a <jvmti/> suspend function (eg.
a61af66fc99e Initial load
duke
parents:
diff changeset
1734 <functionlink id="SuspendThreadList"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1735 or <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1736 will resume execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
1737 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1738 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1739 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1740 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1741 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1742 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1743 <param id="request_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1744 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1745 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1746 The number of threads to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1747 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1748 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1749 <param id="request_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1750 <inbuf incount="request_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1751 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1752 The threads to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1753 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1754 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1755 <param id="results">
a61af66fc99e Initial load
duke
parents:
diff changeset
1756 <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1757 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1758 An agent supplied array of
a61af66fc99e Initial load
duke
parents:
diff changeset
1759 <paramlink id="request_count"></paramlink> elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
1760 On return, filled with the error code for
a61af66fc99e Initial load
duke
parents:
diff changeset
1761 the resume of the corresponding thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1762 The error code will be
a61af66fc99e Initial load
duke
parents:
diff changeset
1763 <errorlink id="JVMTI_ERROR_NONE"></errorlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1764 if the thread was suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1765 Possible error codes are those specified
a61af66fc99e Initial load
duke
parents:
diff changeset
1766 for <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1767 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1768 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1769 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1770 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1771 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1772 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1773
a61af66fc99e Initial load
duke
parents:
diff changeset
1774 <function id="StopThread" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
1775 <synopsis>Stop Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1776 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1777 Send the specified asynchronous exception to the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1778 (similar to <code>java.lang.Thread.stop</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1779 Normally, this function is used to kill the specified thread with an
a61af66fc99e Initial load
duke
parents:
diff changeset
1780 instance of the exception <code>ThreadDeath</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1781 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1782 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1783 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1784 <required id="can_signal_thread"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1785 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1786 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1787 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1788 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1789 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1790 The thread to stop.
a61af66fc99e Initial load
duke
parents:
diff changeset
1791 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1792 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1793 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
1794 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1795 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1796 The asynchronous exception object.
a61af66fc99e Initial load
duke
parents:
diff changeset
1797 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1798 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1799 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1800 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1801 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1802 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1803
a61af66fc99e Initial load
duke
parents:
diff changeset
1804 <function id="InterruptThread" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
1805 <synopsis>Interrupt Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1806 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1807 Interrupt the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1808 (similar to <code>java.lang.Thread.interrupt</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1809 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1810 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1811 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1812 <required id="can_signal_thread"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1813 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1814 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1815 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1816 <jthread impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1817 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1818 The thread to interrupt.
a61af66fc99e Initial load
duke
parents:
diff changeset
1819 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1820 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1821 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1822 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1823 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1824 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1825
a61af66fc99e Initial load
duke
parents:
diff changeset
1826 <function id="GetThreadInfo" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
1827 <synopsis>Get Thread Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1828 <typedef id="jvmtiThreadInfo" label="Thread information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
1829 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
1830 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1831 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1832 The thread name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
1833 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
1834 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1835 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1836 <field id="priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
1837 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1838 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1839 The thread priority. See the thread priority constants:
a61af66fc99e Initial load
duke
parents:
diff changeset
1840 <datalink id="jvmtiThreadPriority"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1841 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1842 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1843 <field id="is_daemon">
a61af66fc99e Initial load
duke
parents:
diff changeset
1844 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1845 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1846 Is this a daemon thread?
a61af66fc99e Initial load
duke
parents:
diff changeset
1847 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1848 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1849 <field id="thread_group">
a61af66fc99e Initial load
duke
parents:
diff changeset
1850 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1851 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1852 The thread group to which this thread belongs.
a61af66fc99e Initial load
duke
parents:
diff changeset
1853 <code>NULL</code> if the thread has died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1854 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1855 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1856 <field id="context_class_loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
1857 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1858 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1859 The context class loader associated with this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1860 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1861 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1862 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
1863 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1864 Get thread information. The fields of the <datalink id="jvmtiThreadInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
1865 are filled in with details of the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1866 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1867 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1868 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1869 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1870 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1871 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1872 <jthread null="current" impl="noconvert" started="maybe"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1873 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1874 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1875 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1876 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1877 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1878 <outptr><struct>jvmtiThreadInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1879 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1880 On return, filled with information describing the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1881 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1882 For JDK 1.1 implementations that don't
a61af66fc99e Initial load
duke
parents:
diff changeset
1883 recognize context class loaders,
a61af66fc99e Initial load
duke
parents:
diff changeset
1884 the <code>context_class_loader</code> field will be NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
1885 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1886 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1887 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1888 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1889 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1890 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1891
a61af66fc99e Initial load
duke
parents:
diff changeset
1892 <function id="GetOwnedMonitorInfo" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
1893 <synopsis>Get Owned Monitor Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1894 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1895 Get information about the monitors owned by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1896 specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1897 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1898 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1899 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1900 <required id="can_get_owned_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1901 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1902 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1903 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1904 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1905 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1906 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1907 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1908 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1909 <param id="owned_monitor_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1910 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1911 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1912 The number of monitors returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1913 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1914 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1915 <param id="owned_monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1916 <allocbuf outcount="owned_monitor_count_ptr"><jobject/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1917 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1918 The array of owned monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
1919 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1920 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1921 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1922 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1923 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1924 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1925
a61af66fc99e Initial load
duke
parents:
diff changeset
1926 <function id="GetOwnedMonitorStackDepthInfo" num="153" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
1927 <synopsis>Get Owned Monitor Stack Depth Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1928 <typedef id="jvmtiMonitorStackDepthInfo"
a61af66fc99e Initial load
duke
parents:
diff changeset
1929 label="Monitor stack depth information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
1930 <field id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
1931 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1932 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1933 The owned monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1934 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1935 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1936 <field id="stack_depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
1937 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1938 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1939 The stack depth. Corresponds to the stack depth used in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1940 <internallink id="stack">Stack Frame functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1941 That is, zero is the current frame, one is the frame which
a61af66fc99e Initial load
duke
parents:
diff changeset
1942 called the current frame. And it is negative one if the
a61af66fc99e Initial load
duke
parents:
diff changeset
1943 implementation cannot determine the stack depth (e.g., for
a61af66fc99e Initial load
duke
parents:
diff changeset
1944 monitors acquired by JNI <code>MonitorEnter</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1945 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1946 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1947 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
1948 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1949 Get information about the monitors owned by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1950 specified thread and the depth of the stack frame which locked them.
a61af66fc99e Initial load
duke
parents:
diff changeset
1951 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1952 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1953 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1954 <required id="can_get_owned_monitor_stack_depth_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1955 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1956 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1957 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1958 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1959 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1960 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1961 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1962 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1963 <param id="monitor_info_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1964 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1965 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1966 The number of monitors returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1967 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1968 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1969 <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
1970 <allocbuf outcount="monitor_info_count_ptr">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1971 <struct>jvmtiMonitorStackDepthInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
1972 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1973 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1974 The array of owned monitor depth information.
a61af66fc99e Initial load
duke
parents:
diff changeset
1975 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1976 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1977 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1978 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1979 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1980 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1981
a61af66fc99e Initial load
duke
parents:
diff changeset
1982 <function id="GetCurrentContendedMonitor" num="11">
a61af66fc99e Initial load
duke
parents:
diff changeset
1983 <synopsis>Get Current Contended Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1984 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1985 Get the object, if any, whose monitor the specified thread is waiting to
a61af66fc99e Initial load
duke
parents:
diff changeset
1986 enter or waiting to regain through <code>java.lang.Object.wait</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1987 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1988 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1989 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1990 <required id="can_get_current_contended_monitor"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1991 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1992 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1993 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1994 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1995 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1996 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1997 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1998 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1999 <param id="monitor_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2000 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2001 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2002 On return, filled with the current contended monitor, or
a61af66fc99e Initial load
duke
parents:
diff changeset
2003 NULL if there is none.
a61af66fc99e Initial load
duke
parents:
diff changeset
2004 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2005 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2006 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2007 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2008 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2009 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2010
a61af66fc99e Initial load
duke
parents:
diff changeset
2011 <callback id="jvmtiStartFunction">
a61af66fc99e Initial load
duke
parents:
diff changeset
2012 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2013 <synopsis>Agent Start Function</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2014 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2015 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2016 This function is the entry point for an agent thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2017 started with
a61af66fc99e Initial load
duke
parents:
diff changeset
2018 <functionlink id="RunAgentThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2019 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2020 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2021 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
2022 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2023 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2024 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2025 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2026 The <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
2027 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2028 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2029 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
2030 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2031 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2032 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2033 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2034 The JNI environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
2035 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2036 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2037 <param id="arg">
a61af66fc99e Initial load
duke
parents:
diff changeset
2038 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2039 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2040 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2041 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2042 The <code>arg</code> parameter passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
2043 <functionlink id="RunAgentThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2044 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2045 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2046 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2047 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
2048
a61af66fc99e Initial load
duke
parents:
diff changeset
2049 <function id="RunAgentThread" num="12">
a61af66fc99e Initial load
duke
parents:
diff changeset
2050 <synopsis>Run Agent Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2051 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2052 Starts the execution of an agent thread. with the specified native function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2053 The parameter <paramlink id="arg"></paramlink> is forwarded on to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2054 <functionlink id="jvmtiStartFunction">start function</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2055 (specified with <paramlink id="proc"></paramlink>) as its single argument.
a61af66fc99e Initial load
duke
parents:
diff changeset
2056 This function allows the creation of agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
2057 for handling communication with another process or for handling events
a61af66fc99e Initial load
duke
parents:
diff changeset
2058 without the need to load a special subclass of <code>java.lang.Thread</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
2059 implementer of <code>java.lang.Runnable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2060 Instead, the created thread can run entirely in native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2061 However, the created thread does require a newly created instance
a61af66fc99e Initial load
duke
parents:
diff changeset
2062 of <code>java.lang.Thread</code> (referenced by the argument <code>thread</code>) to
a61af66fc99e Initial load
duke
parents:
diff changeset
2063 which it will be associated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2064 The thread object can be created with JNI calls.
a61af66fc99e Initial load
duke
parents:
diff changeset
2065 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2066 The following common thread priorities are provided for your convenience:
a61af66fc99e Initial load
duke
parents:
diff changeset
2067 <constants id="jvmtiThreadPriority" label="Thread Priority Constants" kind="const">
a61af66fc99e Initial load
duke
parents:
diff changeset
2068 <constant id="JVMTI_THREAD_MIN_PRIORITY" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2069 Minimum possible thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2070 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2071 <constant id="JVMTI_THREAD_NORM_PRIORITY" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
2072 Normal thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2073 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2074 <constant id="JVMTI_THREAD_MAX_PRIORITY" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
2075 Maximum possible thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2076 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2077 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
2078 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2079 The new thread is started as a daemon thread with the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
2080 <paramlink id="priority"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2081 If enabled, a <eventlink id="ThreadStart"/> event will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
2082 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2083 Since the thread has been started, the thread will be live when this function
a61af66fc99e Initial load
duke
parents:
diff changeset
2084 returns, unless the thread has died immediately.
a61af66fc99e Initial load
duke
parents:
diff changeset
2085 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2086 The thread group of the thread is ignored -- specifically, the thread is not
a61af66fc99e Initial load
duke
parents:
diff changeset
2087 added to the thread group and the thread is not seen on queries of the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2088 group at either the Java programming language or <jvmti/> levels.
a61af66fc99e Initial load
duke
parents:
diff changeset
2089 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2090 The thread is not visible to Java programming language queries but is
a61af66fc99e Initial load
duke
parents:
diff changeset
2091 included in <jvmti/> queries (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
2092 <functionlink id="GetAllThreads"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
2093 <functionlink id="GetAllStackTraces"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2094 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2095 Upon execution of <code>proc</code>, the new thread will be attached to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2096 VM--see the JNI documentation on
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
2097 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#wp1060"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2098 >Attaching to the VM</externallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2099 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2100 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2101 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2102 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2103 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2104 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2105 <jthread impl="noconvert" started="no"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2106 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2107 The thread to run.
a61af66fc99e Initial load
duke
parents:
diff changeset
2108 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2109 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2110 <param id="proc">
a61af66fc99e Initial load
duke
parents:
diff changeset
2111 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
2112 <struct>jvmtiStartFunction</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2113 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
2114 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2115 The start function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2116 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2117 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2118 <param id="arg">
a61af66fc99e Initial load
duke
parents:
diff changeset
2119 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2120 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2121 <nullok><code>NULL</code> is passed to the start function</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2122 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2123 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2124 The argument to the start function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2125 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2126 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2127 <param id="priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
2128 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2129 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2130 The priority of the started thread. Any thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2131 priority allowed by <code>java.lang.Thread.setPriority</code> can be used including
a61af66fc99e Initial load
duke
parents:
diff changeset
2132 those in <datalink id="jvmtiThreadPriority"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2133 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2134 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2135 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2136 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2137 <error id="JVMTI_ERROR_INVALID_PRIORITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
2138 <paramlink id="priority"/> is less than
a61af66fc99e Initial load
duke
parents:
diff changeset
2139 <datalink id="JVMTI_THREAD_MIN_PRIORITY"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2140 or greater than
a61af66fc99e Initial load
duke
parents:
diff changeset
2141 <datalink id="JVMTI_THREAD_MAX_PRIORITY"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2142 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2143 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2144 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2145
a61af66fc99e Initial load
duke
parents:
diff changeset
2146 <function id="SetThreadLocalStorage" jkernel="yes" impl="notrace" phase="start" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
2147 <synopsis>Set Thread Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2148 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2149 The VM stores a pointer value associated with each environment-thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2150 pair. This pointer value is called <i>thread-local storage</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2151 This value is <code>NULL</code> unless set with this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2152 Agents can allocate memory in which they store thread specific
a61af66fc99e Initial load
duke
parents:
diff changeset
2153 information. By setting thread-local storage it can then be
a61af66fc99e Initial load
duke
parents:
diff changeset
2154 accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
2155 <functionlink id="GetThreadLocalStorage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2156 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2157 This function is called by the agent to set the value of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2158 thread-local storage. <jvmti/> supplies to the agent a pointer-size
a61af66fc99e Initial load
duke
parents:
diff changeset
2159 thread-local storage that can be used to record per-thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2160 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2161 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2162 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2163 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2164 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2165 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2166 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2167 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2168 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2169 Store to this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2170 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2171 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2172 <param id="data">
a61af66fc99e Initial load
duke
parents:
diff changeset
2173 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2174 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2175 <nullok>value is set to <code>NULL</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2176 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2177 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2178 The value to be entered into the thread-local storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
2179 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2180 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2181 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2182 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2183 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2184 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2185
a61af66fc99e Initial load
duke
parents:
diff changeset
2186 <function id="GetThreadLocalStorage" jkernel="yes" impl="innative notrace" phase="start" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
2187 <synopsis>Get Thread Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2188 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2189 Called by the agent to get the value of the <jvmti/> thread-local
a61af66fc99e Initial load
duke
parents:
diff changeset
2190 storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
2191 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2192 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2193 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2194 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2195 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2196 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2197 <jthread null="current" impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2198 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2199 Retrieve from this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2200 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2201 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2202 <param id="data_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2203 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2204 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2205 Pointer through which the value of the thread local
a61af66fc99e Initial load
duke
parents:
diff changeset
2206 storage is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2207 If thread-local storage has not been set with
a61af66fc99e Initial load
duke
parents:
diff changeset
2208 <functionlink id="SetThreadLocalStorage"></functionlink> the returned
a61af66fc99e Initial load
duke
parents:
diff changeset
2209 pointer is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2210 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2211 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2212 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2213 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2214 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2215 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2216
a61af66fc99e Initial load
duke
parents:
diff changeset
2217 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2218
a61af66fc99e Initial load
duke
parents:
diff changeset
2219 <category id="thread_groups" label="Thread Group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2220 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2221 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2222
a61af66fc99e Initial load
duke
parents:
diff changeset
2223 <function id="GetTopThreadGroups" num="13">
a61af66fc99e Initial load
duke
parents:
diff changeset
2224 <synopsis>Get Top Thread Groups</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2225 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2226 Return all top-level (parentless) thread groups in the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
2227 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2228 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2229 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2230 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2231 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2232 <param id="group_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2233 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2234 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2235 On return, points to the number of top-level thread groups.
a61af66fc99e Initial load
duke
parents:
diff changeset
2236 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2237 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2238 <param id="groups_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2239 <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2240 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2241 On return, refers to a pointer to the top-level thread group array.
a61af66fc99e Initial load
duke
parents:
diff changeset
2242 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2243 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2244 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2245 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2246 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2247 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2248
a61af66fc99e Initial load
duke
parents:
diff changeset
2249 <function id="GetThreadGroupInfo" num="14">
a61af66fc99e Initial load
duke
parents:
diff changeset
2250 <synopsis>Get Thread Group Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2251 <typedef id="jvmtiThreadGroupInfo" label="Thread group information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2252 <field id="parent">
a61af66fc99e Initial load
duke
parents:
diff changeset
2253 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2254 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2255 The parent thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2256 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2257 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2258 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
2259 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2260 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2261 The thread group's name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
2262 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
2263 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2264 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2265 <field id="max_priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
2266 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2267 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2268 The maximum priority for this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2269 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2270 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2271 <field id="is_daemon">
a61af66fc99e Initial load
duke
parents:
diff changeset
2272 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2273 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2274 Is this a daemon thread group?
a61af66fc99e Initial load
duke
parents:
diff changeset
2275 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2276 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2277 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2278 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2279 Get information about the thread group. The fields of the
a61af66fc99e Initial load
duke
parents:
diff changeset
2280 <functionlink id="jvmtiThreadGroupInfo"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
2281 are filled in with details of the specified thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2282 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2283 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2284 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2285 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2286 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2287 <param id="group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2288 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2289 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2290 The thread group to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2291 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2292 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2293 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2294 <outptr><struct>jvmtiThreadGroupInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2295 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2296 On return, filled with information describing the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
2297 thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2298 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2299 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2300 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2301 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2302 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2303 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2304
a61af66fc99e Initial load
duke
parents:
diff changeset
2305 <function id="GetThreadGroupChildren" num="15">
a61af66fc99e Initial load
duke
parents:
diff changeset
2306 <synopsis>Get Thread Group Children</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2307 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2308 Get the live threads and active subgroups in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2309 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2310 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2311 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2312 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2313 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2314 <param id="group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2315 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2316 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2317 The group to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2318 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2319 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2320 <param id="thread_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2321 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2322 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2323 On return, points to the number of live threads in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2324 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2325 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2326 <param id="threads_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2327 <allocbuf outcount="thread_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2328 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2329 On return, points to an array of the live threads in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2330 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2331 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2332 <param id="group_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2333 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2334 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2335 On return, points to the number of active child thread groups
a61af66fc99e Initial load
duke
parents:
diff changeset
2336 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2337 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2338 <param id="groups_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2339 <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2340 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2341 On return, points to an array of the active child thread groups.
a61af66fc99e Initial load
duke
parents:
diff changeset
2342 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2343 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2344 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2345 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2346 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2347 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2348 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2349
a61af66fc99e Initial load
duke
parents:
diff changeset
2350 <category id="stack" label="Stack Frame">
a61af66fc99e Initial load
duke
parents:
diff changeset
2351 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2352 These functions provide information about the stack of a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2353 Stack frames are referenced by depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2354 The frame at depth zero is the current frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2355 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2356 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
2357 <vmspec chapter="3.6"/>,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2358 That is, they correspond to method
a61af66fc99e Initial load
duke
parents:
diff changeset
2359 invocations (including native methods) but do not correspond to platform native or
a61af66fc99e Initial load
duke
parents:
diff changeset
2360 VM internal frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
2361 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2362 A <jvmti/> implementation may use method invocations to launch a thread and
a61af66fc99e Initial load
duke
parents:
diff changeset
2363 the corresponding frames may be included in the stack as presented by these functions --
a61af66fc99e Initial load
duke
parents:
diff changeset
2364 that is, there may be frames shown
a61af66fc99e Initial load
duke
parents:
diff changeset
2365 deeper than <code>main()</code> and <code>run()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2366 However this presentation must be consistent across all <jvmti/> functionality which
a61af66fc99e Initial load
duke
parents:
diff changeset
2367 uses stack frames or stack depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2368 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2369
a61af66fc99e Initial load
duke
parents:
diff changeset
2370 <typedef id="jvmtiFrameInfo" label="Stack frame information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2371 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2372 Information about a stack frame is returned in this structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
2373 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2374 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
2375 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2376 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2377 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2378 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2379 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2380 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
2381 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2382 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2383 The index of the instruction executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2384 <code>-1</code> if the frame is executing a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2385 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2386 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2387 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2388
a61af66fc99e Initial load
duke
parents:
diff changeset
2389 <typedef id="jvmtiStackInfo" label="Stack information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2390 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2391 Information about a set of stack frames is returned in this structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
2392 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2393 <field id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2394 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2395 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2396 On return, the thread traced.
a61af66fc99e Initial load
duke
parents:
diff changeset
2397 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2398 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2399 <field id="state">
a61af66fc99e Initial load
duke
parents:
diff changeset
2400 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2401 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2402 On return, the thread state. See <functionlink id="GetThreadState"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2403 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2404 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2405 <field id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2406 <outbuf incount="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2407 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2408 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2409 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2410 On return, this agent allocated buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2411 with stack frame information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2412 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2413 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2414 <field id="frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2415 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2416 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2417 On return, the number of records filled into
a61af66fc99e Initial load
duke
parents:
diff changeset
2418 <code>frame_buffer</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2419 This will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2420 min(<code>max_frame_count</code>, <i>stackDepth</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2421 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2422 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2423 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2424
a61af66fc99e Initial load
duke
parents:
diff changeset
2425 <function id="GetStackTrace" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
2426 <synopsis>Get Stack Trace</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2427 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2428 Get information about the stack of a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2429 If <paramlink id="max_frame_count"></paramlink> is less than the depth of the stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2430 the <paramlink id="max_frame_count"></paramlink> topmost frames are returned,
a61af66fc99e Initial load
duke
parents:
diff changeset
2431 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2432 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2433 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2434 The following example causes up to five of the topmost frames
a61af66fc99e Initial load
duke
parents:
diff changeset
2435 to be returned and (if there are any frames) the currently
a61af66fc99e Initial load
duke
parents:
diff changeset
2436 executing method name to be printed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2437 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2438 jvmtiFrameInfo frames[5];
a61af66fc99e Initial load
duke
parents:
diff changeset
2439 jint count;
a61af66fc99e Initial load
duke
parents:
diff changeset
2440 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
2441
a61af66fc99e Initial load
duke
parents:
diff changeset
2442 err = (*jvmti)-&gt;GetStackTrace(jvmti, aThread, 0, 5,
7168
73e64867adb7 8003690: Example code in JVMTI GetStackTrace documentation is broken
mikael
parents: 6919
diff changeset
2443 frames, &amp;count);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2444 if (err == JVMTI_ERROR_NONE &amp;&amp; count &gt;= 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2445 char *methodName;
a61af66fc99e Initial load
duke
parents:
diff changeset
2446 err = (*jvmti)-&gt;GetMethodName(jvmti, frames[0].method,
7168
73e64867adb7 8003690: Example code in JVMTI GetStackTrace documentation is broken
mikael
parents: 6919
diff changeset
2447 &amp;methodName, NULL, NULL);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2448 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2449 printf("Executing method: %s", methodName);
a61af66fc99e Initial load
duke
parents:
diff changeset
2450 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2451 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2452 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2453 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2454 check example code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2455 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2456 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2457 The <paramlink id="thread"></paramlink> need not be suspended
a61af66fc99e Initial load
duke
parents:
diff changeset
2458 to call this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2459 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2460 The <functionlink id="GetLineNumberTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2461 function can be used to map locations to line numbers. Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
2462 this mapping can be done lazily.
a61af66fc99e Initial load
duke
parents:
diff changeset
2463 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2464 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2465 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2466 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2467 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2468 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2469 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2470 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2471 Fetch the stack trace of this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2472 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2473 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2474 <param id="start_depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2475 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2476 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2477 Begin retrieving frames at this depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2478 If non-negative, count from the current frame,
a61af66fc99e Initial load
duke
parents:
diff changeset
2479 the first frame retrieved is at depth <code>start_depth</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2480 For example, if zero, start from the current frame; if one, start from the
a61af66fc99e Initial load
duke
parents:
diff changeset
2481 caller of the current frame; if two, start from the caller of the
a61af66fc99e Initial load
duke
parents:
diff changeset
2482 caller of the current frame; and so on.
a61af66fc99e Initial load
duke
parents:
diff changeset
2483 If negative, count from below the oldest frame,
a61af66fc99e Initial load
duke
parents:
diff changeset
2484 the first frame retrieved is at depth <i>stackDepth</i><code> + start_depth</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2485 where <i>stackDepth</i> is the count of frames on the stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2486 For example, if negative one, only the oldest frame is retrieved;
a61af66fc99e Initial load
duke
parents:
diff changeset
2487 if negative two, start from the frame called by the oldest frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2488 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2489 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2490 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2491 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2492 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2493 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
a61af66fc99e Initial load
duke
parents:
diff changeset
2494 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2495 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2496 <param id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2497 <outbuf incount="max_frame_count" outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2498 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2499 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2500 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2501 On return, this agent allocated buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2502 with stack frame information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2503 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2504 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2505 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2506 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2507 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2508 On return, points to the number of records filled in.
a61af66fc99e Initial load
duke
parents:
diff changeset
2509 For non-negative <code>start_depth</code>, this will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2510 min(<code>max_frame_count</code>, <i>stackDepth</i><code> - start_depth</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2511 For negative <code>start_depth</code>, this will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2512 min(<code>max_frame_count</code>, <code>-start_depth</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2513 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2514 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2515 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2516 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2517 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
2518 <paramlink id="start_depth"/> is positive and greater than or equal to <i>stackDepth</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2519 Or <paramlink id="start_depth"/> is negative and less than <i>-stackDepth</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2520 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2521 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2522 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2523
a61af66fc99e Initial load
duke
parents:
diff changeset
2524
a61af66fc99e Initial load
duke
parents:
diff changeset
2525 <function id="GetAllStackTraces" num="100">
a61af66fc99e Initial load
duke
parents:
diff changeset
2526 <synopsis>Get All Stack Traces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2527 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2528 Get information about the stacks of all live threads
a61af66fc99e Initial load
duke
parents:
diff changeset
2529 (including <internallink id="RunAgentThread">agent threads</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2530 If <paramlink id="max_frame_count"/> is less than the depth of a stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2531 the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
2532 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2533 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2534 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2535 All stacks are collected simultaneously, that is, no changes will occur to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2536 thread state or stacks between the sampling of one thread and the next.
a61af66fc99e Initial load
duke
parents:
diff changeset
2537 The threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2538
a61af66fc99e Initial load
duke
parents:
diff changeset
2539 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2540 jvmtiStackInfo *stack_info;
a61af66fc99e Initial load
duke
parents:
diff changeset
2541 jint thread_count;
a61af66fc99e Initial load
duke
parents:
diff changeset
2542 int ti;
a61af66fc99e Initial load
duke
parents:
diff changeset
2543 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
2544
a61af66fc99e Initial load
duke
parents:
diff changeset
2545 err = (*jvmti)-&gt;GetAllStackTraces(jvmti, MAX_FRAMES, &amp;stack_info, &amp;thread_count);
a61af66fc99e Initial load
duke
parents:
diff changeset
2546 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2547 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
2548 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2549 for (ti = 0; ti &lt; thread_count; ++ti) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2550 jvmtiStackInfo *infop = &amp;stack_info[ti];
a61af66fc99e Initial load
duke
parents:
diff changeset
2551 jthread thread = infop-&gt;thread;
a61af66fc99e Initial load
duke
parents:
diff changeset
2552 jint state = infop-&gt;state;
a61af66fc99e Initial load
duke
parents:
diff changeset
2553 jvmtiFrameInfo *frames = infop-&gt;frame_buffer;
a61af66fc99e Initial load
duke
parents:
diff changeset
2554 int fi;
a61af66fc99e Initial load
duke
parents:
diff changeset
2555
a61af66fc99e Initial load
duke
parents:
diff changeset
2556 myThreadAndStatePrinter(thread, state);
a61af66fc99e Initial load
duke
parents:
diff changeset
2557 for (fi = 0; fi &lt; infop-&gt;frame_count; fi++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2558 myFramePrinter(frames[fi].method, frames[fi].location);
a61af66fc99e Initial load
duke
parents:
diff changeset
2559 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2560 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2561 /* this one Deallocate call frees all data allocated by GetAllStackTraces */
a61af66fc99e Initial load
duke
parents:
diff changeset
2562 err = (*jvmti)-&gt;Deallocate(jvmti, stack_info);
a61af66fc99e Initial load
duke
parents:
diff changeset
2563 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2564 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2565 check example code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2566 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2567
a61af66fc99e Initial load
duke
parents:
diff changeset
2568 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2569 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2570 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2571 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2572 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2573 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2574 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2575 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2576 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2577 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2578 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2579 <param id="stack_info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2580 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2581 <struct>jvmtiStackInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2582 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2583 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2584 On return, this buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2585 with stack information for each thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2586 The number of <datalink id="jvmtiStackInfo"/> records is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
2587 by <paramlink id="thread_count_ptr"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2588 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2589 Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2590 buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2591 These buffers must not be separately deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2592 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2593 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2594 <param id="thread_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2595 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2596 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2597 The number of threads traced.
a61af66fc99e Initial load
duke
parents:
diff changeset
2598 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2599 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2600 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2601 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2602 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2603 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2604
a61af66fc99e Initial load
duke
parents:
diff changeset
2605 <function id="GetThreadListStackTraces" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
2606 <synopsis>Get Thread List Stack Traces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2607 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2608 Get information about the stacks of the supplied threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
2609 If <paramlink id="max_frame_count"/> is less than the depth of a stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2610 the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
2611 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2612 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2613 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2614 All stacks are collected simultaneously, that is, no changes will occur to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2615 thread state or stacks between the sampling one thread and the next.
a61af66fc99e Initial load
duke
parents:
diff changeset
2616 The threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2617 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2618 If a thread has not yet started or terminates before the stack information is collected,
a61af66fc99e Initial load
duke
parents:
diff changeset
2619 a zero length stack (<datalink id="jvmtiStackInfo.frame_count"/> will be zero)
a61af66fc99e Initial load
duke
parents:
diff changeset
2620 will be returned and the thread <datalink id="jvmtiStackInfo.state"/> can be checked.
a61af66fc99e Initial load
duke
parents:
diff changeset
2621 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2622 See the example for the similar function
a61af66fc99e Initial load
duke
parents:
diff changeset
2623 <functionlink id="GetAllStackTraces"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2624 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2625 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2626 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2627 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2628 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2629 <param id="thread_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2630 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2631 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2632 The number of threads to trace.
a61af66fc99e Initial load
duke
parents:
diff changeset
2633 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2634 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2635 <param id="thread_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
2636 <inbuf incount="thread_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2637 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2638 The list of threads to trace.
a61af66fc99e Initial load
duke
parents:
diff changeset
2639 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2640 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2641 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2642 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2643 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2644 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2645 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2646 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2647 <param id="stack_info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2648 <allocbuf outcount="thread_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2649 <struct>jvmtiStackInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2650 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2651 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2652 On return, this buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2653 with stack information for each thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2654 The number of <datalink id="jvmtiStackInfo"/> records is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
2655 by <paramlink id="thread_count"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2656 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2657 Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2658 buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2659 These buffers must not be separately deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2660 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2661 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2662 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2663 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2664 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
2665 An element in <paramlink id="thread_list"/> is not a thread object.
a61af66fc99e Initial load
duke
parents:
diff changeset
2666 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2667 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2668 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2669
a61af66fc99e Initial load
duke
parents:
diff changeset
2670 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
2671 <function id="AsyncGetStackTrace" num="1000">
a61af66fc99e Initial load
duke
parents:
diff changeset
2672 <synopsis>Get Stack Trace--Asynchronous</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2673 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2674 Get information about the entire stack of a thread (or a sub-section of it).
a61af66fc99e Initial load
duke
parents:
diff changeset
2675 This is the asynchronous version of <functionlink id="GetStackTrace"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2676 and is reentrant and safe to call
a61af66fc99e Initial load
duke
parents:
diff changeset
2677 from asynchronous signal handlers.
a61af66fc99e Initial load
duke
parents:
diff changeset
2678 The stack trace is returned only for the calling thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2679 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2680 The <functionlink id="GetLineNumberTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2681 function can be used to map locations to line numbers. Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
2682 this mapping can be done lazily.
a61af66fc99e Initial load
duke
parents:
diff changeset
2683 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2684 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2685 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2686 <required id="can_get_async_stack_trace"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2687 <capability id="can_show_JVM_spec_async_frames">
a61af66fc99e Initial load
duke
parents:
diff changeset
2688 If <code>false</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2689 <paramlink id="use_java_stack"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2690 must be <code>false</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2691 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
2692 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2693 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2694 <param id="use_java_stack">
a61af66fc99e Initial load
duke
parents:
diff changeset
2695 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2696 <description>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2697 Return the stack showing <vmspec/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2698 model of the stack;
a61af66fc99e Initial load
duke
parents:
diff changeset
2699 otherwise, show the internal representation of the stack with
a61af66fc99e Initial load
duke
parents:
diff changeset
2700 inlined and optimized methods missing. If the virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
2701 is using the <i>Java Virtual Machine Specification</i> stack model
a61af66fc99e Initial load
duke
parents:
diff changeset
2702 internally, this flag is ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
2703 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2704 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2705 <param id="max_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2706 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2707 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2708 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
a61af66fc99e Initial load
duke
parents:
diff changeset
2709 Retrieve this many unless the stack depth is less than <code>max_count</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2710 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2711 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2712 <param id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2713 <outbuf incount="max_count" outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2714 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2715 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2716 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2717 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2718 The agent passes in a buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
2719 large enough to hold <code>max_count</code> records of
a61af66fc99e Initial load
duke
parents:
diff changeset
2720 <datalink id="jvmtiFrameInfo"></datalink>. This buffer must be
a61af66fc99e Initial load
duke
parents:
diff changeset
2721 pre-allocated by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
2722 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2723 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2724 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2725 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2726 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2727 On return, points to the number of records filled in..
a61af66fc99e Initial load
duke
parents:
diff changeset
2728 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2729 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2730 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2731 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2732 <error id="JVMTI_ERROR_UNATTACHED_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
2733 The thread being used to call this function is not attached
a61af66fc99e Initial load
duke
parents:
diff changeset
2734 to the virtual machine. Calls must be made from attached threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
2735 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2736 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2737 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2738 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
2739
a61af66fc99e Initial load
duke
parents:
diff changeset
2740 <function id="GetFrameCount" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
2741 <synopsis>Get Frame Count</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2742 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2743 Get the number of frames currently in the specified thread's call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2744 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2745 If this function is called for a thread actively executing bytecodes (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
2746 not the current thread and not suspended), the information returned is transient.
a61af66fc99e Initial load
duke
parents:
diff changeset
2747 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2748 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2749 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2750 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2751 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2752 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2753 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2754 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2755 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2756 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2757 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2758 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2759 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2760 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2761 On return, points to the number of frames in the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2762 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2763 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2764 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2765 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2766 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2767 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2768
a61af66fc99e Initial load
duke
parents:
diff changeset
2769 <function id="PopFrame" num="80">
a61af66fc99e Initial load
duke
parents:
diff changeset
2770 <synopsis>Pop Frame</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2771 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2772 Pop the current frame of <code>thread</code>'s stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2773 Popping a frame takes you to the previous frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2774 When the thread is resumed, the execution
a61af66fc99e Initial load
duke
parents:
diff changeset
2775 state of the thread is reset to the state
a61af66fc99e Initial load
duke
parents:
diff changeset
2776 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
2777 That is (using <vmspec/> terminology):
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2778 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2779 <li>the current frame is discarded as the previous frame becomes the current one</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2780 <li>the operand stack is restored--the argument values are added back
a61af66fc99e Initial load
duke
parents:
diff changeset
2781 and if the invoke was not <code>invokestatic</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2782 <code>objectref</code> is added back as well</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2783 <li>the Java virtual machine PC is restored to the opcode
a61af66fc99e Initial load
duke
parents:
diff changeset
2784 of the invoke instruction</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2785 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2786 Note however, that any changes to the arguments, which
a61af66fc99e Initial load
duke
parents:
diff changeset
2787 occurred in the called method, remain;
a61af66fc99e Initial load
duke
parents:
diff changeset
2788 when execution continues, the first instruction to
a61af66fc99e Initial load
duke
parents:
diff changeset
2789 execute will be the invoke.
a61af66fc99e Initial load
duke
parents:
diff changeset
2790 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2791 Between calling <code>PopFrame</code> and resuming the
a61af66fc99e Initial load
duke
parents:
diff changeset
2792 thread the state of the stack is undefined.
a61af66fc99e Initial load
duke
parents:
diff changeset
2793 To pop frames beyond the first,
a61af66fc99e Initial load
duke
parents:
diff changeset
2794 these three steps must be repeated:
a61af66fc99e Initial load
duke
parents:
diff changeset
2795 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2796 <li>suspend the thread via an event (step, breakpoint, ...)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2797 <li>call <code>PopFrame</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2798 <li>resume the thread</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2799 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2800 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2801 A lock acquired by calling the called method
a61af66fc99e Initial load
duke
parents:
diff changeset
2802 (if it is a <code>synchronized</code> method)
a61af66fc99e Initial load
duke
parents:
diff changeset
2803 and locks acquired by entering <code>synchronized</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2804 blocks within the called method are released.
a61af66fc99e Initial load
duke
parents:
diff changeset
2805 Note: this does not apply to native locks or
a61af66fc99e Initial load
duke
parents:
diff changeset
2806 <code>java.util.concurrent.locks</code> locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
2807 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2808 Finally blocks are not executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2809 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2810 Changes to global state are not addressed and thus remain changed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2811 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2812 The specified thread must be suspended (which implies it cannot be the current thread).
a61af66fc99e Initial load
duke
parents:
diff changeset
2813 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2814 Both the called method and calling method must be non-native Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2815 language methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
2816 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2817 No <jvmti/> events are generated by this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2818 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2819 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2820 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2821 <required id="can_pop_frame"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2822 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2823 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2824 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2825 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2826 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2827 The thread whose current frame is to be popped.
a61af66fc99e Initial load
duke
parents:
diff changeset
2828 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2829 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2830 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2831 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2832 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2833 Called or calling method is a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2834 The implementation is unable to pop this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2835 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2836 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2837 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2838 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2839 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
2840 There are less than two stack frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2841 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2842 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2843 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2844
a61af66fc99e Initial load
duke
parents:
diff changeset
2845 <function id="GetFrameLocation" num="19">
a61af66fc99e Initial load
duke
parents:
diff changeset
2846 <synopsis>Get Frame Location</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2847 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2848 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2849 For a Java programming language frame, return the location of the instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
2850 currently executing.
a61af66fc99e Initial load
duke
parents:
diff changeset
2851 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2852 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2853 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2854 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2855 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2856 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2857 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2858 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2859 The thread of the frame to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2860 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2861 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2862 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2863 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2864 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2865 The depth of the frame to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2866 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2867 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2868 <param id="method_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2869 <outptr><jmethodID/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2870 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2871 On return, points to the method for the current location.
a61af66fc99e Initial load
duke
parents:
diff changeset
2872 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2873 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2874 <param id="location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2875 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2876 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2877 On return, points to the index of the currently
a61af66fc99e Initial load
duke
parents:
diff changeset
2878 executing instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
2879 Is set to <code>-1</code> if the frame is executing
a61af66fc99e Initial load
duke
parents:
diff changeset
2880 a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2881 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2882 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2883 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2884 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2885 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2886 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2887
a61af66fc99e Initial load
duke
parents:
diff changeset
2888 <function id="NotifyFramePop" num="20">
a61af66fc99e Initial load
duke
parents:
diff changeset
2889 <synopsis>Notify Frame Pop</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2890 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2891 When the frame that is currently at <paramlink id="depth"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2892 is popped from the stack, generate a
a61af66fc99e Initial load
duke
parents:
diff changeset
2893 <eventlink id="FramePop"></eventlink> event. See the
a61af66fc99e Initial load
duke
parents:
diff changeset
2894 <eventlink id="FramePop"></eventlink> event for details.
a61af66fc99e Initial load
duke
parents:
diff changeset
2895 Only frames corresponding to non-native Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
2896 methods can receive notification.
a61af66fc99e Initial load
duke
parents:
diff changeset
2897 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2898 The specified thread must either be the current thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2899 or the thread must be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2900 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2901 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2902 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2903 <required id="can_generate_frame_pop_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2904 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2905 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2906 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2907 <jthread null="current" frame="depth"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2908 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2909 The thread of the frame for which the frame pop event will be generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2910 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2911 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2912 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2913 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2914 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2915 The depth of the frame for which the frame pop event will be generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2916 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2917 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2918 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2919 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2920 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2921 The frame at <code>depth</code> is executing a
a61af66fc99e Initial load
duke
parents:
diff changeset
2922 native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2923 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2924 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2925 Thread was not suspended and was not the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2926 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2927 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2928 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2929
a61af66fc99e Initial load
duke
parents:
diff changeset
2930 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2931
a61af66fc99e Initial load
duke
parents:
diff changeset
2932 <category id="ForceEarlyReturn" label="Force Early Return">
a61af66fc99e Initial load
duke
parents:
diff changeset
2933 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2934 These functions allow an agent to force a method
a61af66fc99e Initial load
duke
parents:
diff changeset
2935 to return at any point during its execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
2936 The method which will return early is referred to as the <i>called method</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2937 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
2938 (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
2939 <vmspec chapter="3.6"/>)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2940 for the specified thread at
a61af66fc99e Initial load
duke
parents:
diff changeset
2941 the time the function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
2942 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2943 The specified thread must be suspended or must be the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2944 The return occurs when execution of Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2945 language code is resumed on this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2946 Between calling one of these functions and resumption
a61af66fc99e Initial load
duke
parents:
diff changeset
2947 of thread execution, the state of the stack is undefined.
a61af66fc99e Initial load
duke
parents:
diff changeset
2948 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2949 No further instructions are executed in the called method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2950 Specifically, finally blocks are not executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2951 Note: this can cause inconsistent states in the application.
a61af66fc99e Initial load
duke
parents:
diff changeset
2952 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2953 A lock acquired by calling the called method
a61af66fc99e Initial load
duke
parents:
diff changeset
2954 (if it is a <code>synchronized</code> method)
a61af66fc99e Initial load
duke
parents:
diff changeset
2955 and locks acquired by entering <code>synchronized</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2956 blocks within the called method are released.
a61af66fc99e Initial load
duke
parents:
diff changeset
2957 Note: this does not apply to native locks or
a61af66fc99e Initial load
duke
parents:
diff changeset
2958 <code>java.util.concurrent.locks</code> locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
2959 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2960 Events, such as <eventlink id="MethodExit"></eventlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2961 are generated as they would be in a normal return.
a61af66fc99e Initial load
duke
parents:
diff changeset
2962 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2963 The called method must be a non-native Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2964 language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2965 Forcing return on a thread with only one frame on the
a61af66fc99e Initial load
duke
parents:
diff changeset
2966 stack causes the thread to exit when resumed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2967 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2968
a61af66fc99e Initial load
duke
parents:
diff changeset
2969 <function id="ForceEarlyReturnObject" num="81" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2970 <synopsis>Force Early Return - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2971 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2972 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
2973 result type is <code>Object</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2974 or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2975 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2976 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2977 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2978 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2979 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2980 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2981 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2982 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2983 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2984 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
2985 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2986 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2987 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
2988 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2989 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2990 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2991 An object or <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2992 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2993 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2994 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2995 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2996 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2997 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
2998 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2999 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3000 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3001 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3002 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3003 The result type of the called method is not
a61af66fc99e Initial load
duke
parents:
diff changeset
3004 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3005 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3006 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3007 The supplied <paramlink id="value"/> is not compatible with the
a61af66fc99e Initial load
duke
parents:
diff changeset
3008 result type of the called method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3009 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3010 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3011 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3012 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3013 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3014 There are no more frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3015 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3016 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3017 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3018
a61af66fc99e Initial load
duke
parents:
diff changeset
3019 <function id="ForceEarlyReturnInt" num="82" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3020 <synopsis>Force Early Return - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3021 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3022 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3023 result type is <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3024 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
3025 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3026 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3027 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3028 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3029 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3030 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3031 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3032 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3033 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3034 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3035 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3036 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3037 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3038 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3039 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3040 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3041 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3042 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3043 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3044 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3045 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3046 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3047 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3048 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3049 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3050 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3051 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3052 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3053 The result type of the called method is not
a61af66fc99e Initial load
duke
parents:
diff changeset
3054 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3055 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
3056 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3057 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3058 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3059 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3060 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3061 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3062 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3063 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3064 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3065 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3066
a61af66fc99e Initial load
duke
parents:
diff changeset
3067 <function id="ForceEarlyReturnLong" num="83" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3068 <synopsis>Force Early Return - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3069 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3070 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3071 result type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3072 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3073 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3074 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3075 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3076 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3077 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3078 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3079 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3080 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3081 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3082 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3083 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3084 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3085 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3086 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3087 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3088 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3089 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3090 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3091 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3092 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3093 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3094 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3095 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3096 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3097 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3098 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3099 The result type of the called method is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3100 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3101 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3102 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3103 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3104 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3105 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3106 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3107 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3108 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3109
a61af66fc99e Initial load
duke
parents:
diff changeset
3110 <function id="ForceEarlyReturnFloat" num="84" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3111 <synopsis>Force Early Return - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3112 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3113 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3114 result type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3115 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3116 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3117 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3118 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3119 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3120 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3121 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3122 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3123 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3124 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3125 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3126 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3127 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3128 <jfloat/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3129 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3130 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3131 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3132 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3133 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3134 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3135 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3136 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3137 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3138 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3139 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3140 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3141 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3142 The result type of the called method is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3143 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3144 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3145 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3146 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3147 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3148 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3149 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3150 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3151 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3152
a61af66fc99e Initial load
duke
parents:
diff changeset
3153 <function id="ForceEarlyReturnDouble" num="85" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3154 <synopsis>Force Early Return - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3155 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3156 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3157 result type is <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3158 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3159 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3160 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3161 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3162 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3163 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3164 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3165 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3166 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3167 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3168 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3169 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3170 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3171 <jdouble/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3172 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3173 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3174 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3175 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3176 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3177 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3178 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3179 Attempted to return early from a frame corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3180 Or the implementation is unable to provide this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3181 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3182 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3183 The result type of the called method is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3184 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3185 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3186 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3187 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3188 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3189 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3190 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3191 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3192 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3193
a61af66fc99e Initial load
duke
parents:
diff changeset
3194 <function id="ForceEarlyReturnVoid" num="86" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3195 <synopsis>Force Early Return - Void</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3196 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3197 This function can be used to return from a method with no result type.
a61af66fc99e Initial load
duke
parents:
diff changeset
3198 That is, the called method must be declared <code>void</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3199 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3200 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3201 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3202 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3203 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3204 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3205 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3206 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3207 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3208 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3209 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3210 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3211 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3212 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3213 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3214 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3215 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3216 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3217 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3218 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3219 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3220 The called method has a result type.
a61af66fc99e Initial load
duke
parents:
diff changeset
3221 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3222 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3223 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3224 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3225 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3226 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3227 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3228 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3229 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3230
a61af66fc99e Initial load
duke
parents:
diff changeset
3231 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
3232
a61af66fc99e Initial load
duke
parents:
diff changeset
3233 <category id="Heap" label="Heap">
a61af66fc99e Initial load
duke
parents:
diff changeset
3234 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3235 These functions are used to analyze the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
3236 Functionality includes the ability to view the objects in the
a61af66fc99e Initial load
duke
parents:
diff changeset
3237 heap and to tag these objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
3238 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3239
a61af66fc99e Initial load
duke
parents:
diff changeset
3240 <intro id="objectTags" label="Object Tags">
a61af66fc99e Initial load
duke
parents:
diff changeset
3241 A <i>tag</i> is a value associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3242 Tags are explicitly set by the agent using the
a61af66fc99e Initial load
duke
parents:
diff changeset
3243 <functionlink id="SetTag"></functionlink> function or by
a61af66fc99e Initial load
duke
parents:
diff changeset
3244 callback functions such as <functionlink id="jvmtiHeapIterationCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3245 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3246 Tags are local to the environment; that is, the tags of one
a61af66fc99e Initial load
duke
parents:
diff changeset
3247 environment are not visible in another.
a61af66fc99e Initial load
duke
parents:
diff changeset
3248 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3249 Tags are <code>jlong</code> values which can be used
a61af66fc99e Initial load
duke
parents:
diff changeset
3250 simply to mark an object or to store a pointer to more detailed
a61af66fc99e Initial load
duke
parents:
diff changeset
3251 information. Objects which have not been tagged have a
a61af66fc99e Initial load
duke
parents:
diff changeset
3252 tag of zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
3253 Setting a tag to zero makes the object untagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3254 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3255
a61af66fc99e Initial load
duke
parents:
diff changeset
3256 <intro id="heapCallbacks" label="Heap Callback Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
3257 Heap functions which iterate through the heap and recursively
a61af66fc99e Initial load
duke
parents:
diff changeset
3258 follow object references use agent supplied callback functions
a61af66fc99e Initial load
duke
parents:
diff changeset
3259 to deliver the information.
a61af66fc99e Initial load
duke
parents:
diff changeset
3260 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3261 These heap callback functions must adhere to the following restrictions --
a61af66fc99e Initial load
duke
parents:
diff changeset
3262 These callbacks must not use JNI functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
3263 These callbacks must not use <jvmti/> functions except
a61af66fc99e Initial load
duke
parents:
diff changeset
3264 <i>callback safe</i> functions which
a61af66fc99e Initial load
duke
parents:
diff changeset
3265 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
3266 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
3267 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3268 An implementation may invoke a callback on an internal thread or
a61af66fc99e Initial load
duke
parents:
diff changeset
3269 the thread which called the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3270 Heap callbacks are single threaded -- no more than one callback will
a61af66fc99e Initial load
duke
parents:
diff changeset
3271 be invoked at a time.
a61af66fc99e Initial load
duke
parents:
diff changeset
3272 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3273 The Heap Filter Flags can be used to prevent reporting
a61af66fc99e Initial load
duke
parents:
diff changeset
3274 based on the tag status of an object or its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3275 If no flags are set (the <code>jint</code> is zero), objects
a61af66fc99e Initial load
duke
parents:
diff changeset
3276 will not be filtered out.
a61af66fc99e Initial load
duke
parents:
diff changeset
3277
a61af66fc99e Initial load
duke
parents:
diff changeset
3278 <constants id="jvmtiHeapFilter" label="Heap Filter Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
3279 <constant id="JVMTI_HEAP_FILTER_TAGGED" num="0x4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3280 Filter out tagged objects. Objects which are tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3281 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3282 <constant id="JVMTI_HEAP_FILTER_UNTAGGED" num="0x8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3283 Filter out untagged objects. Objects which are not tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3284 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3285 <constant id="JVMTI_HEAP_FILTER_CLASS_TAGGED" num="0x10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3286 Filter out objects with tagged classes. Objects whose class is tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3287 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3288 <constant id="JVMTI_HEAP_FILTER_CLASS_UNTAGGED" num="0x20">
a61af66fc99e Initial load
duke
parents:
diff changeset
3289 Filter out objects with untagged classes. Objects whose class is not tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3290 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3291 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3292
a61af66fc99e Initial load
duke
parents:
diff changeset
3293 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3294 The Heap Visit Control Flags are returned by the heap callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
3295 and can be used to abort the iteration. For the
a61af66fc99e Initial load
duke
parents:
diff changeset
3296 <functionlink id="jvmtiHeapReferenceCallback">Heap
a61af66fc99e Initial load
duke
parents:
diff changeset
3297 Reference Callback</functionlink>, it can also be used
a61af66fc99e Initial load
duke
parents:
diff changeset
3298 to prune the graph of traversed references
a61af66fc99e Initial load
duke
parents:
diff changeset
3299 (<code>JVMTI_VISIT_OBJECTS</code> is not set).
a61af66fc99e Initial load
duke
parents:
diff changeset
3300
a61af66fc99e Initial load
duke
parents:
diff changeset
3301 <constants id="jvmtiHeapVisitControl"
a61af66fc99e Initial load
duke
parents:
diff changeset
3302 label="Heap Visit Control Flags"
a61af66fc99e Initial load
duke
parents:
diff changeset
3303 kind="bits"
a61af66fc99e Initial load
duke
parents:
diff changeset
3304 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3305 <constant id="JVMTI_VISIT_OBJECTS" num="0x100">
a61af66fc99e Initial load
duke
parents:
diff changeset
3306 If we are visiting an object and if this callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3307 was initiated by <functionlink id="FollowReferences"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3308 traverse the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3309 Otherwise ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
3310 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3311 <constant id="JVMTI_VISIT_ABORT" num="0x8000">
a61af66fc99e Initial load
duke
parents:
diff changeset
3312 Abort the iteration. Ignore all other bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
3313 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3314 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3315
a61af66fc99e Initial load
duke
parents:
diff changeset
3316 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3317 The Heap Reference Enumeration is provided by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3318 <functionlink id="jvmtiHeapReferenceCallback">Heap
a61af66fc99e Initial load
duke
parents:
diff changeset
3319 Reference Callback</functionlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
3320 <functionlink id="jvmtiPrimitiveFieldCallback">Primitive Field
a61af66fc99e Initial load
duke
parents:
diff changeset
3321 Callback</functionlink> to
a61af66fc99e Initial load
duke
parents:
diff changeset
3322 describe the kind of reference
a61af66fc99e Initial load
duke
parents:
diff changeset
3323 being reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
3324
a61af66fc99e Initial load
duke
parents:
diff changeset
3325 <constants id="jvmtiHeapReferenceKind"
a61af66fc99e Initial load
duke
parents:
diff changeset
3326 label="Heap Reference Enumeration"
a61af66fc99e Initial load
duke
parents:
diff changeset
3327 kind="enum"
a61af66fc99e Initial load
duke
parents:
diff changeset
3328 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3329 <constant id="JVMTI_HEAP_REFERENCE_CLASS" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3330 Reference from an object to its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3331 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3332 <constant id="JVMTI_HEAP_REFERENCE_FIELD" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
3333 Reference from an object to the value of one of its instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
3334 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3335 <constant id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
3336 Reference from an array to one of its elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
3337 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3338 <constant id="JVMTI_HEAP_REFERENCE_CLASS_LOADER" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3339 Reference from a class to its class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
3340 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3341 <constant id="JVMTI_HEAP_REFERENCE_SIGNERS" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3342 Reference from a class to its signers array.
a61af66fc99e Initial load
duke
parents:
diff changeset
3343 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3344 <constant id="JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3345 Reference from a class to its protection domain.
a61af66fc99e Initial load
duke
parents:
diff changeset
3346 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3347 <constant id="JVMTI_HEAP_REFERENCE_INTERFACE" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3348 Reference from a class to one of its interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
3349 Note: interfaces are defined via a constant pool reference,
a61af66fc99e Initial load
duke
parents:
diff changeset
3350 so the referenced interfaces may also be reported with a
a61af66fc99e Initial load
duke
parents:
diff changeset
3351 <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
3352 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3353 <constant id="JVMTI_HEAP_REFERENCE_STATIC_FIELD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3354 Reference from a class to the value of one of its static fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
3355 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3356 <constant id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
3357 Reference from a class to a resolved entry in the constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
3358 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3359 <constant id="JVMTI_HEAP_REFERENCE_SUPERCLASS" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3360 Reference from a class to its superclass.
a61af66fc99e Initial load
duke
parents:
diff changeset
3361 A callback is bot sent if the superclass is <code>java.lang.Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3362 Note: loaded classes define superclasses via a constant pool
a61af66fc99e Initial load
duke
parents:
diff changeset
3363 reference, so the referenced superclass may also be reported with
a61af66fc99e Initial load
duke
parents:
diff changeset
3364 a <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
3365 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3366 <constant id="JVMTI_HEAP_REFERENCE_JNI_GLOBAL" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
3367 Heap root reference: JNI global reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3368 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3369 <constant id="JVMTI_HEAP_REFERENCE_SYSTEM_CLASS" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
3370 Heap root reference: System class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3371 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3372 <constant id="JVMTI_HEAP_REFERENCE_MONITOR" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
3373 Heap root reference: monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
3374 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3375 <constant id="JVMTI_HEAP_REFERENCE_STACK_LOCAL" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
3376 Heap root reference: local variable on the stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3377 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3378 <constant id="JVMTI_HEAP_REFERENCE_JNI_LOCAL" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
3379 Heap root reference: JNI local reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3380 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3381 <constant id="JVMTI_HEAP_REFERENCE_THREAD" num="26">
a61af66fc99e Initial load
duke
parents:
diff changeset
3382 Heap root reference: Thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
3383 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3384 <constant id="JVMTI_HEAP_REFERENCE_OTHER" num="27">
a61af66fc99e Initial load
duke
parents:
diff changeset
3385 Heap root reference: other heap root reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3386 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3387 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3388
a61af66fc99e Initial load
duke
parents:
diff changeset
3389 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3390 Definitions for the single character type descriptors of
a61af66fc99e Initial load
duke
parents:
diff changeset
3391 primitive types.
a61af66fc99e Initial load
duke
parents:
diff changeset
3392
a61af66fc99e Initial load
duke
parents:
diff changeset
3393 <constants id="jvmtiPrimitiveType"
a61af66fc99e Initial load
duke
parents:
diff changeset
3394 label="Primitive Type Enumeration"
a61af66fc99e Initial load
duke
parents:
diff changeset
3395 kind="enum"
a61af66fc99e Initial load
duke
parents:
diff changeset
3396 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3397 <constant id="JVMTI_PRIMITIVE_TYPE_BOOLEAN" num="90">
a61af66fc99e Initial load
duke
parents:
diff changeset
3398 'Z' - Java programming language <code>boolean</code> - JNI <code>jboolean</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3399 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3400 <constant id="JVMTI_PRIMITIVE_TYPE_BYTE" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
3401 'B' - Java programming language <code>byte</code> - JNI <code>jbyte</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3402 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3403 <constant id="JVMTI_PRIMITIVE_TYPE_CHAR" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
3404 'C' - Java programming language <code>char</code> - JNI <code>jchar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3405 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3406 <constant id="JVMTI_PRIMITIVE_TYPE_SHORT" num="83">
a61af66fc99e Initial load
duke
parents:
diff changeset
3407 'S' - Java programming language <code>short</code> - JNI <code>jshort</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3408 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3409 <constant id="JVMTI_PRIMITIVE_TYPE_INT" num="73">
a61af66fc99e Initial load
duke
parents:
diff changeset
3410 'I' - Java programming language <code>int</code> - JNI <code>jint</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3411 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3412 <constant id="JVMTI_PRIMITIVE_TYPE_LONG" num="74">
a61af66fc99e Initial load
duke
parents:
diff changeset
3413 'J' - Java programming language <code>long</code> - JNI <code>jlong</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3414 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3415 <constant id="JVMTI_PRIMITIVE_TYPE_FLOAT" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
3416 'F' - Java programming language <code>float</code> - JNI <code>jfloat</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3417 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3418 <constant id="JVMTI_PRIMITIVE_TYPE_DOUBLE" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
3419 'D' - Java programming language <code>double</code> - JNI <code>jdouble</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3420 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3421 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3422 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3423
a61af66fc99e Initial load
duke
parents:
diff changeset
3424 <typedef id="jvmtiHeapReferenceInfoField"
a61af66fc99e Initial load
duke
parents:
diff changeset
3425 label="Reference information structure for Field references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3426 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3427 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3428 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3429 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
3430 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3431 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3432 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3433 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3434 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3435 For <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>, the
a61af66fc99e Initial load
duke
parents:
diff changeset
3436 referrer object is not a class or an inteface.
a61af66fc99e Initial load
duke
parents:
diff changeset
3437 In this case, <code>index</code> is the index of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3438 in the class of the referrer object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3439 This class is referred to below as <i>C</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3440 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3441 For <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3442 the referrer object is a class (referred to below as <i>C</i>)
a61af66fc99e Initial load
duke
parents:
diff changeset
3443 or an interface (referred to below as <i>I</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
3444 In this case, <code>index</code> is the index of the field in
a61af66fc99e Initial load
duke
parents:
diff changeset
3445 that class or interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
3446 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3447 If the referrer object is not an interface, then the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3448 indices are determined as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
3449 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3450 <li>make a list of all the fields in <i>C</i> and its
a61af66fc99e Initial load
duke
parents:
diff changeset
3451 superclasses, starting with all the fields in
a61af66fc99e Initial load
duke
parents:
diff changeset
3452 <code>java.lang.Object</code> and ending with all the
a61af66fc99e Initial load
duke
parents:
diff changeset
3453 fields in <i>C</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3454 <li>Within this list, put
a61af66fc99e Initial load
duke
parents:
diff changeset
3455 the fields for a given class in the order returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
3456 <functionlink id="GetClassFields"/>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3457 <li>Assign the fields in this list indices
a61af66fc99e Initial load
duke
parents:
diff changeset
3458 <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
3459 is the count of the fields in all the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3460 implemented by <i>C</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3461 Note that <i>C</i> implements all interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3462 directly implemented by its superclasses; as well
a61af66fc99e Initial load
duke
parents:
diff changeset
3463 as all superinterfaces of these interfaces.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3464 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3465 If the referrer object is an interface, then the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3466 indices are determined as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
3467 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3468 <li>make a list of the fields directly declared in
a61af66fc99e Initial load
duke
parents:
diff changeset
3469 <i>I</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3470 <li>Within this list, put
a61af66fc99e Initial load
duke
parents:
diff changeset
3471 the fields in the order returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
3472 <functionlink id="GetClassFields"/>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3473 <li>Assign the fields in this list indices
a61af66fc99e Initial load
duke
parents:
diff changeset
3474 <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
3475 is the count of the fields in all the superinterfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3476 of <i>I</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3477 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3478 All fields are included in this computation, regardless of
a61af66fc99e Initial load
duke
parents:
diff changeset
3479 field modifier (static, public, private, etc).
a61af66fc99e Initial load
duke
parents:
diff changeset
3480 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3481 For example, given the following classes and interfaces:
a61af66fc99e Initial load
duke
parents:
diff changeset
3482 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
3483 interface I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3484 int p = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
3485 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3486
a61af66fc99e Initial load
duke
parents:
diff changeset
3487 interface I1 extends I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3488 int x = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
3489 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3490
a61af66fc99e Initial load
duke
parents:
diff changeset
3491 interface I2 extends I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3492 int y = 2;
a61af66fc99e Initial load
duke
parents:
diff changeset
3493 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3494
a61af66fc99e Initial load
duke
parents:
diff changeset
3495 class C1 implements I1 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3496 public static int a = 3;
a61af66fc99e Initial load
duke
parents:
diff changeset
3497 private int b = 4;
a61af66fc99e Initial load
duke
parents:
diff changeset
3498 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3499
a61af66fc99e Initial load
duke
parents:
diff changeset
3500 class C2 extends C1 implements I2 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3501 static int q = 5;
a61af66fc99e Initial load
duke
parents:
diff changeset
3502 final int r = 6;
a61af66fc99e Initial load
duke
parents:
diff changeset
3503 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3504 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
3505 Assume that <functionlink id="GetClassFields"/> called on
a61af66fc99e Initial load
duke
parents:
diff changeset
3506 <code>C1</code> returns the fields of <code>C1</code> in the
a61af66fc99e Initial load
duke
parents:
diff changeset
3507 order: a, b; and that the fields of <code>C2</code> are
a61af66fc99e Initial load
duke
parents:
diff changeset
3508 returned in the order: q, r.
a61af66fc99e Initial load
duke
parents:
diff changeset
3509 An instance of class <code>C1</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3510 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3511 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3512 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3513 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3514 a
a61af66fc99e Initial load
duke
parents:
diff changeset
3515 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3516 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3517 2
a61af66fc99e Initial load
duke
parents:
diff changeset
3518 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3519 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3520 The count of the fields in the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3521 implemented by <code>C1</code> is two (<i>n</i>=2):
a61af66fc99e Initial load
duke
parents:
diff changeset
3522 <code>p</code> of <code>I0</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3523 and <code>x</code> of <code>I1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3524 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3525 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3526 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3527 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3528 b
a61af66fc99e Initial load
duke
parents:
diff changeset
3529 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3530 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3531 3
a61af66fc99e Initial load
duke
parents:
diff changeset
3532 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3533 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3534 the subsequent index.
a61af66fc99e Initial load
duke
parents:
diff changeset
3535 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3536 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3537 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3538 The class <code>C1</code> will have the same field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
3539 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3540 An instance of class <code>C2</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3541 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3542 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3543 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3544 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3545 a
a61af66fc99e Initial load
duke
parents:
diff changeset
3546 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3547 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3548 3
a61af66fc99e Initial load
duke
parents:
diff changeset
3549 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3550 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3551 The count of the fields in the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3552 implemented by <code>C2</code> is three (<i>n</i>=3):
a61af66fc99e Initial load
duke
parents:
diff changeset
3553 <code>p</code> of <code>I0</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3554 <code>x</code> of <code>I1</code> and <code>y</code> of <code>I2</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3555 (an interface of <code>C2</code>). Note that the field <code>p</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3556 of <code>I0</code> is only included once.
a61af66fc99e Initial load
duke
parents:
diff changeset
3557 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3558 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3559 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3560 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3561 b
a61af66fc99e Initial load
duke
parents:
diff changeset
3562 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3563 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3564 4
a61af66fc99e Initial load
duke
parents:
diff changeset
3565 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3566 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3567 the subsequent index to "a".
a61af66fc99e Initial load
duke
parents:
diff changeset
3568 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3569 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3570 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3571 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3572 q
a61af66fc99e Initial load
duke
parents:
diff changeset
3573 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3574 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3575 5
a61af66fc99e Initial load
duke
parents:
diff changeset
3576 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3577 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3578 the subsequent index to "b".
a61af66fc99e Initial load
duke
parents:
diff changeset
3579 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3580 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3581 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3582 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3583 r
a61af66fc99e Initial load
duke
parents:
diff changeset
3584 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3585 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3586 6
a61af66fc99e Initial load
duke
parents:
diff changeset
3587 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3588 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3589 the subsequent index to "q".
a61af66fc99e Initial load
duke
parents:
diff changeset
3590 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3591 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3592 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3593 The class <code>C2</code> will have the same field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
3594 Note that a field may have a different index depending on the
a61af66fc99e Initial load
duke
parents:
diff changeset
3595 object that is viewing it -- for example field "a" above.
a61af66fc99e Initial load
duke
parents:
diff changeset
3596 Note also: not all field indices may be visible from the
a61af66fc99e Initial load
duke
parents:
diff changeset
3597 callbacks, but all indices are shown for illustrative purposes.
a61af66fc99e Initial load
duke
parents:
diff changeset
3598 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3599 The interface <code>I1</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3600 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3601 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3602 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3603 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3604 x
a61af66fc99e Initial load
duke
parents:
diff changeset
3605 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3606 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3607 1
a61af66fc99e Initial load
duke
parents:
diff changeset
3608 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3609 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3610 The count of the fields in the superinterfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3611 of <code>I1</code> is one (<i>n</i>=1):
a61af66fc99e Initial load
duke
parents:
diff changeset
3612 <code>p</code> of <code>I0</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3613 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3614 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3615 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3616 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3617 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3618 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3619
a61af66fc99e Initial load
duke
parents:
diff changeset
3620 <typedef id="jvmtiHeapReferenceInfoArray"
a61af66fc99e Initial load
duke
parents:
diff changeset
3621 label="Reference information structure for Array references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3622 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3623 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3624 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3625 <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3626 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3627 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3628 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3629 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3630 The array index.
a61af66fc99e Initial load
duke
parents:
diff changeset
3631 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3632 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3633 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3634
a61af66fc99e Initial load
duke
parents:
diff changeset
3635 <typedef id="jvmtiHeapReferenceInfoConstantPool"
a61af66fc99e Initial load
duke
parents:
diff changeset
3636 label="Reference information structure for Constant Pool references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3637 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3638 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3639 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3640 <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3641 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3642 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3643 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3644 <description>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
3645 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
3646 <vmspec chapter="4.4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3647 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3648 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3649 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3650
a61af66fc99e Initial load
duke
parents:
diff changeset
3651 <typedef id="jvmtiHeapReferenceInfoStackLocal"
a61af66fc99e Initial load
duke
parents:
diff changeset
3652 label="Reference information structure for Local Variable references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3653 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3654 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3655 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3656 <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3657 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3658 <field id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
3659 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3660 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3661 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3662 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3663 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3664 <field id="thread_id">
a61af66fc99e Initial load
duke
parents:
diff changeset
3665 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3666 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3667 The unique thread ID of the thread corresponding to this stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3668 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3669 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3670 <field id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
3671 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3672 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3673 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3674 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3675 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3676 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
3677 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3678 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3679 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3680 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3681 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3682 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
3683 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3684 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3685 The currently executing location in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3686 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3687 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3688 <field id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
3689 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3690 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3691 The slot number of the local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
3692 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3693 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3694 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3695
a61af66fc99e Initial load
duke
parents:
diff changeset
3696 <typedef id="jvmtiHeapReferenceInfoJniLocal"
a61af66fc99e Initial load
duke
parents:
diff changeset
3697 label="Reference information structure for JNI local references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3698 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3699 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3700 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3701 <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3702 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3703 <field id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
3704 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3705 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3706 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3707 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3708 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3709 <field id="thread_id">
a61af66fc99e Initial load
duke
parents:
diff changeset
3710 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3711 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3712 The unique thread ID of the thread corresponding to this stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3713 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3714 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3715 <field id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
3716 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3717 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3718 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3719 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3720 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3721 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
3722 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3723 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3724 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3725 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3726 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3727 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3728
a61af66fc99e Initial load
duke
parents:
diff changeset
3729 <typedef id="jvmtiHeapReferenceInfoReserved"
a61af66fc99e Initial load
duke
parents:
diff changeset
3730 label="Reference information structure for Other references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3731 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3732 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3733 Reference information returned for other references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3734 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3735 <field id="reserved1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3736 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3737 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3738 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3739 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3740 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3741 <field id="reserved2">
a61af66fc99e Initial load
duke
parents:
diff changeset
3742 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3743 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3744 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3745 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3746 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3747 <field id="reserved3">
a61af66fc99e Initial load
duke
parents:
diff changeset
3748 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3749 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3750 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3751 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3752 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3753 <field id="reserved4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3754 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3755 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3756 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3757 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3758 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3759 <field id="reserved5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3760 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3761 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3762 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3763 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3764 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3765 <field id="reserved6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3766 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3767 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3768 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3769 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3770 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3771 <field id="reserved7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3772 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3773 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3774 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3775 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3776 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3777 <field id="reserved8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3778 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3779 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3780 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3781 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3782 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3783 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3784
a61af66fc99e Initial load
duke
parents:
diff changeset
3785 <uniontypedef id="jvmtiHeapReferenceInfo"
a61af66fc99e Initial load
duke
parents:
diff changeset
3786 label="Reference information structure"
a61af66fc99e Initial load
duke
parents:
diff changeset
3787 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3788 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3789 The information returned about referrers.
a61af66fc99e Initial load
duke
parents:
diff changeset
3790 Represented as a union of the various kinds of reference information.
a61af66fc99e Initial load
duke
parents:
diff changeset
3791 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3792 <field id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
3793 <struct>jvmtiHeapReferenceInfoField</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3794 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3795 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3796 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3797 and <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3798 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3799 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3800 <field id="array">
a61af66fc99e Initial load
duke
parents:
diff changeset
3801 <struct>jvmtiHeapReferenceInfoArray</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3802 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3803 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3804 For <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3805 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3806 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3807 <field id="constant_pool">
a61af66fc99e Initial load
duke
parents:
diff changeset
3808 <struct>jvmtiHeapReferenceInfoConstantPool</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3809 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3810 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3811 For <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3812 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3813 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3814 <field id="stack_local">
a61af66fc99e Initial load
duke
parents:
diff changeset
3815 <struct>jvmtiHeapReferenceInfoStackLocal</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3816 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3817 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3818 For <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3819 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3820 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3821 <field id="jni_local">
a61af66fc99e Initial load
duke
parents:
diff changeset
3822 <struct>jvmtiHeapReferenceInfoJniLocal</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3823 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3824 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3825 For <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3826 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3827 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3828 <field id="other">
a61af66fc99e Initial load
duke
parents:
diff changeset
3829 <struct>jvmtiHeapReferenceInfoReserved</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3830 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3831 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3832 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3833 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3834 </uniontypedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3835
a61af66fc99e Initial load
duke
parents:
diff changeset
3836 <typedef id="jvmtiHeapCallbacks"
a61af66fc99e Initial load
duke
parents:
diff changeset
3837 label="Heap callback function structure"
a61af66fc99e Initial load
duke
parents:
diff changeset
3838 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3839 <field id="heap_iteration_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3840 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3841 <struct>jvmtiHeapIterationCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3842 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3843 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3844 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3845 object in the heap. Used by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3846 <functionlink id="IterateThroughHeap"/> function, ignored by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3847 <functionlink id="FollowReferences"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3848 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3849 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3850 <field id="heap_reference_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3851 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3852 <struct>jvmtiHeapReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3853 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3854 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3855 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3856 object reference. Used by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3857 <functionlink id="FollowReferences"/> function, ignored by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3858 <functionlink id="IterateThroughHeap"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3859 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3860 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3861 <field id="primitive_field_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3862 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3863 <struct>jvmtiPrimitiveFieldCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3864 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3865 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3866 The callback to be called to describe a
a61af66fc99e Initial load
duke
parents:
diff changeset
3867 primitive field.
a61af66fc99e Initial load
duke
parents:
diff changeset
3868 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3869 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3870 <field id="array_primitive_value_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3871 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3872 <struct>jvmtiArrayPrimitiveValueCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3873 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3874 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3875 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3876 array of primitive values.
a61af66fc99e Initial load
duke
parents:
diff changeset
3877 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3878 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3879 <field id="string_primitive_value_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3880 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3881 <struct>jvmtiStringPrimitiveValueCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3882 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3883 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3884 The callback to be called to describe a String value.
a61af66fc99e Initial load
duke
parents:
diff changeset
3885 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3886 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3887 <field id="reserved5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3888 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3889 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3890 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3891 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3892 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3893 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3894 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3895 <field id="reserved6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3896 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3897 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3898 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3899 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3900 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3901 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3902 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3903 <field id="reserved7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3904 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3905 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3906 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3907 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3908 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3909 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3910 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3911 <field id="reserved8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3912 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3913 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3914 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3915 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3916 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3917 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3918 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3919 <field id="reserved9">
a61af66fc99e Initial load
duke
parents:
diff changeset
3920 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3921 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3922 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3923 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3924 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3925 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3926 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3927 <field id="reserved10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3928 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3929 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3930 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3931 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3932 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3933 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3934 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3935 <field id="reserved11">
a61af66fc99e Initial load
duke
parents:
diff changeset
3936 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3937 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3938 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3939 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3940 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3941 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3942 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3943 <field id="reserved12">
a61af66fc99e Initial load
duke
parents:
diff changeset
3944 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3945 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3946 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3947 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3948 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3949 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3950 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3951 <field id="reserved13">
a61af66fc99e Initial load
duke
parents:
diff changeset
3952 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3953 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3954 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3955 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3956 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3957 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3958 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3959 <field id="reserved14">
a61af66fc99e Initial load
duke
parents:
diff changeset
3960 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3961 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3962 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3963 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3964 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3965 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3966 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3967 <field id="reserved15">
a61af66fc99e Initial load
duke
parents:
diff changeset
3968 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3969 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3970 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3971 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3972 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3973 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3974 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3975 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3976
a61af66fc99e Initial load
duke
parents:
diff changeset
3977
a61af66fc99e Initial load
duke
parents:
diff changeset
3978 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3979 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
3980 The heap dumping functionality (below) uses a callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3981 for each object. While it would seem that a buffered approach
a61af66fc99e Initial load
duke
parents:
diff changeset
3982 would provide better throughput, tests do
a61af66fc99e Initial load
duke
parents:
diff changeset
3983 not show this to be the case--possibly due to locality of
a61af66fc99e Initial load
duke
parents:
diff changeset
3984 memory reference or array access overhead.
a61af66fc99e Initial load
duke
parents:
diff changeset
3985 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
3986
a61af66fc99e Initial load
duke
parents:
diff changeset
3987 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3988 Still under investigation as to if java.lang.ref references
a61af66fc99e Initial load
duke
parents:
diff changeset
3989 are reported as a different type of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3990 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3991
a61af66fc99e Initial load
duke
parents:
diff changeset
3992 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3993 Should or can an indication of the cost or relative cost of
a61af66fc99e Initial load
duke
parents:
diff changeset
3994 these operations be included?
a61af66fc99e Initial load
duke
parents:
diff changeset
3995 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3996
a61af66fc99e Initial load
duke
parents:
diff changeset
3997 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3998
a61af66fc99e Initial load
duke
parents:
diff changeset
3999 <callback id="jvmtiHeapIterationCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4000 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4001 <synopsis>Heap Iteration Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4002 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4003 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4004 Describes (but does not pass in) an object in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
4005 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4006 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4007 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4008 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4009 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4010 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4011 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4012 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4013 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4014 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4015 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4016 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4017 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4018 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4019 If the object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4020 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4021 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4022 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4023 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4024 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4025 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4026 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4027 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4028 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4029 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4030 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4031 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4032 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4033 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4034 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4035 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4036 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4037 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4038 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4039 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4040 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4041 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4042 If this object is an array, the length of the array. Otherwise negative one (-1).
a61af66fc99e Initial load
duke
parents:
diff changeset
4043 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4044 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4045 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4046 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4047 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4048 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4049 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4050 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4051 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4052 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4053
a61af66fc99e Initial load
duke
parents:
diff changeset
4054 <callback id="jvmtiHeapReferenceCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4055 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4056 <synopsis>Heap Reference Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4057 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4058 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4059 Describes a reference from an object or the VM (the referrer) to another object
a61af66fc99e Initial load
duke
parents:
diff changeset
4060 (the referree) or a heap root to a referree.
a61af66fc99e Initial load
duke
parents:
diff changeset
4061 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4062 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4063 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4064 This will determine if the objects referenced by the referree
a61af66fc99e Initial load
duke
parents:
diff changeset
4065 should be visited or if the entire iteration should be aborted.
a61af66fc99e Initial load
duke
parents:
diff changeset
4066 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4067 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4068 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4069 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4070 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4071 <param id="reference_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
4072 <enum>jvmtiHeapReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4073 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4074 The kind of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4075 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4076 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4077 <param id="reference_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
4078 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4079 <struct>jvmtiHeapReferenceInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4080 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4081 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4082 Details about the reference.
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4083 Set when the <datalink id="jvmtiHeapReferenceCallback.reference_kind">reference_kind</datalink> is
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4084 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4085 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4086 <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4087 <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4088 <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4089 or <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4090 Otherwise <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4091 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4092 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4093 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4094 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4095 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4096 The tag of the class of referree object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4097 If the referree object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4098 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4099 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4100 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4101 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4102 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4103 <param id="referrer_class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4104 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4105 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4106 The tag of the class of the referrer object (zero if the class is not tagged
a61af66fc99e Initial load
duke
parents:
diff changeset
4107 or the referree is a heap root). If the referrer object represents a runtime
a61af66fc99e Initial load
duke
parents:
diff changeset
4108 class, the <code>referrer_class_tag</code> is the tag associated with
a61af66fc99e Initial load
duke
parents:
diff changeset
4109 the <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4110 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4111 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4112 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4113 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4114 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4115 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4116 Size of the referree object (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4117 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4118 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4119 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4120 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4121 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4122 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4123 Points to the referree object tag value, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4124 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4125 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4126 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4127 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4128 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4129 <param id="referrer_tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4130 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4131 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4132 Points to the tag of the referrer object, or
a61af66fc99e Initial load
duke
parents:
diff changeset
4133 points to the zero if the referrer
a61af66fc99e Initial load
duke
parents:
diff changeset
4134 object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4135 <code>NULL</code> if the referrer in not an object (that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
4136 this callback is reporting a heap root).
a61af66fc99e Initial load
duke
parents:
diff changeset
4137 To set the tag value to be associated with the referrer object
a61af66fc99e Initial load
duke
parents:
diff changeset
4138 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4139 If this callback is reporting a reference from an object to itself,
a61af66fc99e Initial load
duke
parents:
diff changeset
4140 <code>referrer_tag_ptr == tag_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4141 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4142 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4143 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4144 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4145 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4146 If this object is an array, the length of the array. Otherwise negative one (-1).
a61af66fc99e Initial load
duke
parents:
diff changeset
4147 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4148 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4149 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4150 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4151 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4152 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4153 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4154 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4155 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4156 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4157
a61af66fc99e Initial load
duke
parents:
diff changeset
4158 <callback id="jvmtiPrimitiveFieldCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4159 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4160 <synopsis>Primitive Field Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4161 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4162 Agent supplied callback function which
a61af66fc99e Initial load
duke
parents:
diff changeset
4163 describes a primitive field of an object (<i>the object</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
4164 A primitive field is a field whose type is a primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
4165 This callback will describe a static field if the object is a class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4166 and otherwise will describe an instance field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4167 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4168 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4169 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4170 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4171 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4172 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4173 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4174 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4175 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4176 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4177 <param id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
4178 <enum>jvmtiHeapReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4179 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4180 The kind of field -- instance or static (<datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4181 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
4182 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4183 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4184 <param id="info">
a61af66fc99e Initial load
duke
parents:
diff changeset
4185 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4186 <struct>jvmtiHeapReferenceInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4187 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4188 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4189 Which field (the field index).
a61af66fc99e Initial load
duke
parents:
diff changeset
4190 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4191 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4192 <param id="object_class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4193 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4194 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4195 The tag of the class of the object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4196 If the object represents a runtime class, the
a61af66fc99e Initial load
duke
parents:
diff changeset
4197 <code>object_class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4198 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4199 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4200 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4201 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4202 <param id="object_tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4203 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4204 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4205 Points to the tag of the object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4206 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4207 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4208 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4209 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4210 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4211 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
4212 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4213 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4214 The value of the field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4215 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4216 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4217 <param id="value_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
4218 <enum>jvmtiPrimitiveType</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4219 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4220 The type of the field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4221 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4222 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4223 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4224 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4225 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4226 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4227 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4228 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4229 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4230 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4231
a61af66fc99e Initial load
duke
parents:
diff changeset
4232 <callback id="jvmtiArrayPrimitiveValueCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4233 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4234 <synopsis>Array Primitive Value Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4235 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4236 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4237 Describes the values in an array of a primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
4238 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4239 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4240 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4241 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4242 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4243 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4244 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4245 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4246 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4247 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4248 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4249 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4250 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4251 The tag of the class of the array object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4252 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4253 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4254 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4255 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4256 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4257 Size of the array (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4258 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4259 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4260 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4261 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4262 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4263 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4264 Points to the tag of the array object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4265 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4266 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4267 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4268 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4269 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4270 <param id="element_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4271 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4272 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4273 The length of the primitive array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4274 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4275 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4276 <param id="element_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
4277 <enum>jvmtiPrimitiveType</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4278 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4279 The type of the elements of the array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4280 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4281 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4282 <param id="elements">
a61af66fc99e Initial load
duke
parents:
diff changeset
4283 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4284 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4285 The elements of the array in a packed array of <code>element_count</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4286 items of <code>element_type</code> size each.
a61af66fc99e Initial load
duke
parents:
diff changeset
4287 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4288 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4289 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4290 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4291 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4292 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4293 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4294 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4295 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4296 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4297
a61af66fc99e Initial load
duke
parents:
diff changeset
4298 <callback id="jvmtiStringPrimitiveValueCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4299 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4300 <synopsis>String Primitive Value Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4301 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4302 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4303 Describes the value of a java.lang.String.
a61af66fc99e Initial load
duke
parents:
diff changeset
4304 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4305 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4306 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4307 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4308 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4309 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4310 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4311 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4312 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4313 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4314 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4315 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4316 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4317 The tag of the class of the String class (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4318 <issue>Is this needed?</issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
4319 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4320 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4321 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4322 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4323 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4324 Size of the string (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4325 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4326 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4327 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4328 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4329 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4330 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4331 Points to the tag of the String object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4332 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4333 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4334 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4335 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4336 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4337 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
4338 <vmbuf><jchar/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4339 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4340 The value of the String, encoded as a Unicode string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4341 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4342 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4343 <param id="value_length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4344 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4345 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4346 The length of the string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4347 The length is equal to the number of 16-bit Unicode
a61af66fc99e Initial load
duke
parents:
diff changeset
4348 characters in the string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4349 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4350 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4351 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4352 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4353 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4354 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4355 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4356 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4357 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4358 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4359
a61af66fc99e Initial load
duke
parents:
diff changeset
4360
a61af66fc99e Initial load
duke
parents:
diff changeset
4361 <callback id="jvmtiReservedCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4362 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4363 <synopsis>reserved for future use Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4364 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4365 Placeholder -- reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
4366 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4367 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4368 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4369 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4370
a61af66fc99e Initial load
duke
parents:
diff changeset
4371 <function id="FollowReferences" num="115" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4372 <synopsis>Follow References</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4373 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4374 This function initiates a traversal over the objects that are
a61af66fc99e Initial load
duke
parents:
diff changeset
4375 directly and indirectly reachable from the specified object or,
a61af66fc99e Initial load
duke
parents:
diff changeset
4376 if <code>initial_object</code> is not specified, all objects
a61af66fc99e Initial load
duke
parents:
diff changeset
4377 reachable from the heap roots.
a61af66fc99e Initial load
duke
parents:
diff changeset
4378 The heap root are the set of system classes,
a61af66fc99e Initial load
duke
parents:
diff changeset
4379 JNI globals, references from thread stacks, and other objects used as roots
a61af66fc99e Initial load
duke
parents:
diff changeset
4380 for the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
4381 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4382 This function operates by traversing the reference graph.
a61af66fc99e Initial load
duke
parents:
diff changeset
4383 Let <i>A</i>, <i>B</i>, ... represent objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
4384 When a reference from <i>A</i> to <i>B</i> is traversed,
a61af66fc99e Initial load
duke
parents:
diff changeset
4385 when a reference from a heap root to <i>B</i> is traversed,
a61af66fc99e Initial load
duke
parents:
diff changeset
4386 or when <i>B</i> is specified as the <paramlink id="initial_object"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4387 then <i>B</i> is said to be <i>visited</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4388 A reference from <i>A</i> to <i>B</i> is not traversed until <i>A</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
4389 is visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4390 References are reported in the same order that the references are traversed.
a61af66fc99e Initial load
duke
parents:
diff changeset
4391 Object references are reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4392 callback function <functionlink id="jvmtiHeapReferenceCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4393 In a reference from <i>A</i> to <i>B</i>, <i>A</i> is known
a61af66fc99e Initial load
duke
parents:
diff changeset
4394 as the <i>referrer</i> and <i>B</i> as the <i>referree</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4395 The callback is invoked exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
4396 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
4397 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
4398 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
4399 each reference is reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4400 These references may be distinguished by examining the
a61af66fc99e Initial load
duke
parents:
diff changeset
4401 <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
4402 id="jvmtiHeapReferenceCallback.reference_kind"><code>reference_kind</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4403 and
a61af66fc99e Initial load
duke
parents:
diff changeset
4404 <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
4405 id="jvmtiHeapReferenceCallback.reference_info"><code>reference_info</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4406 parameters of the <functionlink id="jvmtiHeapReferenceCallback"/> callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4407 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4408 This function reports a Java programming language view of object references,
a61af66fc99e Initial load
duke
parents:
diff changeset
4409 not a virtual machine implementation view. The following object references
a61af66fc99e Initial load
duke
parents:
diff changeset
4410 are reported when they are non-null:
a61af66fc99e Initial load
duke
parents:
diff changeset
4411 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4412 <li>Instance objects report references to each non-primitive instance fields
a61af66fc99e Initial load
duke
parents:
diff changeset
4413 (including inherited fields).</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4414 <li>Instance objects report a reference to the object type (class).</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4415 <li>Classes report a reference to the superclass and directly
a61af66fc99e Initial load
duke
parents:
diff changeset
4416 implemented/extended interfaces.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4417 <li>Classes report a reference to the class loader, protection domain,
a61af66fc99e Initial load
duke
parents:
diff changeset
4418 signers, and resolved entries in the constant pool.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4419 <li>Classes report a reference to each directly declared non-primitive
a61af66fc99e Initial load
duke
parents:
diff changeset
4420 static field.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4421 <li>Arrays report a reference to the array type (class) and each
a61af66fc99e Initial load
duke
parents:
diff changeset
4422 array element.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4423 <li>Primitive arrays report a reference to the array type.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4424 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4425 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4426 This function can also be used to examine primitive (non-object) values.
a61af66fc99e Initial load
duke
parents:
diff changeset
4427 The primitive value of an array or String
a61af66fc99e Initial load
duke
parents:
diff changeset
4428 is reported after the object has been visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4429 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4430 <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4431 <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4432 A primitive field
a61af66fc99e Initial load
duke
parents:
diff changeset
4433 is reported after the object with that field is visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4434 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4435 <functionlink id="jvmtiPrimitiveFieldCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4436 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4437 Whether a callback is provided or is <code>NULL</code> only determines
a61af66fc99e Initial load
duke
parents:
diff changeset
4438 whether the callback will be invoked, it does not influence
a61af66fc99e Initial load
duke
parents:
diff changeset
4439 which objects are visited nor does it influence whether other callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
4440 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
4441 However, the
a61af66fc99e Initial load
duke
parents:
diff changeset
4442 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4443 returned by <functionlink id="jvmtiHeapReferenceCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4444 do determine if the objects referenced by the
a61af66fc99e Initial load
duke
parents:
diff changeset
4445 current object as visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4446 The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4447 and <paramlink id="klass"/> provided as parameters to this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4448 do not control which objects are visited but they do control which
a61af66fc99e Initial load
duke
parents:
diff changeset
4449 objects and primitive values are reported by the callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4450 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
4451 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4452 is set to the array of bytes class, then only arrays of byte will be
a61af66fc99e Initial load
duke
parents:
diff changeset
4453 reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4454 The table below summarizes this:
a61af66fc99e Initial load
duke
parents:
diff changeset
4455 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4456 <table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4457 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4458 <th/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4459 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4460 Controls objects visited
a61af66fc99e Initial load
duke
parents:
diff changeset
4461 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4462 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4463 Controls objects reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4464 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4465 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4466 Controls primitives reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4467 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4468 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4469 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4470 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4471 the
a61af66fc99e Initial load
duke
parents:
diff changeset
4472 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4473 returned by <functionlink id="jvmtiHeapReferenceCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4474 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4475 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4476 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4477 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4478 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4479 <b>Yes</b>, since visits are controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
4480 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4481 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4482 <b>Yes</b>, since visits are controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
4483 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4484 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4485 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4486 <th align="left">
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4487 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4488 in <paramlink id="callbacks"/> set
a61af66fc99e Initial load
duke
parents:
diff changeset
4489 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4490 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4491 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4492 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4493 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4494 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4495 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4496 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4497 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4498 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4499 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4500 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4501 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4502 <paramlink id="heap_filter"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4503 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4504 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4505 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4506 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4507 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4508 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4509 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4510 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4511 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4512 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4513 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4514 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4515 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4516 <paramlink id="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4517 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4518 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4519 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4520 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4521 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4522 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4523 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4524 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4525 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4526 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4527 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4528 </table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4529 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4530 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
4531 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
4532 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
4533 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
4534 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
4535 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
4536 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
4537 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
4538 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4539 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4540 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4541 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4542 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4543 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4544 <param id="heap_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
4545 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4546 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4547 This bit vector of
a61af66fc99e Initial load
duke
parents:
diff changeset
4548 <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4549 restricts the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
4550 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4551 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4552 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4553 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
4554 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4555 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4556 <nullok>callbacks are not limited to instances of a particular
a61af66fc99e Initial load
duke
parents:
diff changeset
4557 class</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4558 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4559 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4560 Callbacks are only reported when the object is an instance of
a61af66fc99e Initial load
duke
parents:
diff changeset
4561 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4562 Objects which are instances of a subclass of <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4563 are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4564 If <code>klass</code> is an interface, no objects are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4565 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4566 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4567 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4568 <param id="initial_object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4569 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4570 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4571 <nullok>references are followed from the heap roots</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4572 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4573 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4574 The object to follow
a61af66fc99e Initial load
duke
parents:
diff changeset
4575 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4576 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4577 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
4578 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4579 <struct>jvmtiHeapCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4580 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4581 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4582 Structure defining the set of callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
4583 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4584 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4585 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4586 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4587 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4588 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4589 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4590 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4591 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4592 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4593 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4594 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4595 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4596 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
4597 <paramlink id="klass"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4598 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4599 <error id="JVMTI_ERROR_INVALID_OBJECT">
a61af66fc99e Initial load
duke
parents:
diff changeset
4600 <paramlink id="initial_object"/> is not a valid object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4601 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4602 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4603 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4604
a61af66fc99e Initial load
duke
parents:
diff changeset
4605
a61af66fc99e Initial load
duke
parents:
diff changeset
4606 <function id="IterateThroughHeap" num="116" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4607 <synopsis>Iterate Through Heap</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4608 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4609 Initiate an iteration over all objects in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
4610 This includes both reachable and
a61af66fc99e Initial load
duke
parents:
diff changeset
4611 unreachable objects. Objects are visited in no particular order.
a61af66fc99e Initial load
duke
parents:
diff changeset
4612 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4613 Heap objects are reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4614 callback function <functionlink id="jvmtiHeapIterationCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4615 References between objects are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4616 If only reachable objects are desired, or if object reference information
a61af66fc99e Initial load
duke
parents:
diff changeset
4617 is needed, use <functionlink id="FollowReferences"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4618 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4619 This function can also be used to examine primitive (non-object) values.
a61af66fc99e Initial load
duke
parents:
diff changeset
4620 The primitive value of an array or String
a61af66fc99e Initial load
duke
parents:
diff changeset
4621 is reported after the object has been visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4622 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4623 <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4624 <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4625 A primitive field
a61af66fc99e Initial load
duke
parents:
diff changeset
4626 is reported after the object with that field is visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4627 it is reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4628 callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4629 <functionlink id="jvmtiPrimitiveFieldCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4630 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4631 Unless the iteration is aborted by the
a61af66fc99e Initial load
duke
parents:
diff changeset
4632 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4633 returned by a callback, all objects in the heap are visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4634 Whether a callback is provided or is <code>NULL</code> only determines
a61af66fc99e Initial load
duke
parents:
diff changeset
4635 whether the callback will be invoked, it does not influence
a61af66fc99e Initial load
duke
parents:
diff changeset
4636 which objects are visited nor does it influence whether other callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
4637 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
4638 The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4639 and <paramlink id="klass"/> provided as parameters to this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4640 do not control which objects are visited but they do control which
a61af66fc99e Initial load
duke
parents:
diff changeset
4641 objects and primitive values are reported by the callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4642 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
4643 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4644 is set to the array of bytes class, then only arrays of byte will be
a61af66fc99e Initial load
duke
parents:
diff changeset
4645 reported. The table below summarizes this (contrast this with
a61af66fc99e Initial load
duke
parents:
diff changeset
4646 <functionlink id="FollowReferences"/>):
a61af66fc99e Initial load
duke
parents:
diff changeset
4647 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4648 <table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4649 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4650 <th/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4651 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4652 Controls objects visited
a61af66fc99e Initial load
duke
parents:
diff changeset
4653 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4654 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4655 Controls objects reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4656 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4657 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4658 Controls primitives reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4659 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4660 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4661 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4662 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4663 the
a61af66fc99e Initial load
duke
parents:
diff changeset
4664 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4665 returned by <functionlink id="jvmtiHeapIterationCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4666 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4667 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4668 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4669 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4670 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4671 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4672 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4673 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4674 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4675 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4676 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4677 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4678 <th align="left">
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4679 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4680 in <paramlink id="callbacks"/> set
a61af66fc99e Initial load
duke
parents:
diff changeset
4681 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4682 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4683 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4684 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4685 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4686 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4687 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4688 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4689 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4690 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4691 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4692 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4693 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4694 <paramlink id="heap_filter"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4695 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4696 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4697 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4698 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4699 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4700 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4701 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4702 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4703 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4704 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4705 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4706 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4707 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4708 <paramlink id="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4709 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4710 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4711 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4712 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4713 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4714 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4715 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4716 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4717 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4718 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4719 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4720 </table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4721 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4722 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
4723 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
4724 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
4725 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
4726 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
4727 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
4728 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
4729 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
4730 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4731 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4732 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4733 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4734 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4735 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4736 <param id="heap_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
4737 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4738 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4739 This bit vector of
a61af66fc99e Initial load
duke
parents:
diff changeset
4740 <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4741 restricts the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
4742 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4743 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4744 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4745 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
4746 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4747 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4748 <nullok>callbacks are not limited to instances of a particular class</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4749 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4750 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4751 Callbacks are only reported when the object is an instance of
a61af66fc99e Initial load
duke
parents:
diff changeset
4752 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4753 Objects which are instances of a subclass of <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4754 are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4755 If <code>klass</code> is an interface, no objects are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4756 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4757 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4758 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4759 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
4760 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4761 <struct>jvmtiHeapCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4762 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4763 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4764 Structure defining the set callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
4765 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4766 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4767 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4768 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4769 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4770 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4771 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4772 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4773 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4774 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4775 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4776 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4777 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4778 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
4779 <paramlink id="klass"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4780 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4781 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4782 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4783
a61af66fc99e Initial load
duke
parents:
diff changeset
4784 <function id="GetTag" phase="start" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
4785 <synopsis>Get Tag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4786 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4787 Retrieve the tag associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4788 The tag is a long value typically used to store a
a61af66fc99e Initial load
duke
parents:
diff changeset
4789 unique identifier or pointer to object information.
a61af66fc99e Initial load
duke
parents:
diff changeset
4790 The tag is set with
a61af66fc99e Initial load
duke
parents:
diff changeset
4791 <functionlink id="SetTag"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4792 Objects for which no tags have been set return a
a61af66fc99e Initial load
duke
parents:
diff changeset
4793 tag value of zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
4794 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4795 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4796 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4797 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4798 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4799 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4800 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4801 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4802 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4803 The object whose tag is to be retrieved.
a61af66fc99e Initial load
duke
parents:
diff changeset
4804 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4805 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4806 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4807 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4808 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4809 On return, the referenced long is set to the value
a61af66fc99e Initial load
duke
parents:
diff changeset
4810 of the tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
4811 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4812 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4813 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4814 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4815 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4816 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4817
a61af66fc99e Initial load
duke
parents:
diff changeset
4818 <function id="SetTag" phase="start" num="107">
a61af66fc99e Initial load
duke
parents:
diff changeset
4819 <synopsis>Set Tag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4820 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4821 Set the tag associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4822 The tag is a long value typically used to store a
a61af66fc99e Initial load
duke
parents:
diff changeset
4823 unique identifier or pointer to object information.
a61af66fc99e Initial load
duke
parents:
diff changeset
4824 The tag is visible with
a61af66fc99e Initial load
duke
parents:
diff changeset
4825 <functionlink id="GetTag"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4826 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4827 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4828 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4829 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4830 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4831 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4832 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4833 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4834 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4835 The object whose tag is to be set.
a61af66fc99e Initial load
duke
parents:
diff changeset
4836 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4837 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4838 <param id="tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4839 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4840 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4841 The new value of the tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
4842 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4843 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4844 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4845 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4846 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4847 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4848
a61af66fc99e Initial load
duke
parents:
diff changeset
4849 <function id="GetObjectsWithTags" num="114">
a61af66fc99e Initial load
duke
parents:
diff changeset
4850 <synopsis>Get Objects With Tags</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4851 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4852 Return objects in the heap with the specified tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4853 The format is parallel arrays of objects and tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4854 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4855 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4856 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4857 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4858 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4859 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4860 <param id="tag_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4861 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4862 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4863 Number of tags to scan for.
a61af66fc99e Initial load
duke
parents:
diff changeset
4864 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4865 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4866 <param id="tags">
a61af66fc99e Initial load
duke
parents:
diff changeset
4867 <inbuf incount="tag_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4868 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4869 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4870 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4871 Scan for objects with these tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4872 Zero is not permitted in this array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4873 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4874 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4875 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4876 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4877 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4878 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4879 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4880 Return the number of objects with any of the tags
a61af66fc99e Initial load
duke
parents:
diff changeset
4881 in <paramlink id="tags"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4882 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4883 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4884 <param id="object_result_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4885 <allocbuf outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4886 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4887 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4888 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4889 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4890 Returns the array of objects with any of the tags
a61af66fc99e Initial load
duke
parents:
diff changeset
4891 in <paramlink id="tags"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4892 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4893 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4894 <param id="tag_result_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4895 <allocbuf outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4896 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4897 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4898 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4899 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4900 For each object in <paramlink id="object_result_ptr"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4901 return the tag at the corresponding index.
a61af66fc99e Initial load
duke
parents:
diff changeset
4902 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4903 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4904 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4905 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4906 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
4907 Zero is present in <paramlink id="tags"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4908 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4909 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4910 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4911
a61af66fc99e Initial load
duke
parents:
diff changeset
4912 <function id="ForceGarbageCollection" num="108">
a61af66fc99e Initial load
duke
parents:
diff changeset
4913 <synopsis>Force Garbage Collection</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4914 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4915 Force the VM to perform a garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
4916 The garbage collection is as complete as possible.
a61af66fc99e Initial load
duke
parents:
diff changeset
4917 This function does not cause finalizers to be run.
a61af66fc99e Initial load
duke
parents:
diff changeset
4918 This function does not return until the garbage collection
a61af66fc99e Initial load
duke
parents:
diff changeset
4919 is finished.
a61af66fc99e Initial load
duke
parents:
diff changeset
4920 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4921 Although garbage collection is as complete
a61af66fc99e Initial load
duke
parents:
diff changeset
4922 as possible there is no guarantee that all
a61af66fc99e Initial load
duke
parents:
diff changeset
4923 <eventlink id="ObjectFree"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4924 events will have been
a61af66fc99e Initial load
duke
parents:
diff changeset
4925 sent by the time that this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4926 returns. In particular, an object may be
a61af66fc99e Initial load
duke
parents:
diff changeset
4927 prevented from being freed because it
a61af66fc99e Initial load
duke
parents:
diff changeset
4928 is awaiting finalization.
a61af66fc99e Initial load
duke
parents:
diff changeset
4929 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4930 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4931 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4932 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4933 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4934 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4935 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4936 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4937 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4938
a61af66fc99e Initial load
duke
parents:
diff changeset
4939
a61af66fc99e Initial load
duke
parents:
diff changeset
4940 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
4941
a61af66fc99e Initial load
duke
parents:
diff changeset
4942 <category id="Heap_1_0" label="Heap (1.0)">
a61af66fc99e Initial load
duke
parents:
diff changeset
4943 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
4944 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4945 These functions and data types were introduced in the original
a61af66fc99e Initial load
duke
parents:
diff changeset
4946 <jvmti/> version 1.0 and have been superseded by more
a61af66fc99e Initial load
duke
parents:
diff changeset
4947 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4948 <internallink id="Heap"><b>powerful and flexible versions</b></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4949 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4950 which:
a61af66fc99e Initial load
duke
parents:
diff changeset
4951 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4952 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4953 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4954 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4955 Allow access to primitive values (the value of Strings, arrays,
a61af66fc99e Initial load
duke
parents:
diff changeset
4956 and primitive fields)
a61af66fc99e Initial load
duke
parents:
diff changeset
4957 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4958 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4959 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4960 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4961 Allow the tag of the referrer to be set, thus enabling more
a61af66fc99e Initial load
duke
parents:
diff changeset
4962 efficient localized reference graph building
a61af66fc99e Initial load
duke
parents:
diff changeset
4963 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4964 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4965 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4966 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4967 Provide more extensive filtering abilities
a61af66fc99e Initial load
duke
parents:
diff changeset
4968 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4969 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4970 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4971 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4972 Are extensible, allowing their abilities to grow in future versions of <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4973 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4974 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4975 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4976 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4977 <b>Please use the </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4978 <internallink id="Heap"><b>current Heap functions</b></internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4979 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4980 <constants id="jvmtiHeapObjectFilter" label="Heap Object Filter Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4981 <constant id="JVMTI_HEAP_OBJECT_TAGGED" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4982 Tagged objects only.
a61af66fc99e Initial load
duke
parents:
diff changeset
4983 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4984 <constant id="JVMTI_HEAP_OBJECT_UNTAGGED" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4985 Untagged objects only.
a61af66fc99e Initial load
duke
parents:
diff changeset
4986 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4987 <constant id="JVMTI_HEAP_OBJECT_EITHER" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
4988 Either tagged or untagged objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
4989 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4990 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
4991
a61af66fc99e Initial load
duke
parents:
diff changeset
4992 <constants id="jvmtiHeapRootKind" label="Heap Root Kind Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4993 <constant id="JVMTI_HEAP_ROOT_JNI_GLOBAL" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4994 JNI global reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4995 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4996 <constant id="JVMTI_HEAP_ROOT_SYSTEM_CLASS" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4997 System class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4998 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4999 <constant id="JVMTI_HEAP_ROOT_MONITOR" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
5000 Monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
5001 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5002 <constant id="JVMTI_HEAP_ROOT_STACK_LOCAL" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
5003 Stack local.
a61af66fc99e Initial load
duke
parents:
diff changeset
5004 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5005 <constant id="JVMTI_HEAP_ROOT_JNI_LOCAL" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
5006 JNI local reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5007 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5008 <constant id="JVMTI_HEAP_ROOT_THREAD" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
5009 Thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
5010 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5011 <constant id="JVMTI_HEAP_ROOT_OTHER" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
5012 Other.
a61af66fc99e Initial load
duke
parents:
diff changeset
5013 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5014 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5015
a61af66fc99e Initial load
duke
parents:
diff changeset
5016 <constants id="jvmtiObjectReferenceKind" label="Object Reference Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
5017 <constant id="JVMTI_REFERENCE_CLASS" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
5018 Reference from an object to its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5019 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5020 <constant id="JVMTI_REFERENCE_FIELD" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
5021 Reference from an object to the value of one of its instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
5022 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5023 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5024 jvmtiObjectReferenceCallback</internallink> is the index of the
a61af66fc99e Initial load
duke
parents:
diff changeset
5025 the instance field. The index is based on the order of all the
a61af66fc99e Initial load
duke
parents:
diff changeset
5026 object's fields. This includes all fields of the directly declared
a61af66fc99e Initial load
duke
parents:
diff changeset
5027 static and instance fields in the class, and includes all fields (both
a61af66fc99e Initial load
duke
parents:
diff changeset
5028 public and private) fields declared in superclasses and superinterfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
5029 The index is thus calculated by summing the index of the field in the directly
a61af66fc99e Initial load
duke
parents:
diff changeset
5030 declared class (see <functionlink id="GetClassFields"/>), with the total
a61af66fc99e Initial load
duke
parents:
diff changeset
5031 number of fields (both public and private) declared in all superclasses
a61af66fc99e Initial load
duke
parents:
diff changeset
5032 and superinterfaces. The index starts at zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
5033 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5034 <constant id="JVMTI_REFERENCE_ARRAY_ELEMENT" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
5035 Reference from an array to one of its elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
5036 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5037 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5038 jvmtiObjectReferenceCallback</internallink> is the array index.
a61af66fc99e Initial load
duke
parents:
diff changeset
5039 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5040 <constant id="JVMTI_REFERENCE_CLASS_LOADER" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
5041 Reference from a class to its class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
5042 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5043 <constant id="JVMTI_REFERENCE_SIGNERS" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
5044 Reference from a class to its signers array.
a61af66fc99e Initial load
duke
parents:
diff changeset
5045 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5046 <constant id="JVMTI_REFERENCE_PROTECTION_DOMAIN" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
5047 Reference from a class to its protection domain.
a61af66fc99e Initial load
duke
parents:
diff changeset
5048 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5049 <constant id="JVMTI_REFERENCE_INTERFACE" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
5050 Reference from a class to one of its interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
5051 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5052 <constant id="JVMTI_REFERENCE_STATIC_FIELD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
5053 Reference from a class to the value of one of its static fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
5054 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5055 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5056 jvmtiObjectReferenceCallback</internallink> is the index of the
a61af66fc99e Initial load
duke
parents:
diff changeset
5057 the static field. The index is based on the order of all the
a61af66fc99e Initial load
duke
parents:
diff changeset
5058 object's fields. This includes all fields of the directly declared
a61af66fc99e Initial load
duke
parents:
diff changeset
5059 static and instance fields in the class, and includes all fields (both
a61af66fc99e Initial load
duke
parents:
diff changeset
5060 public and private) fields declared in superclasses and superinterfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
5061 The index is thus calculated by summing the index of the field in the directly
a61af66fc99e Initial load
duke
parents:
diff changeset
5062 declared class (see <functionlink id="GetClassFields"/>), with the total
a61af66fc99e Initial load
duke
parents:
diff changeset
5063 number of fields (both public and private) declared in all superclasses
a61af66fc99e Initial load
duke
parents:
diff changeset
5064 and superinterfaces. The index starts at zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
5065 Note: this definition differs from that in the <jvmti/> 1.0 Specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
5066 <rationale>No known implementations used the 1.0 definition.</rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
5067 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5068 <constant id="JVMTI_REFERENCE_CONSTANT_POOL" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
5069 Reference from a class to a resolved entry in the constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
5070 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5071 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5072 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
5073 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
5074 <vmspec chapter="4.4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
5075 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5076 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5077
a61af66fc99e Initial load
duke
parents:
diff changeset
5078 <constants id="jvmtiIterationControl" label="Iteration Control Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
5079 <constant id="JVMTI_ITERATION_CONTINUE" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
5080 Continue the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5081 If this is a reference iteration, follow the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5082 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5083 <constant id="JVMTI_ITERATION_IGNORE" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
5084 Continue the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5085 If this is a reference iteration, ignore the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5086 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5087 <constant id="JVMTI_ITERATION_ABORT" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
5088 Abort the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5089 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5090 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5091 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5092
a61af66fc99e Initial load
duke
parents:
diff changeset
5093 <callback id="jvmtiHeapObjectCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5094 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5095 <synopsis>Heap Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5096 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5097 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5098 Describes (but does not pass in) an object in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
5099 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5100 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5101 or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5102 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5103 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5104 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5105 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5106 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5107 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5108 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5109 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5110 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5111 If the object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
5112 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5113 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5114 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5115 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5116 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5117 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5118 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5119 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5120 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5121 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5122 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5123 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5124 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5125 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5126 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5127 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5128 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5129 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5130 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5131 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5132 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5133 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5134 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5135 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5136 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5137 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5138 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5139
a61af66fc99e Initial load
duke
parents:
diff changeset
5140 <callback id="jvmtiHeapRootCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5141 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5142 <synopsis>Heap Root Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5143 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5144 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5145 Describes (but does not pass in) an object that is a root for the purposes
a61af66fc99e Initial load
duke
parents:
diff changeset
5146 of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5147 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5148 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5149 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5150 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5151 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5152 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5153 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5154 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5155 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5156 <param id="root_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5157 <enum>jvmtiHeapRootKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5158 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5159 The kind of heap root.
a61af66fc99e Initial load
duke
parents:
diff changeset
5160 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5161 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5162 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5163 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5164 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5165 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5166 If the object represents a runtime class, the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5167 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5168 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5169 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5170 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5171 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5172 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5173 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5174 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5175 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5176 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5177 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5178 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5179 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5180 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5181 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5182 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5183 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5184 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5185 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5186 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5187 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5188 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5189 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5190 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5191 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5192 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5193
a61af66fc99e Initial load
duke
parents:
diff changeset
5194 <callback id="jvmtiStackReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5195 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5196 <synopsis>Stack Reference Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5197 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5198 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5199 Describes (but does not pass in) an object on the stack that is a root for
a61af66fc99e Initial load
duke
parents:
diff changeset
5200 the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5201 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5202 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5203 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5204 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5205 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5206 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5207 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5208 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5209 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5210 <param id="root_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5211 <enum>jvmtiHeapRootKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5212 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5213 The kind of root (either <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5214 <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
5215 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5216 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5217 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5218 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5219 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5220 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5221 If the object represents a runtime class, the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5222 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5223 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5224 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5225 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5226 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5227 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5228 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5229 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5230 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5231 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5232 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5233 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5234 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5235 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5236 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5237 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5238 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5239 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5240 <param id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5241 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5242 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5243 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5244 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5245 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5246 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5247 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5248 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5249 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5250 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5251 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5252 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
5253 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5254 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5255 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5256 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5257 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5258 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5259 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5260 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5261 The slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5262 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5263 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5264 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5265 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5266 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5267 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5268 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5269 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5270 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5271 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5272
a61af66fc99e Initial load
duke
parents:
diff changeset
5273 <callback id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5274 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5275 <synopsis>Object Reference Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5276 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5277 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5278 Describes a reference from an object (the referrer) to another object
a61af66fc99e Initial load
duke
parents:
diff changeset
5279 (the referree).
a61af66fc99e Initial load
duke
parents:
diff changeset
5280 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5281 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5282 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5283 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5284 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5285 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5286 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5287 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5288 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5289 <param id="reference_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5290 <enum>jvmtiObjectReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5291 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5292 The type of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5293 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5294 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5295 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5296 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5297 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5298 The tag of the class of referree object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5299 If the referree object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
5300 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5301 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5302 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5303 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5304 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5305 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5306 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5307 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5308 Size of the referree object (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
5309 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5310 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5311 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5312 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5313 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5314 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5315 The referree object tag value, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5316 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5317 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5318 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5319 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5320 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5321 <param id="referrer_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5322 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5323 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5324 The tag of the referrer object, or zero if the referrer
a61af66fc99e Initial load
duke
parents:
diff changeset
5325 object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5326 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5327 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5328 <param id="referrer_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
5329 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5330 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5331 For references of type <code>JVMTI_REFERENCE_FIELD</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5332 <code>JVMTI_REFERENCE_STATIC_FIELD</code> the index
a61af66fc99e Initial load
duke
parents:
diff changeset
5333 of the field in the referrer object. The index is based on the
a61af66fc99e Initial load
duke
parents:
diff changeset
5334 order of all the object's fields - see <internallink
a61af66fc99e Initial load
duke
parents:
diff changeset
5335 id="JVMTI_REFERENCE_FIELD">JVMTI_REFERENCE_FIELD</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5336 or <internallink
a61af66fc99e Initial load
duke
parents:
diff changeset
5337 id="JVMTI_REFERENCE_STATIC_FIELD">JVMTI_REFERENCE_STATIC_FIELD
a61af66fc99e Initial load
duke
parents:
diff changeset
5338 </internallink> for further description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5339 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5340 For references of type <code>JVMTI_REFERENCE_ARRAY_ELEMENT</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5341 the array index - see <internallink id="JVMTI_REFERENCE_ARRAY_ELEMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5342 JVMTI_REFERENCE_ARRAY_ELEMENT</internallink> for further description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5343 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5344 For references of type <code>JVMTI_REFERENCE_CONSTANT_POOL</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5345 the index into the constant pool of the class - see
a61af66fc99e Initial load
duke
parents:
diff changeset
5346 <internallink id="JVMTI_REFERENCE_CONSTANT_POOL">
a61af66fc99e Initial load
duke
parents:
diff changeset
5347 JVMTI_REFERENCE_CONSTANT_POOL</internallink> for further
a61af66fc99e Initial load
duke
parents:
diff changeset
5348 description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5349 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5350 For references of other kinds the <code>referrer_index</code> is
a61af66fc99e Initial load
duke
parents:
diff changeset
5351 <code>-1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5352 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5353 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5354 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5355 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5356 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5357 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5358 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5359 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5360 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5361 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5362
a61af66fc99e Initial load
duke
parents:
diff changeset
5363 <function id="IterateOverObjectsReachableFromObject" num="109">
a61af66fc99e Initial load
duke
parents:
diff changeset
5364 <synopsis>Iterate Over Objects Reachable From Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5365 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5366 This function iterates over all objects that are directly
a61af66fc99e Initial load
duke
parents:
diff changeset
5367 and indirectly reachable from the specified object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5368 For each object <i>A</i> (known
a61af66fc99e Initial load
duke
parents:
diff changeset
5369 as the referrer) with a reference to object <i>B</i> the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
5370 callback function is called to describe the object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5371 The callback is called exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
5372 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
5373 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5374 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
5375 These may be distinguished by the
a61af66fc99e Initial load
duke
parents:
diff changeset
5376 <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
5377 <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5378 The callback for an object will always occur after the callback for
a61af66fc99e Initial load
duke
parents:
diff changeset
5379 its referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5380 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5381 See <functionlink id="FollowReferences"/> for the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5382 references which are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
5383 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5384 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5385 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5386 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5387 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5388 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5389 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5390 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5391 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5392 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5393 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5394 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5395 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5396 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5397 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5398 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
5399 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5400 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5401 The object
a61af66fc99e Initial load
duke
parents:
diff changeset
5402 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5403 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5404 <param id="object_reference_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5405 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5406 <struct>jvmtiObjectReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5407 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5408 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5409 The callback to be called to describe each
a61af66fc99e Initial load
duke
parents:
diff changeset
5410 object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5411 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5412 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5413 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5414 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5415 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5416 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5417 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5418 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5419 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5420 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5421 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5422 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5423 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5424 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5425 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5426
a61af66fc99e Initial load
duke
parents:
diff changeset
5427 <function id="IterateOverReachableObjects" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
5428 <synopsis>Iterate Over Reachable Objects</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5429 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5430 This function iterates over the root objects and all objects that
a61af66fc99e Initial load
duke
parents:
diff changeset
5431 are directly and indirectly reachable from the root objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5432 The root objects comprise the set of system classes,
a61af66fc99e Initial load
duke
parents:
diff changeset
5433 JNI globals, references from thread stacks, and other objects used as roots
a61af66fc99e Initial load
duke
parents:
diff changeset
5434 for the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5435 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5436 For each root the <paramlink id="heap_root_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5437 or <paramlink id="stack_ref_callback"></paramlink> callback is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5438 An object can be a root object for more than one reason and in that case
a61af66fc99e Initial load
duke
parents:
diff changeset
5439 the appropriate callback is called for each reason.
a61af66fc99e Initial load
duke
parents:
diff changeset
5440 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5441 For each object reference the <paramlink id="object_ref_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5442 callback function is called to describe the object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5443 The callback is called exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
5444 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
5445 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5446 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
5447 These may be distinguished by the
a61af66fc99e Initial load
duke
parents:
diff changeset
5448 <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
5449 <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5450 The callback for an object will always occur after the callback for
a61af66fc99e Initial load
duke
parents:
diff changeset
5451 its referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5452 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5453 See <functionlink id="FollowReferences"/> for the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5454 references which are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
5455 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5456 Roots are always reported to the profiler before any object references
a61af66fc99e Initial load
duke
parents:
diff changeset
5457 are reported. In other words, the <paramlink id="object_ref_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5458 callback will not be called until the appropriate callback has been called
a61af66fc99e Initial load
duke
parents:
diff changeset
5459 for all roots. If the <paramlink id="object_ref_callback"></paramlink> callback is
a61af66fc99e Initial load
duke
parents:
diff changeset
5460 specified as <code>NULL</code> then this function returns after
a61af66fc99e Initial load
duke
parents:
diff changeset
5461 reporting the root objects to the profiler.
a61af66fc99e Initial load
duke
parents:
diff changeset
5462 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5463 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5464 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5465 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5466 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5467 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5468 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5469 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5470 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5471 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5472 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5473 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5474 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5475 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5476 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5477 <param id="heap_root_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5478 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5479 <struct>jvmtiHeapRootCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5480 <nullok>do not report heap roots</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5481 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5482 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5483 The callback function to be called for each heap root of type
a61af66fc99e Initial load
duke
parents:
diff changeset
5484 <code>JVMTI_HEAP_ROOT_JNI_GLOBAL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5485 <code>JVMTI_HEAP_ROOT_SYSTEM_CLASS</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5486 <code>JVMTI_HEAP_ROOT_MONITOR</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5487 <code>JVMTI_HEAP_ROOT_THREAD</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5488 <code>JVMTI_HEAP_ROOT_OTHER</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5489 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5490 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5491 <param id="stack_ref_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5492 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5493 <struct>jvmtiStackReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5494 <nullok>do not report stack references</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5495 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5496 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5497 The callback function to be called for each heap root of
a61af66fc99e Initial load
duke
parents:
diff changeset
5498 <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5499 <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5500 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5501 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5502 <param id="object_ref_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5503 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5504 <struct>jvmtiObjectReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5505 <nullok>do not follow references from the root objects</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5506 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5507 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5508 The callback function to be called for each object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5509 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5510 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5511 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5512 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5513 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5514 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5515 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5516 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5517 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5518 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5519 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5520 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5521 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5522 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5523 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5524
a61af66fc99e Initial load
duke
parents:
diff changeset
5525 <function id="IterateOverHeap" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
5526 <synopsis>Iterate Over Heap</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5527 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5528 Iterate over all objects in the heap. This includes both reachable and
a61af66fc99e Initial load
duke
parents:
diff changeset
5529 unreachable objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5530 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5531 The <paramlink id="object_filter"></paramlink> parameter indicates the
a61af66fc99e Initial load
duke
parents:
diff changeset
5532 objects for which the callback function is called. If this parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5533 is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5534 called for every object that is tagged. If the parameter is
a61af66fc99e Initial load
duke
parents:
diff changeset
5535 <code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5536 for objects that are not tagged. If the parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5537 is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
a61af66fc99e Initial load
duke
parents:
diff changeset
5538 called for every object in the heap, irrespective of whether it is
a61af66fc99e Initial load
duke
parents:
diff changeset
5539 tagged or not.
a61af66fc99e Initial load
duke
parents:
diff changeset
5540 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5541 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5542 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5543 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5544 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5545 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5546 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5547 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5548 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5549 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5550 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5551 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5552 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5553 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5554 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5555 <param id="object_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
5556 <enum>jvmtiHeapObjectFilter</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5557 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5558 Indicates the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5559 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5560 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5561 <param id="heap_object_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5562 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5563 <struct>jvmtiHeapObjectCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5564 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5565 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5566 The iterator function to be called for each
a61af66fc99e Initial load
duke
parents:
diff changeset
5567 object matching the <paramlink id="object_filter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5568 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5569 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5570 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5571 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5572 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5573 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5574 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5575 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5576 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5577 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5578 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5579 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5580 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5581 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5582 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5583
a61af66fc99e Initial load
duke
parents:
diff changeset
5584 <function id="IterateOverInstancesOfClass" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
5585 <synopsis>Iterate Over Instances Of Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5586 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5587 Iterate over all objects in the heap that are instances of the specified class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5588 This includes direct instances of the specified class and
a61af66fc99e Initial load
duke
parents:
diff changeset
5589 instances of all subclasses of the specified class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5590 This includes both reachable and unreachable objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5591 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5592 The <paramlink id="object_filter"></paramlink> parameter indicates the
a61af66fc99e Initial load
duke
parents:
diff changeset
5593 objects for which the callback function is called. If this parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5594 is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5595 called for every object that is tagged. If the parameter is
a61af66fc99e Initial load
duke
parents:
diff changeset
5596 <code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5597 called for objects that are not tagged. If the parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5598 is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
a61af66fc99e Initial load
duke
parents:
diff changeset
5599 called for every object in the heap, irrespective of whether it is
a61af66fc99e Initial load
duke
parents:
diff changeset
5600 tagged or not.
a61af66fc99e Initial load
duke
parents:
diff changeset
5601 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5602 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5603 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5604 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5605 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5606 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5607 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5608 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5609 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5610 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5611 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5612 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5613 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5614 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5615 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5616 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
5617 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5618 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5619 Iterate over objects of this class only.
a61af66fc99e Initial load
duke
parents:
diff changeset
5620 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5621 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5622 <param id="object_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
5623 <enum>jvmtiHeapObjectFilter</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5624 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5625 Indicates the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5626 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5627 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5628 <param id="heap_object_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5629 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5630 <struct>jvmtiHeapObjectCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5631 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5632 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5633 The iterator function to be called for each
a61af66fc99e Initial load
duke
parents:
diff changeset
5634 <paramlink id="klass"/> instance matching
a61af66fc99e Initial load
duke
parents:
diff changeset
5635 the <paramlink id="object_filter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5636 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5637 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5638 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5639 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5640 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5641 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5642 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5643 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5644 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5645 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5646 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5647 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5648 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5649 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5650 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5651
a61af66fc99e Initial load
duke
parents:
diff changeset
5652 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
5653
a61af66fc99e Initial load
duke
parents:
diff changeset
5654 <category id="local" label="Local Variable">
a61af66fc99e Initial load
duke
parents:
diff changeset
5655
a61af66fc99e Initial load
duke
parents:
diff changeset
5656 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5657 These functions are used to retrieve or set the value of a local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5658 The variable is identified by the depth of the frame containing its
a61af66fc99e Initial load
duke
parents:
diff changeset
5659 value and the variable's slot number within that frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5660 The mapping of variables to
a61af66fc99e Initial load
duke
parents:
diff changeset
5661 slot numbers can be obtained with the function
a61af66fc99e Initial load
duke
parents:
diff changeset
5662 <functionlink id="GetLocalVariableTable"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5663 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5664
a61af66fc99e Initial load
duke
parents:
diff changeset
5665 <function id="GetLocalObject" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
5666 <synopsis>Get Local Variable - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5667 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5668 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5669 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5670 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5671 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5672 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5673 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5674 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5675 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5676 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5677 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5678 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5679 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5680 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5681 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5682 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5683 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5684 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5685 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5686 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5687 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5688 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5689 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5690 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5691 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5692 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5693 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5694 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5695 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5696 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5697 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5698 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5699 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5700 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5701 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5702 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5703 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5704 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5705 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5706 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5707 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5708 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5709 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5710 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5711 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5712 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5713 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5714
2019
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5715 <function id="GetLocalInstance" num="155" since="1.2">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5716 <synopsis>Get Local Instance</synopsis>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5717 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5718 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
5719 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
5720 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
5721 native method frames, whereas <code>GetLocalObject()</code> would
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5722 return <code>JVMTI_ERROR_OPAQUE_FRAME</code> in those cases.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5723 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5724 <origin>new</origin>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5725 <capabilities>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5726 <required id="can_access_local_variables"></required>
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 <parameters>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5729 <param id="thread">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5730 <jthread null="current" frame="frame"/>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5731 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5732 The thread of the frame containing the variable's value.
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 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5735 <param id="depth">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5736 <jframeID thread="thread"/>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5737 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5738 The depth of the frame containing the variable's value.
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 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5741 <param id="value_ptr">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5742 <outptr><jobject/></outptr>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5743 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5744 On return, points to the variable's value.
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 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5747 </parameters>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5748 <errors>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5749 <error id="JVMTI_ERROR_INVALID_SLOT">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5750 If the specified frame is a static method frame.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5751 </error>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5752 </errors>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5753 </function>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
5754 <function id="GetLocalInt" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
5755 <synopsis>Get Local Variable - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5756 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5757 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5758 variable whose type is <code>int</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5759 <code>short</code>, <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5760 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5761 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5762 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5763 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5764 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5765 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5766 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5767 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5768 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5769 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5770 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5771 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5772 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5773 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5774 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5775 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5776 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5777 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5778 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5779 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5780 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5781 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5782 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5783 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5784 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5785 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5786 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5787 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5788 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5789 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5790 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5791 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5792 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5793 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5794 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5795 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5796 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5797 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5798 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5799 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5800 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5801 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5802 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5803 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5804 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5805 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5806 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5807
a61af66fc99e Initial load
duke
parents:
diff changeset
5808 <function id="GetLocalLong" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
5809 <synopsis>Get Local Variable - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5810 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5811 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5812 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5813 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5814 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5815 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5816 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5817 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5818 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5819 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5820 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5821 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5822 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5823 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5824 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5825 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5826 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5827 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5828 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5829 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5830 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5831 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5832 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5833 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5834 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5835 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5836 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5837 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5838 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5839 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5840 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5841 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5842 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5843 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5844 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5845 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5846 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5847 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5848 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5849 The variable type is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5850 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5851 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5852 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5853 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5854 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5855 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5856
a61af66fc99e Initial load
duke
parents:
diff changeset
5857 <function id="GetLocalFloat" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
5858 <synopsis>Get Local Variable - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5859 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5860 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5861 variable whose type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5862 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5863 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5864 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5865 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5866 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5867 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5868 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5869 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5870 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5871 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5872 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5873 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5874 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5875 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5876 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5877 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5878 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5879 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5880 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5881 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5882 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5883 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5884 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5885 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5886 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5887 <outptr><jfloat/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5888 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5889 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5890 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5891 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5892 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5893 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5894 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5895 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5896 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5897 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5898 The variable type is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5899 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5900 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5901 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5902 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5903 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5904 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5905
a61af66fc99e Initial load
duke
parents:
diff changeset
5906 <function id="GetLocalDouble" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
5907 <synopsis>Get Local Variable - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5908 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5909 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5910 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5911 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5912 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5913 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5914 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5915 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5916 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5917 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5918 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5919 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5920 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5921 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5922 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5923 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5924 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5925 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5926 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5927 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5928 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5929 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5930 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5931 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5932 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5933 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5934 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5935 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5936 <outptr><jdouble/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5937 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5938 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5939 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5940 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5941 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5942 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5943 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5944 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5945 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5946 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5947 The variable type is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5948 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5949 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5950 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5951 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5952 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5953 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5954
a61af66fc99e Initial load
duke
parents:
diff changeset
5955 <function id="SetLocalObject" num="26">
a61af66fc99e Initial load
duke
parents:
diff changeset
5956 <synopsis>Set Local Variable - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5957 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5958 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5959 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5960 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5961 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5962 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5963 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5964 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5965 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5966 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5967 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5968 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5969 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5970 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5971 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5972 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5973 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5974 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5975 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5976 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5977 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5978 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5979 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5980 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5981 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5982 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5983 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5984 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
5985 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5986 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5987 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5988 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5989 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5990 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5991 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5992 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5993 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5994 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5995 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5996 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5997 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5998 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5999 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6000 The supplied <paramlink id="value"/> is not compatible
a61af66fc99e Initial load
duke
parents:
diff changeset
6001 with the variable type.
a61af66fc99e Initial load
duke
parents:
diff changeset
6002 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6003 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6004 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6005 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6006 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6007 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6008
a61af66fc99e Initial load
duke
parents:
diff changeset
6009 <function id="SetLocalInt" num="27">
a61af66fc99e Initial load
duke
parents:
diff changeset
6010 <synopsis>Set Local Variable - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6011 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6012 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6013 variable whose type is <code>int</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6014 <code>short</code>, <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
6015 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6016 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6017 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6018 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6019 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6020 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6021 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6022 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6023 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6024 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6025 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6026 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6027 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6028 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6029 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6030 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6031 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6032 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6033 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6034 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6035 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6036 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6037 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6038 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6039 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6040 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6041 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6042 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6043 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6044 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6045 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6046 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6047 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6048 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6049 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6050 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6051 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6052 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
6053 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6054 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
6055 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6056 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6057 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6058 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6059 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6060 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6061 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6062
a61af66fc99e Initial load
duke
parents:
diff changeset
6063 <function id="SetLocalLong" num="28">
a61af66fc99e Initial load
duke
parents:
diff changeset
6064 <synopsis>Set Local Variable - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6065 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6066 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6067 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6068 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6069 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6070 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6071 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6072 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6073 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6074 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6075 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6076 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6077 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6078 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6079 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6080 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6081 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6082 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6083 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6084 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6085 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6086 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6087 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6088 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6089 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6090 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6091 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6092 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6093 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6094 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6095 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6096 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6097 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6098 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6099 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6100 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6101 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6102 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6103 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6104 The variable type is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6105 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6106 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6107 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6108 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6109 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6110 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6111
a61af66fc99e Initial load
duke
parents:
diff changeset
6112 <function id="SetLocalFloat" num="29">
a61af66fc99e Initial load
duke
parents:
diff changeset
6113 <synopsis>Set Local Variable - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6114 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6115 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6116 variable whose type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6117 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6118 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6119 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6120 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6121 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6122 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6123 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6124 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6125 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6126 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6127 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6128 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6129 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6130 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6131 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6132 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6133 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6134 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6135 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6136 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6137 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6138 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6139 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6140 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6141 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6142 <jfloat/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6143 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6144 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6145 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6146 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6147 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6148 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6149 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6150 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6151 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6152 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6153 The variable type is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6154 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6155 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6156 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6157 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6158 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6159 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6160
a61af66fc99e Initial load
duke
parents:
diff changeset
6161 <function id="SetLocalDouble" num="30">
a61af66fc99e Initial load
duke
parents:
diff changeset
6162 <synopsis>Set Local Variable - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6163 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6164 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6165 variable whose type is <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6166 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6167 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6168 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6169 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6170 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6171 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6172 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6173 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6174 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6175 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6176 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6177 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6178 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6179 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6180 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6181 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6182 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6183 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6184 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6185 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6186 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6187 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6188 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6189 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6190 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6191 <jdouble/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6192 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6193 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6194 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6195 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6196 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6197 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6198 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6199 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6200 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6201 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6202 The variable type is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6203 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6204 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6205 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6206 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6207 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6208 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6209 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6210
a61af66fc99e Initial load
duke
parents:
diff changeset
6211 <category id="breakpointCategory" label="Breakpoint">
a61af66fc99e Initial load
duke
parents:
diff changeset
6212
a61af66fc99e Initial load
duke
parents:
diff changeset
6213 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6214 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6215
a61af66fc99e Initial load
duke
parents:
diff changeset
6216 <function id="SetBreakpoint" num="38">
a61af66fc99e Initial load
duke
parents:
diff changeset
6217 <synopsis>Set Breakpoint</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6218 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6219 Set a breakpoint at the instruction indicated by
a61af66fc99e Initial load
duke
parents:
diff changeset
6220 <code>method</code> and <code>location</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6221 An instruction can only have one breakpoint.
a61af66fc99e Initial load
duke
parents:
diff changeset
6222 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6223 Whenever the designated instruction is about to be executed, a
a61af66fc99e Initial load
duke
parents:
diff changeset
6224 <eventlink id="Breakpoint"></eventlink> event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
6225 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6226 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6227 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6228 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6229 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6230 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6231 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6232 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6233 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6234 The class in which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6235 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6236 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6237 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
6238 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6239 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6240 The method in which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6241 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6242 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6243 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
6244 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6245 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6246 the index of the instruction at which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6247
a61af66fc99e Initial load
duke
parents:
diff changeset
6248 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6249 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6250 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6251 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6252 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6253 The designated bytecode already has a breakpoint.
a61af66fc99e Initial load
duke
parents:
diff changeset
6254 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6255 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6256 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6257
a61af66fc99e Initial load
duke
parents:
diff changeset
6258 <function id="ClearBreakpoint" num="39">
a61af66fc99e Initial load
duke
parents:
diff changeset
6259 <synopsis>Clear Breakpoint</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6260 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6261 Clear the breakpoint at the bytecode indicated by
a61af66fc99e Initial load
duke
parents:
diff changeset
6262 <code>method</code> and <code>location</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6263 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6264 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6265 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6266 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6267 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6268 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6269 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6270 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6271 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6272 The class in which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6273 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6274 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6275 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
6276 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6277 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6278 The method in which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6279 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6280 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6281 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
6282 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6283 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6284 the index of the instruction at which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6285 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6286 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6287 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6288 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6289 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6290 There's no breakpoint at the designated bytecode.
a61af66fc99e Initial load
duke
parents:
diff changeset
6291 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6292 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6293 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6294
a61af66fc99e Initial load
duke
parents:
diff changeset
6295 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6296
a61af66fc99e Initial load
duke
parents:
diff changeset
6297 <category id="fieldWatch" label="Watched Field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6298
a61af66fc99e Initial load
duke
parents:
diff changeset
6299 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6300 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6301
a61af66fc99e Initial load
duke
parents:
diff changeset
6302 <function id="SetFieldAccessWatch" num="41">
a61af66fc99e Initial load
duke
parents:
diff changeset
6303 <synopsis>Set Field Access Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6304 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6305 Generate a <eventlink id="FieldAccess"></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
6306 when the field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6307 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6308 <code>field</code> is about to be accessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
6309 An event will be generated for each access of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
6310 until it is canceled with
a61af66fc99e Initial load
duke
parents:
diff changeset
6311 <functionlink id="ClearFieldAccessWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6312 Field accesses from Java programming language code or from JNI code are watched,
a61af66fc99e Initial load
duke
parents:
diff changeset
6313 fields modified by other means are not watched.
a61af66fc99e Initial load
duke
parents:
diff changeset
6314 Note that <jvmti/> users should be aware that their own field accesses
a61af66fc99e Initial load
duke
parents:
diff changeset
6315 will trigger the watch.
a61af66fc99e Initial load
duke
parents:
diff changeset
6316 A field can only have one field access watch set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6317 Modification of a field is not considered an access--use
a61af66fc99e Initial load
duke
parents:
diff changeset
6318 <functionlink id="SetFieldModificationWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
6319 to monitor modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6320 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6321 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6322 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6323 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6324 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6325 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6326 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6327 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6328 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6329 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6330 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6331 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6332 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6333 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6334 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6335 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6336
a61af66fc99e Initial load
duke
parents:
diff changeset
6337 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6338 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6339 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6340 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6341 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6342 The designated field is already being watched for accesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
6343 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6344 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6345 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6346
a61af66fc99e Initial load
duke
parents:
diff changeset
6347 <function id="ClearFieldAccessWatch" num="42">
a61af66fc99e Initial load
duke
parents:
diff changeset
6348 <synopsis>Clear Field Access Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6349 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6350 Cancel a field access watch previously set by
a61af66fc99e Initial load
duke
parents:
diff changeset
6351 <functionlink id="SetFieldAccessWatch"></functionlink>, on the
a61af66fc99e Initial load
duke
parents:
diff changeset
6352 field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6353 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6354 <code>field</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6355 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6356 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6357 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6358 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6359 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6360 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6361 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6362 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6363 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6364 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6365 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6366 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6367 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6368 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6369 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6370 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6371
a61af66fc99e Initial load
duke
parents:
diff changeset
6372 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6373 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6374 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6375 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6376 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6377 The designated field is not being watched for accesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
6378 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6379 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6380 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6381
a61af66fc99e Initial load
duke
parents:
diff changeset
6382 <function id="SetFieldModificationWatch" num="43">
a61af66fc99e Initial load
duke
parents:
diff changeset
6383 <synopsis>Set Field Modification Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6384 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6385 Generate a <eventlink id="FieldModification"></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
6386 when the field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6387 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6388 <code>field</code> is about to be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
6389 An event will be generated for each modification of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
6390 until it is canceled with
a61af66fc99e Initial load
duke
parents:
diff changeset
6391 <functionlink id="ClearFieldModificationWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6392 Field modifications from Java programming language code or from JNI code are watched,
a61af66fc99e Initial load
duke
parents:
diff changeset
6393 fields modified by other means are not watched.
a61af66fc99e Initial load
duke
parents:
diff changeset
6394 Note that <jvmti/> users should be aware that their own field modifications
a61af66fc99e Initial load
duke
parents:
diff changeset
6395 will trigger the watch.
a61af66fc99e Initial load
duke
parents:
diff changeset
6396 A field can only have one field modification watch set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6397 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6398 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6399 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6400 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6401 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6402 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6403 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6404 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6405 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6406 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6407 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6408 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6409 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6410 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6411 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6412 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6413
a61af66fc99e Initial load
duke
parents:
diff changeset
6414 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6415 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6416 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6417 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6418 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6419 The designated field is already being watched for modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6420 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6421 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6422 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6423
a61af66fc99e Initial load
duke
parents:
diff changeset
6424 <function id="ClearFieldModificationWatch" num="44">
a61af66fc99e Initial load
duke
parents:
diff changeset
6425 <synopsis>Clear Field Modification Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6426 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6427
a61af66fc99e Initial load
duke
parents:
diff changeset
6428 Cancel a field modification watch previously set by
a61af66fc99e Initial load
duke
parents:
diff changeset
6429 <functionlink id="SetFieldModificationWatch"></functionlink>, on the
a61af66fc99e Initial load
duke
parents:
diff changeset
6430 field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6431 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6432 <code>field</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6433 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6434 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6435 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6436 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6437 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6438 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6439 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6440 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6441 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6442 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6443 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6444 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6445 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6446 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6447 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6448 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6449
a61af66fc99e Initial load
duke
parents:
diff changeset
6450 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6451 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6452 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6453 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6454 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6455 The designated field is not being watched for modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6456 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6457 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6458 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6459 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6460
a61af66fc99e Initial load
duke
parents:
diff changeset
6461 <category id="class" label="Class">
a61af66fc99e Initial load
duke
parents:
diff changeset
6462
a61af66fc99e Initial load
duke
parents:
diff changeset
6463 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6464 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6465
a61af66fc99e Initial load
duke
parents:
diff changeset
6466 <function id="GetLoadedClasses" jkernel="yes" num="78">
a61af66fc99e Initial load
duke
parents:
diff changeset
6467 <synopsis>Get Loaded Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6468 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6469 Return an array of all classes loaded in the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
6470 The number of classes in the array is returned via
a61af66fc99e Initial load
duke
parents:
diff changeset
6471 <code>class_count_ptr</code>, and the array itself via
a61af66fc99e Initial load
duke
parents:
diff changeset
6472 <code>classes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6473 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6474 Array classes of all types (including arrays of primitive types) are
a61af66fc99e Initial load
duke
parents:
diff changeset
6475 included in the returned list. Primitive classes (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
6476 <code>java.lang.Integer.TYPE</code>) are <i>not</i> included in this list.
a61af66fc99e Initial load
duke
parents:
diff changeset
6477 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6478 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6479 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6480 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6481 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6482 <param id="class_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6483 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6484 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6485 On return, points to the number of classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
6486 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6487 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6488 <param id="classes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6489 <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6490 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6491 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
6492 for each class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6493 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6494 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6495 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6496 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6497 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6498 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6499
a61af66fc99e Initial load
duke
parents:
diff changeset
6500 <function id="GetClassLoaderClasses" jkernel="yes" num="79">
a61af66fc99e Initial load
duke
parents:
diff changeset
6501 <synopsis>Get Classloader Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6502 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6503 Returns an array of those classes for which this class loader has
a61af66fc99e Initial load
duke
parents:
diff changeset
6504 been recorded as an initiating loader. Each
a61af66fc99e Initial load
duke
parents:
diff changeset
6505 class in the returned array was created by this class loader,
a61af66fc99e Initial load
duke
parents:
diff changeset
6506 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
6507 See <vmspec chapter="5.3"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6508 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6509 For JDK version 1.1 implementations that don't
a61af66fc99e Initial load
duke
parents:
diff changeset
6510 recognize the distinction between initiating and defining class loaders,
a61af66fc99e Initial load
duke
parents:
diff changeset
6511 this function should return all classes loaded in the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
6512 The number of classes in the array is returned via
a61af66fc99e Initial load
duke
parents:
diff changeset
6513 <code>class_count_ptr</code>, and the array itself via
a61af66fc99e Initial load
duke
parents:
diff changeset
6514 <code>classes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6515 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6516 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6517 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6518 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6519 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6520 <param id="initiating_loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
6521 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
6522 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6523 <nullok>the classes initiated by the bootstrap loader will be returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6524 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
6525 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6526 An initiating class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
6527 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6528 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6529 <param id="class_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6530 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6531 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6532 On return, points to the number of classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
6533 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6534 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6535 <param id="classes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6536 <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6537 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6538 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
6539 for each class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6540 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6541 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6542 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6543 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6544 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6545 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6546
a61af66fc99e Initial load
duke
parents:
diff changeset
6547 <function id="GetClassSignature" phase="start" num="48">
a61af66fc99e Initial load
duke
parents:
diff changeset
6548 <synopsis>Get Class Signature</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6549 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6550 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
6551 <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
6552 type signature</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
6553 and the generic signature of the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6554 For example, <code>java.util.List</code> is <code>"Ljava/util/List;"</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6555 and <code>int[]</code> is <code>"[I"</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6556 The returned name for primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6557 is the type signature character of the corresponding primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
6558 For example, <code>java.lang.Integer.TYPE</code> is <code>"I"</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6559 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6560 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6561 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6562 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6563 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6564 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6565 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6566 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6567 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6568 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6569 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6570 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6571 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6572 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6573 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6574 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6575 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6576 On return, points to the JNI type signature of the class, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6577 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6578 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6579 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6580 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6581 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6582 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6583 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6584 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6585 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6586 On return, points to the generic signature of the class, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6587 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6588 If there is no generic signature attribute for the class, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
6589 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6590 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6591 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6592 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6593 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6594 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6595 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6596
a61af66fc99e Initial load
duke
parents:
diff changeset
6597 <function id="GetClassStatus" phase="start" num="49">
a61af66fc99e Initial load
duke
parents:
diff changeset
6598 <synopsis>Get Class Status</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6599 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6600 Get the status of the class. Zero or more of the following bits can be
a61af66fc99e Initial load
duke
parents:
diff changeset
6601 set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6602 <constants id="jvmtiClassStatus" label="Class Status Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
6603 <constant id="JVMTI_CLASS_STATUS_VERIFIED" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6604 Class bytecodes have been verified
a61af66fc99e Initial load
duke
parents:
diff changeset
6605 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6606 <constant id="JVMTI_CLASS_STATUS_PREPARED" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
6607 Class preparation is complete
a61af66fc99e Initial load
duke
parents:
diff changeset
6608 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6609 <constant id="JVMTI_CLASS_STATUS_INITIALIZED" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
6610 Class initialization is complete. Static initializer has been run.
a61af66fc99e Initial load
duke
parents:
diff changeset
6611 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6612 <constant id="JVMTI_CLASS_STATUS_ERROR" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
6613 Error during initialization makes class unusable
a61af66fc99e Initial load
duke
parents:
diff changeset
6614 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6615 <constant id="JVMTI_CLASS_STATUS_ARRAY" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
6616 Class is an array. If set, all other bits are zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
6617 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6618 <constant id="JVMTI_CLASS_STATUS_PRIMITIVE" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
6619 Class is a primitive class (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6620 If set, all other bits are zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
6621 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6622 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
6623 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6624 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6625 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6626 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6627 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6628 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6629 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6630 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6631 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6632 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6633 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6634 <param id="status_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6635 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6636 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6637 On return, points to the current state of this class as one or
a61af66fc99e Initial load
duke
parents:
diff changeset
6638 more of the <internallink id="jvmtiClassStatus">class status flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6639 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6640 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6641 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6642 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6643 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6644 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6645
a61af66fc99e Initial load
duke
parents:
diff changeset
6646 <function id="GetSourceFileName" phase="start" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
6647 <synopsis>Get Source File Name</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6648 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6649 For the class indicated by <code>klass</code>, return the source file
a61af66fc99e Initial load
duke
parents:
diff changeset
6650 name via <code>source_name_ptr</code>. The returned string
a61af66fc99e Initial load
duke
parents:
diff changeset
6651 is a file name only and never contains a directory name.
a61af66fc99e Initial load
duke
parents:
diff changeset
6652 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6653 For primitive classes (for example, <code>java.lang.Integer.TYPE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
6654 and for arrays this function returns
a61af66fc99e Initial load
duke
parents:
diff changeset
6655 <errorlink id="JVMTI_ERROR_ABSENT_INFORMATION"></errorlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6656 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6657 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6658 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6659 <required id="can_get_source_file_name"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6660 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6661 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6662 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6663 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6664 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6665 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6666 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6667 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6668 <param id="source_name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6669 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6670 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6671 On return, points to the class's source file name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6672 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6673 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6674 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6675 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6676 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6677 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6678 Class information does not include a source file name. This includes
a61af66fc99e Initial load
duke
parents:
diff changeset
6679 cases where the class is an array class or primitive class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6680 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6681 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6682 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6683
a61af66fc99e Initial load
duke
parents:
diff changeset
6684 <function id="GetClassModifiers" phase="start" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
6685 <synopsis>Get Class Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6687 For the class indicated by <code>klass</code>, return the access
a61af66fc99e Initial load
duke
parents:
diff changeset
6688 flags
a61af66fc99e Initial load
duke
parents:
diff changeset
6689 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
6690 Access flags are defined in <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6691 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6692 If the class is an array class, then its public, private, and protected
a61af66fc99e Initial load
duke
parents:
diff changeset
6693 modifiers are the same as those of its component type. For arrays of
a61af66fc99e Initial load
duke
parents:
diff changeset
6694 primitives, this component type is represented by one of the primitive
a61af66fc99e Initial load
duke
parents:
diff changeset
6695 classes (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6696 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6697 If the class is a primitive class, its public modifier is always true,
a61af66fc99e Initial load
duke
parents:
diff changeset
6698 and its protected and private modifiers are always false.
a61af66fc99e Initial load
duke
parents:
diff changeset
6699 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6700 If the class is an array class or a primitive class then its final
a61af66fc99e Initial load
duke
parents:
diff changeset
6701 modifier is always true and its interface modifier is always false.
a61af66fc99e Initial load
duke
parents:
diff changeset
6702 The values of its other modifiers are not determined by this specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
6703
a61af66fc99e Initial load
duke
parents:
diff changeset
6704 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6705 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6706 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6707 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6708 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6709 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6710 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6711 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6712 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6713 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6714 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6715 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6716 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6717 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6718 On return, points to the current access flags of this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6719
a61af66fc99e Initial load
duke
parents:
diff changeset
6720 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6721 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6722 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6723 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6724 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6725 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6726
a61af66fc99e Initial load
duke
parents:
diff changeset
6727 <function id="GetClassMethods" phase="start" num="52">
a61af66fc99e Initial load
duke
parents:
diff changeset
6728 <synopsis>Get Class Methods</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6729 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6730 For the class indicated by <code>klass</code>, return a count of
a61af66fc99e Initial load
duke
parents:
diff changeset
6731 methods via <code>method_count_ptr</code> and a list of
a61af66fc99e Initial load
duke
parents:
diff changeset
6732 method IDs via <code>methods_ptr</code>. The method list contains
a61af66fc99e Initial load
duke
parents:
diff changeset
6733 constructors and static initializers as well as true methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
6734 Only directly declared methods are returned (not inherited methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
6735 An empty method list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6736 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6737 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6738 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6739 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6740 <capability id="can_maintain_original_method_order"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6741 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6742 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6743 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6744 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6745 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6746 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6747 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6748 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6749 <param id="method_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6750 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6751 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6752 On return, points to the number of methods declared in this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6753 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6754 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6755 <param id="methods_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6756 <allocbuf outcount="method_count_ptr"><jmethodID class="klass"/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6757 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6758 On return, points to the method ID array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6759 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6760 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6761 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6762 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6763 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6764 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6765 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6766 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6767 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6768
a61af66fc99e Initial load
duke
parents:
diff changeset
6769 <function id="GetClassFields" phase="start" num="53">
a61af66fc99e Initial load
duke
parents:
diff changeset
6770 <synopsis>Get Class Fields</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6771 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6772 For the class indicated by <code>klass</code>, return a count of fields
a61af66fc99e Initial load
duke
parents:
diff changeset
6773 via <code>field_count_ptr</code> and a list of field IDs via
a61af66fc99e Initial load
duke
parents:
diff changeset
6774 <code>fields_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6775 Only directly declared fields are returned (not inherited fields).
a61af66fc99e Initial load
duke
parents:
diff changeset
6776 Fields are returned in the order they occur in the class file.
a61af66fc99e Initial load
duke
parents:
diff changeset
6777 An empty field list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6778 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6779 Use JNI to determine the length of an array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6780 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6781 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6782 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6783 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6784 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6785 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6786 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6787 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6788 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6789 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6790 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6791 <param id="field_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6792 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6793 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6794 On return, points to the number of fields declared in this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6795 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6796 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6797 <param id="fields_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6798 <allocbuf outcount="field_count_ptr"><jfieldID/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6799 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6800 On return, points to the field ID array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6801 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6802 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6803 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6804 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6805 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6806 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6807 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6808 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6809 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6810
a61af66fc99e Initial load
duke
parents:
diff changeset
6811 <function id="GetImplementedInterfaces" phase="start" num="54">
a61af66fc99e Initial load
duke
parents:
diff changeset
6812 <synopsis>Get Implemented Interfaces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6813 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6814 Return the direct super-interfaces of this class. For a class, this
a61af66fc99e Initial load
duke
parents:
diff changeset
6815 function returns the interfaces declared in its <code>implements</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6816 clause. For an interface, this function returns the interfaces declared in
a61af66fc99e Initial load
duke
parents:
diff changeset
6817 its <code>extends</code> clause.
a61af66fc99e Initial load
duke
parents:
diff changeset
6818 An empty interface list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6819 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6820 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6821 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6822 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6823 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6824 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6825 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6826 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6827 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6828 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6829 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6830 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6831 <param id="interface_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6832 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6833 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6834 On return, points to the number of interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
6835 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6836 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6837 <param id="interfaces_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6838 <allocbuf outcount="interface_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6839 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6840 On return, points to the interface array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6841 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6842 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6843 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6844 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6845 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6846 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6847 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6848 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6849 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6850
a61af66fc99e Initial load
duke
parents:
diff changeset
6851 <function id="GetClassVersionNumbers" phase="start" num="145" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6852 <synopsis>Get Class Version Numbers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6853 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6854 For the class indicated by <code>klass</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6855 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
6856 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
6857 <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6858 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6859 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6860 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6861 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6862 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6863 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6864 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6865 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6866 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6867 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6868 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6869 <param id="minor_version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6870 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6871 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6872 On return, points to the value of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6873 <code>minor_version</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6874 Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6875 Note: to be consistent with the Class File Format,
a61af66fc99e Initial load
duke
parents:
diff changeset
6876 the minor version number is the first parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
6877 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6878 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6879 <param id="major_version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6880 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6881 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6882 On return, points to the value of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6883 <code>major_version</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6884 Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6885 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6886 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6887 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6888 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6889 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6890 The class is a primitive or array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6891 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6892 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6893 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6894
a61af66fc99e Initial load
duke
parents:
diff changeset
6895 <function id="GetConstantPool" phase="start" num="146" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6896 <synopsis>Get Constant Pool</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6897 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6898 For the class indicated by <code>klass</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6899 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
6900 <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
6901 <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6902 The format of the constant pool may differ between versions
a61af66fc99e Initial load
duke
parents:
diff changeset
6903 of the Class File Format, so, the
a61af66fc99e Initial load
duke
parents:
diff changeset
6904 <functionlink id="GetClassVersionNumbers">minor and major
a61af66fc99e Initial load
duke
parents:
diff changeset
6905 class version numbers</functionlink> should be checked for
a61af66fc99e Initial load
duke
parents:
diff changeset
6906 compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
6907 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6908 The returned constant pool might not have the same layout or
a61af66fc99e Initial load
duke
parents:
diff changeset
6909 contents as the constant pool in the defining class file.
a61af66fc99e Initial load
duke
parents:
diff changeset
6910 The constant pool returned by GetConstantPool() may have
a61af66fc99e Initial load
duke
parents:
diff changeset
6911 more or fewer entries than the defining constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6912 Entries may be in a different order.
a61af66fc99e Initial load
duke
parents:
diff changeset
6913 The constant pool returned by GetConstantPool() will match the
a61af66fc99e Initial load
duke
parents:
diff changeset
6914 constant pool used by
a61af66fc99e Initial load
duke
parents:
diff changeset
6915 <functionlink id="GetBytecodes">GetBytecodes()</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6916 That is, the bytecodes returned by GetBytecodes() will have
a61af66fc99e Initial load
duke
parents:
diff changeset
6917 constant pool indices which refer to constant pool entries returned
a61af66fc99e Initial load
duke
parents:
diff changeset
6918 by GetConstantPool().
a61af66fc99e Initial load
duke
parents:
diff changeset
6919 Note that since <functionlink id="RetransformClasses"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6920 and <functionlink id="RedefineClasses"/> can change
a61af66fc99e Initial load
duke
parents:
diff changeset
6921 the constant pool, the constant pool returned by this function
a61af66fc99e Initial load
duke
parents:
diff changeset
6922 can change accordingly. Thus, the correspondence between
a61af66fc99e Initial load
duke
parents:
diff changeset
6923 GetConstantPool() and GetBytecodes() does not hold if there
a61af66fc99e Initial load
duke
parents:
diff changeset
6924 is an intervening class retransformation or redefinition.
a61af66fc99e Initial load
duke
parents:
diff changeset
6925 The value of a constant pool entry used by a given bytecode will
a61af66fc99e Initial load
duke
parents:
diff changeset
6926 match that of the defining class file (even if the indices don't match).
a61af66fc99e Initial load
duke
parents:
diff changeset
6927 Constant pool entries which are not used directly or indirectly by
a61af66fc99e Initial load
duke
parents:
diff changeset
6928 bytecodes (for example, UTF-8 strings associated with annotations) are
a61af66fc99e Initial load
duke
parents:
diff changeset
6929 not required to exist in the returned constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6930 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6931 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6932 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6933 <required id="can_get_constant_pool"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6934 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6935 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6936 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6937 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6938 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6939 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6940 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6941 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6942 <param id="constant_pool_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6943 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6944 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6945 On return, points to the number of entries
a61af66fc99e Initial load
duke
parents:
diff changeset
6946 in the constant pool table plus one.
a61af66fc99e Initial load
duke
parents:
diff changeset
6947 This corresponds to the <code>constant_pool_count</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6948 item of the Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6949 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6950 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6951 <param id="constant_pool_byte_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6952 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6953 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6954 On return, points to the number of bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
6955 in the returned raw constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6956 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6957 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6958 <param id="constant_pool_bytes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6959 <allocbuf outcount="constant_pool_byte_count_ptr"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6960 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6961 On return, points to the raw constant pool, that is the bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
6962 defined by the <code>constant_pool</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6963 Class File Format
a61af66fc99e Initial load
duke
parents:
diff changeset
6964 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6965 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6966 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6967 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6968 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6969 The class is a primitive or array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6970 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6971 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6972 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6973
a61af66fc99e Initial load
duke
parents:
diff changeset
6974 <function id="IsInterface" phase="start" num="55">
a61af66fc99e Initial load
duke
parents:
diff changeset
6975 <synopsis>Is Interface</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6976 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6977 Determines whether a class object reference represents an interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
6978 The <code>jboolean</code> result is
a61af66fc99e Initial load
duke
parents:
diff changeset
6979 <code>JNI_TRUE</code> if the "class" is actually an interface,
a61af66fc99e Initial load
duke
parents:
diff changeset
6980 <code>JNI_FALSE</code> otherwise.
a61af66fc99e Initial load
duke
parents:
diff changeset
6981 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6982 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6983 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6984 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6985 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6986 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6987 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6988 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6989 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6990 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6991 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6992 <param id="is_interface_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6993 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6994 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6995 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
6996
a61af66fc99e Initial load
duke
parents:
diff changeset
6997 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6998 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6999 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7000 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7001 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7002 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7003
a61af66fc99e Initial load
duke
parents:
diff changeset
7004 <function id="IsArrayClass" phase="start" num="56">
a61af66fc99e Initial load
duke
parents:
diff changeset
7005 <synopsis>Is Array Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7006 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7007 Determines whether a class object reference represents an array.
a61af66fc99e Initial load
duke
parents:
diff changeset
7008 The <code>jboolean</code> result is
a61af66fc99e Initial load
duke
parents:
diff changeset
7009 <code>JNI_TRUE</code> if the class is an array,
a61af66fc99e Initial load
duke
parents:
diff changeset
7010 <code>JNI_FALSE</code> otherwise.
a61af66fc99e Initial load
duke
parents:
diff changeset
7011 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7012 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7013 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7014 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7015 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7016 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7017 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7018 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7019 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7020 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7021 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7022 <param id="is_array_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7023 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7024 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7025 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7026
a61af66fc99e Initial load
duke
parents:
diff changeset
7027 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7028 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7029 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7030 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7031 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7032 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7033
a61af66fc99e Initial load
duke
parents:
diff changeset
7034 <function id="IsModifiableClass" jkernel="yes" phase="start" num="45" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
7035 <synopsis>Is Modifiable Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7036 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7037 Determines whether a class is modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
7038 If a class is modifiable (<paramlink id="is_modifiable_class_ptr"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7039 returns <code>JNI_TRUE</code>) the class can be
a61af66fc99e Initial load
duke
parents:
diff changeset
7040 redefined with <functionlink id="RedefineClasses"/> (assuming
a61af66fc99e Initial load
duke
parents:
diff changeset
7041 the agent possesses the
a61af66fc99e Initial load
duke
parents:
diff changeset
7042 <fieldlink id="can_redefine_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7043 capability) or
a61af66fc99e Initial load
duke
parents:
diff changeset
7044 retransformed with <functionlink id="RetransformClasses"/> (assuming
a61af66fc99e Initial load
duke
parents:
diff changeset
7045 the agent possesses the
a61af66fc99e Initial load
duke
parents:
diff changeset
7046 <fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7047 capability).
a61af66fc99e Initial load
duke
parents:
diff changeset
7048 If a class is not modifiable (<paramlink id="is_modifiable_class_ptr"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7049 returns <code>JNI_FALSE</code>) the class can be neither
a61af66fc99e Initial load
duke
parents:
diff changeset
7050 redefined nor retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7051 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7052 Primitive classes (for example, <code>java.lang.Integer.TYPE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7053 and array classes are never modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
7054 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7055 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7056 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7057 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7058 <capability id="can_redefine_any_class">
a61af66fc99e Initial load
duke
parents:
diff changeset
7059 If possessed then all classes (except primitive and array classes)
a61af66fc99e Initial load
duke
parents:
diff changeset
7060 are modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
7061 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7062 <capability id="can_redefine_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7063 No effect on the result of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7064 But must additionally be possessed to modify the class with
a61af66fc99e Initial load
duke
parents:
diff changeset
7065 <functionlink id="RedefineClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7066 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7067 <capability id="can_retransform_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7068 No effect on the result of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7069 But must additionally be possessed to modify the class with
a61af66fc99e Initial load
duke
parents:
diff changeset
7070 <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7071 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7072 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7073 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7074 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7075 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7076 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7077 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7078 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7079 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7080 <param id="is_modifiable_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7081 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7082 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7083 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7084 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7085 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7086 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7087 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7088 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7089 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7090
a61af66fc99e Initial load
duke
parents:
diff changeset
7091 <function id="GetClassLoader" phase="start" num="57">
a61af66fc99e Initial load
duke
parents:
diff changeset
7092 <synopsis>Get Class Loader</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7093 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7094 For the class indicated by <code>klass</code>, return via
a61af66fc99e Initial load
duke
parents:
diff changeset
7095 <code>classloader_ptr</code> a reference to the class loader for the
a61af66fc99e Initial load
duke
parents:
diff changeset
7096 class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7097 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7098 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7099 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7100 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7101 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7102 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7103 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7104 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7105 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7106 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7107 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7108 <param id="classloader_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7109 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7110 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7111 On return, points to the class loader that loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
7112 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7113 If the class was not created by a class loader
a61af66fc99e Initial load
duke
parents:
diff changeset
7114 or if the class loader is the bootstrap class loader,
a61af66fc99e Initial load
duke
parents:
diff changeset
7115 points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7116 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7117 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7118 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7119 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7120 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7121
a61af66fc99e Initial load
duke
parents:
diff changeset
7122 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7123
a61af66fc99e Initial load
duke
parents:
diff changeset
7124 <function id="GetSourceDebugExtension" phase="start" num="90">
a61af66fc99e Initial load
duke
parents:
diff changeset
7125 <synopsis>Get Source Debug Extension</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7126 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7127 For the class indicated by <code>klass</code>, return the debug
a61af66fc99e Initial load
duke
parents:
diff changeset
7128 extension via <code>source_debug_extension_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7129 The returned string
a61af66fc99e Initial load
duke
parents:
diff changeset
7130 contains exactly the debug extension information present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7131 class file of <code>klass</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7132 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7133 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7134 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7135 <required id="can_get_source_debug_extension"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7136 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7137 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7138 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7139 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7140 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7141 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7142 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7143 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7144 <param id="source_debug_extension_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7145 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7146 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7147 On return, points to the class's debug extension, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7148 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7149 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7150 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7151 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7152 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7153 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7154 Class information does not include a debug extension.
a61af66fc99e Initial load
duke
parents:
diff changeset
7155 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7156 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7157 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7158
a61af66fc99e Initial load
duke
parents:
diff changeset
7159 <function id="RetransformClasses" jkernel="yes" num="152" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
7160 <synopsis>Retransform Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7161 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7162 This function facilitates the
a61af66fc99e Initial load
duke
parents:
diff changeset
7163 <internallink id="bci">bytecode instrumentation</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7164 of already loaded classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7165 To replace the class definition without reference to the existing
a61af66fc99e Initial load
duke
parents:
diff changeset
7166 bytecodes, as one might do when recompiling from source for
a61af66fc99e Initial load
duke
parents:
diff changeset
7167 fix-and-continue debugging, <functionlink id="RedefineClasses"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7168 function should be used instead.
a61af66fc99e Initial load
duke
parents:
diff changeset
7169 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7170 When classes are initially loaded or when they are
a61af66fc99e Initial load
duke
parents:
diff changeset
7171 <functionlink id="RedefineClasses">redefined</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7172 the initial class file bytes can be transformed with the
a61af66fc99e Initial load
duke
parents:
diff changeset
7173 <eventlink id="ClassFileLoadHook"/> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
7174 This function reruns the transformation process
a61af66fc99e Initial load
duke
parents:
diff changeset
7175 (whether or not a transformation has previously occurred).
a61af66fc99e Initial load
duke
parents:
diff changeset
7176 This retransformation follows these steps:
a61af66fc99e Initial load
duke
parents:
diff changeset
7177 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7178 <li>starting from the initial class file bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
7179 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7180 <li>for each <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
7181 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
7182 incapable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7183 agent which received a
a61af66fc99e Initial load
duke
parents:
diff changeset
7184 <code>ClassFileLoadHook</code> event during the previous
a61af66fc99e Initial load
duke
parents:
diff changeset
7185 load or redefine, the bytes it returned
a61af66fc99e Initial load
duke
parents:
diff changeset
7186 (via the <code>new_class_data</code> parameter)
a61af66fc99e Initial load
duke
parents:
diff changeset
7187 are reused as the output of the transformation;
a61af66fc99e Initial load
duke
parents:
diff changeset
7188 note that this is equivalent to reapplying
a61af66fc99e Initial load
duke
parents:
diff changeset
7189 the previous transformation, unaltered. except that
a61af66fc99e Initial load
duke
parents:
diff changeset
7190 the <code>ClassFileLoadHook</code> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7191 is <b>not</b> sent to these agents
a61af66fc99e Initial load
duke
parents:
diff changeset
7192 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7193 <li>for each <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
7194 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
7195 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7196 agent, the <code>ClassFileLoadHook</code> event is sent,
a61af66fc99e Initial load
duke
parents:
diff changeset
7197 allowing a new transformation to be applied
a61af66fc99e Initial load
duke
parents:
diff changeset
7198 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7199 <li>the transformed class file bytes are installed as the new
a61af66fc99e Initial load
duke
parents:
diff changeset
7200 definition of the class
a61af66fc99e Initial load
duke
parents:
diff changeset
7201 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7202 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7203 See the <eventlink id="ClassFileLoadHook"/> event for more details.
a61af66fc99e Initial load
duke
parents:
diff changeset
7204 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7205 The initial class file bytes represent the bytes passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
7206 <code>ClassLoader.defineClass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7207 or <code>RedefineClasses</code> (before any transformations
a61af66fc99e Initial load
duke
parents:
diff changeset
7208 were applied), however they may not exactly match them.
a61af66fc99e Initial load
duke
parents:
diff changeset
7209 The constant pool may differ in ways described in
a61af66fc99e Initial load
duke
parents:
diff changeset
7210 <functionlink id="GetConstantPool"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7211 Constant pool indices in the bytecodes of methods will correspond.
a61af66fc99e Initial load
duke
parents:
diff changeset
7212 Some attributes may not be present.
a61af66fc99e Initial load
duke
parents:
diff changeset
7213 Where order is not meaningful, for example the order of methods,
a61af66fc99e Initial load
duke
parents:
diff changeset
7214 order may not be preserved.
a61af66fc99e Initial load
duke
parents:
diff changeset
7215 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7216 Retransformation can cause new versions of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7217 Old method versions may become
a61af66fc99e Initial load
duke
parents:
diff changeset
7218 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7219 The new method version will be used on new invokes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7220 If a method has active stack frames, those active frames continue to
a61af66fc99e Initial load
duke
parents:
diff changeset
7221 run the bytecodes of the original method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7222 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7223 This function does not cause any initialization except that which
a61af66fc99e Initial load
duke
parents:
diff changeset
7224 would occur under the customary JVM semantics.
a61af66fc99e Initial load
duke
parents:
diff changeset
7225 In other words, retransforming a class does not cause its initializers to be
a61af66fc99e Initial load
duke
parents:
diff changeset
7226 run. The values of static fields will remain as they were
a61af66fc99e Initial load
duke
parents:
diff changeset
7227 prior to the call.
a61af66fc99e Initial load
duke
parents:
diff changeset
7228 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7229 Threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
7230 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7231 All breakpoints in the class are cleared.
a61af66fc99e Initial load
duke
parents:
diff changeset
7232 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7233 All attributes are updated.
a61af66fc99e Initial load
duke
parents:
diff changeset
7234 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7235 Instances of the retransformed class are not affected -- fields retain their
a61af66fc99e Initial load
duke
parents:
diff changeset
7236 previous values.
a61af66fc99e Initial load
duke
parents:
diff changeset
7237 <functionlink id="GetTag">Tags</functionlink> on the instances are
a61af66fc99e Initial load
duke
parents:
diff changeset
7238 also unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
7239 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7240 In response to this call, no events other than the
a61af66fc99e Initial load
duke
parents:
diff changeset
7241 <eventlink id="ClassFileLoadHook"/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7242 will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
7243 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7244 The retransformation may change method bodies, the constant pool and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7245 The retransformation must not add, remove or rename fields or methods, change the
a61af66fc99e Initial load
duke
parents:
diff changeset
7246 signatures of methods, change modifiers, or change inheritance.
a61af66fc99e Initial load
duke
parents:
diff changeset
7247 These restrictions may be lifted in future versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7248 See the error return description below for information on error codes
a61af66fc99e Initial load
duke
parents:
diff changeset
7249 returned if an unsupported retransformation is attempted.
a61af66fc99e Initial load
duke
parents:
diff changeset
7250 The class file bytes are not verified or installed until they have passed
a61af66fc99e Initial load
duke
parents:
diff changeset
7251 through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
a61af66fc99e Initial load
duke
parents:
diff changeset
7252 returned error code reflects the result of the transformations.
a61af66fc99e Initial load
duke
parents:
diff changeset
7253 If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7254 none of the classes to be retransformed will have a new definition installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7255 When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7256 all of the classes to be retransformed will have their new definitions installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7257 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7258 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7259 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7260 <required id="can_retransform_classes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7261 <capability id="can_retransform_any_class"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7262 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7263 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7264 <param id="class_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7265 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7266 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7267 The number of classes to be retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7268 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7269 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7270 <param id="classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7271 <inbuf incount="class_count"><jclass/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7272 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7273 The array of classes to be retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7274 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7275 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7276 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7277 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7278 <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7279 One of the <paramlink id="classes"/> cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
7280 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7281 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7282 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7283 One of the <paramlink id="classes"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7284 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7285 <error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7286 A retransformed class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7287 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7288 <error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
a61af66fc99e Initial load
duke
parents:
diff changeset
7289 A retransformed class file is malformed (The VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7290 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7291 <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7292 The retransformed class file definitions would lead to a circular definition
a61af66fc99e Initial load
duke
parents:
diff changeset
7293 (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7294 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7295 <error id="JVMTI_ERROR_FAILS_VERIFICATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7296 The retransformed class file bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
7297 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7298 <error id="JVMTI_ERROR_NAMES_DONT_MATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
7299 The class name defined in a retransformed class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
7300 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7301 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7302 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7303 A retransformed class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
7304 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7305 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7306 A retransformed class file changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
7307 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7308 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7309 A direct superclass is different for a retransformed class file,
a61af66fc99e Initial load
duke
parents:
diff changeset
7310 or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
7311 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
7312 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7313 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7314 A retransformed class file does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
7315 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7316 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7317 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7318 A retransformed class file has different class modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
7319 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7320 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7321 A method in the retransformed class file has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
7322 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7323 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7324 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7325 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7326
a61af66fc99e Initial load
duke
parents:
diff changeset
7327 <function id="RedefineClasses" jkernel="yes" num="87">
a61af66fc99e Initial load
duke
parents:
diff changeset
7328 <synopsis>Redefine Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7329 <typedef id="jvmtiClassDefinition" label="Class redefinition description">
a61af66fc99e Initial load
duke
parents:
diff changeset
7330 <field id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7331 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7332 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7333 Class object for this class
a61af66fc99e Initial load
duke
parents:
diff changeset
7334 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7335 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7336 <field id="class_byte_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7337 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7338 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7339 Number of bytes defining class (below)
a61af66fc99e Initial load
duke
parents:
diff changeset
7340 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7341 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7342 <field id="class_bytes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7343 <inbuf incount="class_byte_count"><uchar/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7344 <description>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7345 Bytes defining class (in <vmspec chapter="4"/>)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7346 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7347 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7348 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
7349 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7350 All classes given are redefined according to the definitions
a61af66fc99e Initial load
duke
parents:
diff changeset
7351 supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
7352 This function is used to replace the definition of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
7353 with a new definition, as might be needed in fix-and-continue
a61af66fc99e Initial load
duke
parents:
diff changeset
7354 debugging.
a61af66fc99e Initial load
duke
parents:
diff changeset
7355 Where the existing class file bytes are to be transformed, for
a61af66fc99e Initial load
duke
parents:
diff changeset
7356 example in
a61af66fc99e Initial load
duke
parents:
diff changeset
7357 <internallink id="bci">bytecode instrumentation</internallink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7358 <functionlink id="RetransformClasses"/> should be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
7359 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7360 Redefinition can cause new versions of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7361 Old method versions may become
a61af66fc99e Initial load
duke
parents:
diff changeset
7362 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7363 The new method version will be used on new invokes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7364 If a method has active stack frames, those active frames continue to
a61af66fc99e Initial load
duke
parents:
diff changeset
7365 run the bytecodes of the original method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7366 If resetting of stack frames is desired, use
a61af66fc99e Initial load
duke
parents:
diff changeset
7367 <functionlink id="PopFrame"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7368 to pop frames with obsolete method versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7369 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7370 This function does not cause any initialization except that which
a61af66fc99e Initial load
duke
parents:
diff changeset
7371 would occur under the customary JVM semantics.
a61af66fc99e Initial load
duke
parents:
diff changeset
7372 In other words, redefining a class does not cause its initializers to be
a61af66fc99e Initial load
duke
parents:
diff changeset
7373 run. The values of static fields will remain as they were
a61af66fc99e Initial load
duke
parents:
diff changeset
7374 prior to the call.
a61af66fc99e Initial load
duke
parents:
diff changeset
7375 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7376 Threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
7377 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7378 All breakpoints in the class are cleared.
a61af66fc99e Initial load
duke
parents:
diff changeset
7379 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7380 All attributes are updated.
a61af66fc99e Initial load
duke
parents:
diff changeset
7381 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7382 Instances of the redefined class are not affected -- fields retain their
a61af66fc99e Initial load
duke
parents:
diff changeset
7383 previous values.
a61af66fc99e Initial load
duke
parents:
diff changeset
7384 <functionlink id="GetTag">Tags</functionlink> on the instances are
a61af66fc99e Initial load
duke
parents:
diff changeset
7385 also unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
7386 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7387 In response to this call, the <jvmti/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7388 <eventlink id="ClassFileLoadHook">Class File Load Hook</eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7389 will be sent (if enabled), but no other <jvmti/> events will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
7390 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7391 The redefinition may change method bodies, the constant pool and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7392 The redefinition must not add, remove or rename fields or methods, change the
a61af66fc99e Initial load
duke
parents:
diff changeset
7393 signatures of methods, change modifiers, or change inheritance.
a61af66fc99e Initial load
duke
parents:
diff changeset
7394 These restrictions may be lifted in future versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7395 See the error return description below for information on error codes
a61af66fc99e Initial load
duke
parents:
diff changeset
7396 returned if an unsupported redefinition is attempted.
a61af66fc99e Initial load
duke
parents:
diff changeset
7397 The class file bytes are not verified or installed until they have passed
a61af66fc99e Initial load
duke
parents:
diff changeset
7398 through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
a61af66fc99e Initial load
duke
parents:
diff changeset
7399 returned error code reflects the result of the transformations applied
a61af66fc99e Initial load
duke
parents:
diff changeset
7400 to the bytes passed into <paramlink id="class_definitions"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7401 If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7402 none of the classes to be redefined will have a new definition installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7403 When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7404 all of the classes to be redefined will have their new definitions installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7405 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7406 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7407 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7408 <required id="can_redefine_classes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7409 <capability id="can_redefine_any_class"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7410 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7411 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7412 <param id="class_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7413 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7414 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7415 The number of classes specified in <code>class_definitions</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7416 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7417 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7418 <param id="class_definitions">
a61af66fc99e Initial load
duke
parents:
diff changeset
7419 <inbuf incount="class_count"><struct>jvmtiClassDefinition</struct></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7420 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7421 The array of new class definitions
a61af66fc99e Initial load
duke
parents:
diff changeset
7422 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7423 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7424 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7425 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7426 <error id="JVMTI_ERROR_NULL_POINTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
7427 One of <code>class_bytes</code> is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7428 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7429 <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7430 An element of <code>class_definitions</code> cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
7431 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7432 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7433 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7434 An element of <code>class_definitions</code> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7435 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7436 <error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7437 A new class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7438 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7439 <error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
a61af66fc99e Initial load
duke
parents:
diff changeset
7440 A new class file is malformed (The VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7441 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7442 <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7443 The new class file definitions would lead to a circular definition
a61af66fc99e Initial load
duke
parents:
diff changeset
7444 (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7445 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7446 <error id="JVMTI_ERROR_FAILS_VERIFICATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7447 The class bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
7448 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7449 <error id="JVMTI_ERROR_NAMES_DONT_MATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
7450 The class name defined in a new class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
7451 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7452 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7453 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7454 A new class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
7455 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7456 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7457 A new class version changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
7458 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7459 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7460 A direct superclass is different for a new class
a61af66fc99e Initial load
duke
parents:
diff changeset
7461 version, or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
7462 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
7463 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7464 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7465 A new class version does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
7466 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7467 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7468 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7469 A new class version has different modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
7470 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7471 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7472 A method in the new class version has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
7473 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7474 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7475 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7476 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7477
a61af66fc99e Initial load
duke
parents:
diff changeset
7478 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7479
a61af66fc99e Initial load
duke
parents:
diff changeset
7480 <category id="object" label="Object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7481
a61af66fc99e Initial load
duke
parents:
diff changeset
7482 <function id="GetObjectSize" jkernel="yes" phase="start" num="154">
a61af66fc99e Initial load
duke
parents:
diff changeset
7483 <synopsis>Get Object Size</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7484 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7485 For the object indicated by <code>object</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7486 return via <code>size_ptr</code> the size of the object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7487 This size is an implementation-specific approximation of
a61af66fc99e Initial load
duke
parents:
diff changeset
7488 the amount of storage consumed by this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7489 It may include some or all of the object's overhead, and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
7490 is useful for comparison within an implementation but not
a61af66fc99e Initial load
duke
parents:
diff changeset
7491 between implementations.
a61af66fc99e Initial load
duke
parents:
diff changeset
7492 The estimate may change during a single invocation of the JVM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7493 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7494 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7495 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7496 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7497 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7498 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7499 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7500 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7501 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7502 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7503 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7504 <param id="size_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7505 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7506 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7507 On return, points to the object's size in bytes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7508 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7509 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7510 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7511 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7512 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7513 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7514
a61af66fc99e Initial load
duke
parents:
diff changeset
7515 <function id="GetObjectHashCode" phase="start" num="58">
a61af66fc99e Initial load
duke
parents:
diff changeset
7516 <synopsis>Get Object Hash Code</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7517 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7518 For the object indicated by <code>object</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7519 return via <code>hash_code_ptr</code> a hash code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7520 This hash code could be used to maintain a hash table of object references,
a61af66fc99e Initial load
duke
parents:
diff changeset
7521 however, on some implementations this can cause significant performance
a61af66fc99e Initial load
duke
parents:
diff changeset
7522 impacts--in most cases
a61af66fc99e Initial load
duke
parents:
diff changeset
7523 <internallink id="Heap">tags</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7524 will be a more efficient means of associating information with objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
7525 This function guarantees
a61af66fc99e Initial load
duke
parents:
diff changeset
7526 the same hash code value for a particular object throughout its life
a61af66fc99e Initial load
duke
parents:
diff changeset
7527 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7528 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7529 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7530 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7531 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7532 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7533 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7534 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7535 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7536 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7537 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7538 <param id="hash_code_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7539 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7540 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7541 On return, points to the object's hash code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7542 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7543 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7544 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7545 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7546 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7547 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7548
a61af66fc99e Initial load
duke
parents:
diff changeset
7549 <function id="GetObjectMonitorUsage" num="59">
a61af66fc99e Initial load
duke
parents:
diff changeset
7550 <synopsis>Get Object Monitor Usage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7551 <typedef id="jvmtiMonitorUsage" label="Object monitor usage information">
a61af66fc99e Initial load
duke
parents:
diff changeset
7552 <field id="owner">
a61af66fc99e Initial load
duke
parents:
diff changeset
7553 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7554 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7555 The thread owning this monitor, or <code>NULL</code> if unused
a61af66fc99e Initial load
duke
parents:
diff changeset
7556 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7557 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7558 <field id="entry_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7559 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7560 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7561 The number of times the owning thread has entered the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7562 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7563 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7564 <field id="waiter_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7565 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7566 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7567 The number of threads waiting to own this monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7568 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7569 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7570 <field id="waiters">
a61af66fc99e Initial load
duke
parents:
diff changeset
7571 <allocfieldbuf><jthread/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7572 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7573 The <code>waiter_count</code> waiting threads
a61af66fc99e Initial load
duke
parents:
diff changeset
7574 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7575 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7576 <field id="notify_waiter_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7577 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7578 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7579 The number of threads waiting to be notified by this monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7580 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7581 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7582 <field id="notify_waiters">
a61af66fc99e Initial load
duke
parents:
diff changeset
7583 <allocfieldbuf><jthread/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7584 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7585 The <code>notify_waiter_count</code> threads waiting to be notified
a61af66fc99e Initial load
duke
parents:
diff changeset
7586 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7587 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7588 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
7589 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7590 Get information about the object's monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
7591 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
7592 are filled in with information about usage of the monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
7593 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
7594 Decide and then clarify suspend requirements.
a61af66fc99e Initial load
duke
parents:
diff changeset
7595 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
7596 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7597 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7598 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7599 <required id="can_get_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7600 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7601 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7602 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7603 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7604 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7605 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7606 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7607 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7608 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7609 <outptr><struct>jvmtiMonitorUsage</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7610 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7611 On return, filled with monitor information for the
a61af66fc99e Initial load
duke
parents:
diff changeset
7612 specified object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7613 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7614 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7615 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7616 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7617 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7618 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7619
a61af66fc99e Initial load
duke
parents:
diff changeset
7620 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
7621 <function id="GetObjectMonitors" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
7622 <synopsis>Get Object Monitors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7623 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7624 Return the list of object monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
7625 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7626 Note: details about each monitor can be examined with
a61af66fc99e Initial load
duke
parents:
diff changeset
7627 <functionlink id="GetObjectMonitorUsage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7628 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7629 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7630 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7631 <required id="can_get_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7632 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7633 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7634 <param id="monitorCnt">
a61af66fc99e Initial load
duke
parents:
diff changeset
7635 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7636 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7637 On return, pointer to the number
a61af66fc99e Initial load
duke
parents:
diff changeset
7638 of monitors returned in <code>monitors_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7639 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7640 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7641 <param id="monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7642 <allocbuf outcount="monitorCnt"><jobject/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7643 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7644 On return, pointer to the monitor list.
a61af66fc99e Initial load
duke
parents:
diff changeset
7645 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7646 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7647 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7648 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7649 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7650 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7651 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
7652
a61af66fc99e Initial load
duke
parents:
diff changeset
7653 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7654
a61af66fc99e Initial load
duke
parents:
diff changeset
7655 <category id="fieldCategory" label="Field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7656
a61af66fc99e Initial load
duke
parents:
diff changeset
7657 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7658 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7659
a61af66fc99e Initial load
duke
parents:
diff changeset
7660 <function id="GetFieldName" phase="start" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
7661 <synopsis>Get Field Name (and Signature)</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7662 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7663 For the field indicated by <paramlink id="klass"/> and <paramlink id="field"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7664 return the field name via <paramlink id="name_ptr"/> and field signature via
a61af66fc99e Initial load
duke
parents:
diff changeset
7665 <paramlink id="signature_ptr"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7666 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7667 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
7668 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
7669 <vmspec chapter="4.3.2"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7670 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7671 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7672 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7673 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7674 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7675 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7676 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7677 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7678 The class of the field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7679 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7680 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7681 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7682 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7683 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7684 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7685 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7686 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7687 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7688 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7689 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7690 <nullok>the name is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7691 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7692 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7693 On return, points to the field name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7694 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7695 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7696 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7697 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7698 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7699 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7700 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7701 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7702 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7703 On return, points to the field signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7704 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7705 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7706 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7707 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7708 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7709 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7710 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7711 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7712 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7713 On return, points to the generic signature of the field, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7714 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7715 If there is no generic signature attribute for the field, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
7716 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7717 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7718 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7719 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7720 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7721 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7722 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7723
a61af66fc99e Initial load
duke
parents:
diff changeset
7724 <function id="GetFieldDeclaringClass" phase="start" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
7725 <synopsis>Get Field Declaring Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7726 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7727 For the field indicated by <code>klass</code> and <code>field</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7728 return the class that defined it via <code>declaring_class_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7729 The declaring class will either be <code>klass</code>, a superclass, or
a61af66fc99e Initial load
duke
parents:
diff changeset
7730 an implemented interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
7731 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7732 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7733 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7734 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7735 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7736 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7737 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7738 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7739 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7740 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7741 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7742 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7743 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7744 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7745 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7746 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7747 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7748 <param id="declaring_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7749 <outptr><jclass/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7750 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7751 On return, points to the declaring class
a61af66fc99e Initial load
duke
parents:
diff changeset
7752 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7753 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7754 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7755 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7756 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7757 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7758
a61af66fc99e Initial load
duke
parents:
diff changeset
7759 <function id="GetFieldModifiers" phase="start" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
7760 <synopsis>Get Field Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7761 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7762 For the field indicated by <code>klass</code> and <code>field</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7763 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
7764 Access flags are defined in <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7765 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7766 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7767 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7768 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7769 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7770 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7771 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7772 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7773 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7774 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7775 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7776 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7777 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7778 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7779 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7780 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7781 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7782 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7783 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7784 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7785 On return, points to the access flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
7786 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7787 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7788 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7789 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7790 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7791 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7792
a61af66fc99e Initial load
duke
parents:
diff changeset
7793 <function id="IsFieldSynthetic" phase="start" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
7794 <synopsis>Is Field Synthetic</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7795 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7796 For the field indicated by <code>klass</code> and <code>field</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
7797 value indicating whether the field is synthetic via <code>is_synthetic_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7798 Synthetic fields are generated by the compiler but not present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7799 original source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7800 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7801 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7802 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7803 <required id="can_get_synthetic_attribute"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7804 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7805 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7806 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7807 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7808 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7809 The class of the field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7810 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7811 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7812 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7813 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7814 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7815 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7816 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7817 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7818 <param id="is_synthetic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7819 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7820 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7821 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7822 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7823 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7824 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7825 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7826 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7827 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7828
a61af66fc99e Initial load
duke
parents:
diff changeset
7829 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7830
a61af66fc99e Initial load
duke
parents:
diff changeset
7831 <category id="method" label="Method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7832
a61af66fc99e Initial load
duke
parents:
diff changeset
7833 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7834 These functions provide information about a method (represented as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7835 <typelink id="jmethodID"/>) and set how methods are processed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7836 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7837
a61af66fc99e Initial load
duke
parents:
diff changeset
7838 <intro id="obsoleteMethods" label="Obsolete Methods">
a61af66fc99e Initial load
duke
parents:
diff changeset
7839 The functions <functionlink id="RetransformClasses"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
7840 <functionlink id="RedefineClasses"/> can cause new versions
a61af66fc99e Initial load
duke
parents:
diff changeset
7841 of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7842 An original version of a method is considered equivalent
a61af66fc99e Initial load
duke
parents:
diff changeset
7843 to the new version if:
a61af66fc99e Initial load
duke
parents:
diff changeset
7844 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7845 <li>their bytecodes are the same except for indices into the
a61af66fc99e Initial load
duke
parents:
diff changeset
7846 constant pool and </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7847 <li>the referenced constants are equal.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7848 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7849 An original method version which is not equivalent to the
a61af66fc99e Initial load
duke
parents:
diff changeset
7850 new method version is called obsolete and is assigned a new method ID;
a61af66fc99e Initial load
duke
parents:
diff changeset
7851 the original method ID now refers to the new method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7852 A method ID can be tested for obsolescence with
a61af66fc99e Initial load
duke
parents:
diff changeset
7853 <functionlink id="IsMethodObsolete"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7854 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7855
a61af66fc99e Initial load
duke
parents:
diff changeset
7856 <function id="GetMethodName" phase="start" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
7857 <synopsis>Get Method Name (and Signature)</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7858 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7859 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7860 return the method name via <code>name_ptr</code> and method signature via
a61af66fc99e Initial load
duke
parents:
diff changeset
7861 <code>signature_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7862 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7863 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
7864 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
7865 <vmspec chapter="4.3.3"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7866 Note this is different
a61af66fc99e Initial load
duke
parents:
diff changeset
7867 than method signatures as defined in the <i>Java Language Specification</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7868 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7869 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7870 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7871 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7872 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7873 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7874 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7875 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7876 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7877 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7878 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7879 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7880 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7881 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7882 <nullok>the name is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7883 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7884 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7885 On return, points to the method name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7886 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7887 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7888 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7889 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7890 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7891 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7892 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7893 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7894 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7895 On return, points to the method signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7896 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7897 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7898 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7899 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7900 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7901 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7902 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7903 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7904 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7905 On return, points to the generic signature of the method, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7906 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7907 If there is no generic signature attribute for the method, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
7908 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7909 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7910 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7911 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7912 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7913 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7914 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7915
a61af66fc99e Initial load
duke
parents:
diff changeset
7916 <function id="GetMethodDeclaringClass" phase="start" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
7917 <synopsis>Get Method Declaring Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7918 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7919 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7920 return the class that defined it via <code>declaring_class_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7921 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7922 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7923 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7924 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7925 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7926 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7927 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7928 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7929 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7930 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7931 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7932 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7933 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7934 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7935 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7936 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7937 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7938 <param id="declaring_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7939 <outptr><jclass/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7940 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7941 On return, points to the declaring class
a61af66fc99e Initial load
duke
parents:
diff changeset
7942 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7943 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7944 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7945 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7946 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7947 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7948
a61af66fc99e Initial load
duke
parents:
diff changeset
7949 <function id="GetMethodModifiers" phase="start" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
7950 <synopsis>Get Method Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7951 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7952 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7953 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
7954 Access flags are defined in <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7955 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7956 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7957 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7958 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7959 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7960 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7961 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7962 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7963 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7964 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7965 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7966 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7967 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7968 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7969 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7970 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7971 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7972 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7973 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7974 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7975 On return, points to the access flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
7976 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7977 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7978 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7979 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7980 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7981 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7982
a61af66fc99e Initial load
duke
parents:
diff changeset
7983 <function id="GetMaxLocals" phase="start" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
7984 <synopsis>Get Max Locals</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7985 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7986 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7987 return the number of local variable slots used by the method,
a61af66fc99e Initial load
duke
parents:
diff changeset
7988 including the local variables used to pass parameters to the
a61af66fc99e Initial load
duke
parents:
diff changeset
7989 method on its invocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
7990 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7991 See <code>max_locals</code> in <vmspec chapter="4.7.3"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7992 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7993 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7994 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7995 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7996 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7997 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7998 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7999 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8000 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8001 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8002 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8003 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8004 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8005 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8006 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8007 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8008 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8009 <param id="max_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8010 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8011 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8012 On return, points to the maximum number of local slots
a61af66fc99e Initial load
duke
parents:
diff changeset
8013 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8014 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8015 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8016 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8017 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8018 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8019
a61af66fc99e Initial load
duke
parents:
diff changeset
8020 <function id="GetArgumentsSize" phase="start" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
8021 <synopsis>Get Arguments Size</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8022 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8023 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8024 return via <code>max_ptr</code> the number of local variable slots used
a61af66fc99e Initial load
duke
parents:
diff changeset
8025 by the method's arguments.
a61af66fc99e Initial load
duke
parents:
diff changeset
8026 Note that two-word arguments use two slots.
a61af66fc99e Initial load
duke
parents:
diff changeset
8027 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8028 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8029 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8030 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8031 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8032 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8033 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8034 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8035 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8036 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8037 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8038 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8039 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8040 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8041 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8042 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8043 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8044 <param id="size_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8045 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8046 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8047 On return, points to the number of argument slots
a61af66fc99e Initial load
duke
parents:
diff changeset
8048 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8049 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8050 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8051 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8052 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8053 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8054
a61af66fc99e Initial load
duke
parents:
diff changeset
8055 <function id="GetLineNumberTable" phase="start" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
8056 <synopsis>Get Line Number Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8057 <typedef id="jvmtiLineNumberEntry" label="Line number table entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
8058 <field id="start_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
8059 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8060 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8061 the <datalink id="jlocation"></datalink> where the line begins
a61af66fc99e Initial load
duke
parents:
diff changeset
8062 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8063 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8064 <field id="line_number">
a61af66fc99e Initial load
duke
parents:
diff changeset
8065 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8066 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8067 the line number
a61af66fc99e Initial load
duke
parents:
diff changeset
8068 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8069 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8070 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
8071 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8072 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8073 return a table of source line number entries. The size of the table is
a61af66fc99e Initial load
duke
parents:
diff changeset
8074 returned via <code>entry_count_ptr</code> and the table itself is
a61af66fc99e Initial load
duke
parents:
diff changeset
8075 returned via <code>table_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8076 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8077 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8078 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8079 <required id="can_get_line_numbers"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8080 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8081 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8082 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8083 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8084 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8085 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8086 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8087 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8088 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8089 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8090 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8091 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8092 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8093 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8094 <param id="entry_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8095 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8096 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8097 On return, points to the number of entries in the table
a61af66fc99e Initial load
duke
parents:
diff changeset
8098 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8099 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8100 <param id="table_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8101 <allocbuf outcount="entry_count_ptr"><struct>jvmtiLineNumberEntry</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8102 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8103 On return, points to the line number table pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
8104 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8105 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8106 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8107 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8108 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8109 Class information does not include line numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
8110 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8111 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8112 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8113
a61af66fc99e Initial load
duke
parents:
diff changeset
8114 <function id="GetMethodLocation" phase="start" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
8115 <synopsis>Get Method Location</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8116 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8117 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8118 return the beginning and ending addresses through
a61af66fc99e Initial load
duke
parents:
diff changeset
8119 <code>start_location_ptr</code> and <code>end_location_ptr</code>. In a
a61af66fc99e Initial load
duke
parents:
diff changeset
8120 conventional byte code indexing scheme,
a61af66fc99e Initial load
duke
parents:
diff changeset
8121 <code>start_location_ptr</code> will always point to zero
a61af66fc99e Initial load
duke
parents:
diff changeset
8122 and <code>end_location_ptr</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8123 will always point to the byte code count minus one.
a61af66fc99e Initial load
duke
parents:
diff changeset
8124 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8125 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8126 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8127 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8128 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8129 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8130 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8131 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8132 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8133 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8134 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8135 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8136 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8137 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8138 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8139 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8140 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8141 <param id="start_location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8142 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8143 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8144 On return, points to the first location, or
a61af66fc99e Initial load
duke
parents:
diff changeset
8145 <code>-1</code> if location information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
8146 If the information is available and
a61af66fc99e Initial load
duke
parents:
diff changeset
8147 <functionlink id="GetJLocationFormat"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8148 returns <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8149 then this will always be zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
8150 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8151 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8152 <param id="end_location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8153 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8154 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8155 On return, points to the last location,
a61af66fc99e Initial load
duke
parents:
diff changeset
8156 or <code>-1</code> if location information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
8157 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8158 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8159 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8160 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8161 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8162 Class information does not include method sizes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8163 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8164 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8165 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8166
a61af66fc99e Initial load
duke
parents:
diff changeset
8167 <function id="GetLocalVariableTable" num="72">
a61af66fc99e Initial load
duke
parents:
diff changeset
8168 <synopsis>Get Local Variable Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8169 <typedef id="jvmtiLocalVariableEntry" label="Local variable table entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
8170 <field id="start_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
8171 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8172 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8173 The code array index where the local variable is first valid
a61af66fc99e Initial load
duke
parents:
diff changeset
8174 (that is, where it must have a value).
a61af66fc99e Initial load
duke
parents:
diff changeset
8175 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8176 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8177 <field id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
8178 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8179 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8180 The length of the valid section for this local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
8181 The last code array index where the local variable is valid
a61af66fc99e Initial load
duke
parents:
diff changeset
8182 is <code>start_location + length</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8183 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8184 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8185 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
8186 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8187 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8188 The local variable name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8189 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8190 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8191 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8192 <field id="signature">
a61af66fc99e Initial load
duke
parents:
diff changeset
8193 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8194 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8195 The local variable's type signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8196 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8197 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
8198 <vmspec chapter="4.3.2"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
8199 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8200 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8201 <field id="generic_signature">
a61af66fc99e Initial load
duke
parents:
diff changeset
8202 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8203 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8204 The local variable's generic signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8205 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8206 The value of this field will be <code>NULL</code> for any local
a61af66fc99e Initial load
duke
parents:
diff changeset
8207 variable which does not have a generic type.
a61af66fc99e Initial load
duke
parents:
diff changeset
8208 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8209 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8210 <field id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
8211 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8212 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8213 The local variable's slot. See <internallink id="local">Local Variables</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8214 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8215 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8216 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
8217 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8218 Return local variable information.
a61af66fc99e Initial load
duke
parents:
diff changeset
8219 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8220 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8221 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8222 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8223 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8224 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8225 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8226 <jmethodID native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8227 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8228 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8229 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8230 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8231 <param id="entry_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8232 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8233 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8234 On return, points to the number of entries in the table
a61af66fc99e Initial load
duke
parents:
diff changeset
8235 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8236 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8237 <param id="table_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8238 <allocbuf outcount="entry_count_ptr"><struct>jvmtiLocalVariableEntry</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8239 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8240 On return, points to an array of local variable table entries.
a61af66fc99e Initial load
duke
parents:
diff changeset
8241 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8242 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8243 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8244 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8245 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8246 Class information does not include local variable
a61af66fc99e Initial load
duke
parents:
diff changeset
8247 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
8248 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8249 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8250 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8251
a61af66fc99e Initial load
duke
parents:
diff changeset
8252 <function id="GetBytecodes" phase="start" num="75">
a61af66fc99e Initial load
duke
parents:
diff changeset
8253 <synopsis>Get Bytecodes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8254 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8255 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8256 return the byte codes that implement the method. The number of
a61af66fc99e Initial load
duke
parents:
diff changeset
8257 bytecodes is returned via <code>bytecode_count_ptr</code>. The byte codes
a61af66fc99e Initial load
duke
parents:
diff changeset
8258 themselves are returned via <code>bytecodes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8259 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8260 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8261 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8262 <required id="can_get_bytecodes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8263 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8264 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8265 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8266 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8267 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8268 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8269 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8270 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8271 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8272 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8273 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8274 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8275 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8276 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8277 <param id="bytecode_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8278 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8279 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8280 On return, points to the length of the byte code array
a61af66fc99e Initial load
duke
parents:
diff changeset
8281 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8282 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8283 <param id="bytecodes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8284 <allocbuf outcount="bytecode_count_ptr"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8285 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8286 On return, points to the pointer to the byte code array
a61af66fc99e Initial load
duke
parents:
diff changeset
8287 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8288 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8289 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8290 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8291 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8292 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8293
a61af66fc99e Initial load
duke
parents:
diff changeset
8294 <function id="IsMethodNative" phase="start" num="76">
a61af66fc99e Initial load
duke
parents:
diff changeset
8295 <synopsis>Is Method Native</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8296 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8297 For the method indicated by <code>method</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
8298 value indicating whether the method is native via <code>is_native_ptr</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8299 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8300 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8301 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8302 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8303 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8304 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8305 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8306 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8307 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8308 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8309 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8310 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8311 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8312 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8313 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8314 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8315 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8316 <param id="is_native_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8317 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8318 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8319 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8320 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8321 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8322 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8323 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8324 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8325 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8326
a61af66fc99e Initial load
duke
parents:
diff changeset
8327 <function id="IsMethodSynthetic" phase="start" num="77">
a61af66fc99e Initial load
duke
parents:
diff changeset
8328 <synopsis>Is Method Synthetic</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8329 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8330 For the method indicated by <code>method</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
8331 value indicating whether the method is synthetic via <code>is_synthetic_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8332 Synthetic methods are generated by the compiler but not present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
8333 original source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
8334 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8335 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8336 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8337 <required id="can_get_synthetic_attribute"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8338 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8339 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8340 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8341 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8342 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8343 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8344 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8345 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8346 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8347 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8348 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8349 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8350 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8351 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8352 <param id="is_synthetic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8353 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8354 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8355 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8356 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8357 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8358 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8359 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8360 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8361 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8362
a61af66fc99e Initial load
duke
parents:
diff changeset
8363 <function id="IsMethodObsolete" phase="start" num="91">
a61af66fc99e Initial load
duke
parents:
diff changeset
8364 <synopsis>Is Method Obsolete</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8365 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8366 Determine if a method ID refers to an
a61af66fc99e Initial load
duke
parents:
diff changeset
8367 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8368 method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
8369 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8370 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8371 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8372 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8373 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8374 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8375 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8376 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8377 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8378 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8379 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8380 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8381 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8382 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8383 The method ID to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8384 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8385 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8386 <param id="is_obsolete_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8387 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8388 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8389 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8390 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8391 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8392 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8393 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8394 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8395 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8396
a61af66fc99e Initial load
duke
parents:
diff changeset
8397 <function id="SetNativeMethodPrefix" jkernel="yes" phase="any" num="73" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8398 <synopsis>Set Native Method Prefix</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8399 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8400 This function modifies the failure handling of
a61af66fc99e Initial load
duke
parents:
diff changeset
8401 native method resolution by allowing retry
a61af66fc99e Initial load
duke
parents:
diff changeset
8402 with a prefix applied to the name.
a61af66fc99e Initial load
duke
parents:
diff changeset
8403 When used with the
a61af66fc99e Initial load
duke
parents:
diff changeset
8404 <eventlink id="ClassFileLoadHook">ClassFileLoadHook
a61af66fc99e Initial load
duke
parents:
diff changeset
8405 event</eventlink>, it enables native methods to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8406 <internallink id="bci">instrumented</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8407 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8408 Since native methods cannot be directly instrumented
a61af66fc99e Initial load
duke
parents:
diff changeset
8409 (they have no bytecodes), they must be wrapped with
a61af66fc99e Initial load
duke
parents:
diff changeset
8410 a non-native method which can be instrumented.
a61af66fc99e Initial load
duke
parents:
diff changeset
8411 For example, if we had:
a61af66fc99e Initial load
duke
parents:
diff changeset
8412 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8413 native boolean foo(int x);</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8414 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8415 We could transform the class file (with the
a61af66fc99e Initial load
duke
parents:
diff changeset
8416 ClassFileLoadHook event) so that this becomes:
a61af66fc99e Initial load
duke
parents:
diff changeset
8417 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8418 boolean foo(int x) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8419 <i>... record entry to foo ...</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
8420 return wrapped_foo(x);
a61af66fc99e Initial load
duke
parents:
diff changeset
8421 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8422
a61af66fc99e Initial load
duke
parents:
diff changeset
8423 native boolean wrapped_foo(int x);</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8424 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8425 Where foo becomes a wrapper for the actual native method
a61af66fc99e Initial load
duke
parents:
diff changeset
8426 with the appended prefix "wrapped_". Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
8427 "wrapped_" would be a poor choice of prefix since it
a61af66fc99e Initial load
duke
parents:
diff changeset
8428 might conceivably form the name of an existing method
a61af66fc99e Initial load
duke
parents:
diff changeset
8429 thus something like "$$$MyAgentWrapped$$$_" would be
a61af66fc99e Initial load
duke
parents:
diff changeset
8430 better but would make these examples less readable.
a61af66fc99e Initial load
duke
parents:
diff changeset
8431 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8432 The wrapper will allow data to be collected on the native
a61af66fc99e Initial load
duke
parents:
diff changeset
8433 method call, but now the problem becomes linking up the
a61af66fc99e Initial load
duke
parents:
diff changeset
8434 wrapped method with the native implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8435 That is, the method <code>wrapped_foo</code> needs to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8436 resolved to the native implementation of <code>foo</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8437 which might be:
a61af66fc99e Initial load
duke
parents:
diff changeset
8438 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8439 Java_somePackage_someClass_foo(JNIEnv* env, jint x)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8440 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8441 This function allows the prefix to be specified and the
a61af66fc99e Initial load
duke
parents:
diff changeset
8442 proper resolution to occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
8443 Specifically, when the standard resolution fails, the
a61af66fc99e Initial load
duke
parents:
diff changeset
8444 resolution is retried taking the prefix into consideration.
a61af66fc99e Initial load
duke
parents:
diff changeset
8445 There are two ways that resolution occurs, explicit
a61af66fc99e Initial load
duke
parents:
diff changeset
8446 resolution with the JNI function <code>RegisterNatives</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8447 and the normal automatic resolution. For
a61af66fc99e Initial load
duke
parents:
diff changeset
8448 <code>RegisterNatives</code>, the VM will attempt this
a61af66fc99e Initial load
duke
parents:
diff changeset
8449 association:
a61af66fc99e Initial load
duke
parents:
diff changeset
8450 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8451 method(foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8452 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8453 When this fails, the resolution will be retried with
a61af66fc99e Initial load
duke
parents:
diff changeset
8454 the specified prefix prepended to the method name,
a61af66fc99e Initial load
duke
parents:
diff changeset
8455 yielding the correct resolution:
a61af66fc99e Initial load
duke
parents:
diff changeset
8456 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8457 method(wrapped_foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8458 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8459 For automatic resolution, the VM will attempt:
a61af66fc99e Initial load
duke
parents:
diff changeset
8460 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8461 method(wrapped_foo) -> nativeImplementation(wrapped_foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8462 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8463 When this fails, the resolution will be retried with
a61af66fc99e Initial load
duke
parents:
diff changeset
8464 the specified prefix deleted from the implementation name,
a61af66fc99e Initial load
duke
parents:
diff changeset
8465 yielding the correct resolution:
a61af66fc99e Initial load
duke
parents:
diff changeset
8466 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8467 method(wrapped_foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8468 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8469 Note that since the prefix is only used when standard
a61af66fc99e Initial load
duke
parents:
diff changeset
8470 resolution fails, native methods can be wrapped selectively.
a61af66fc99e Initial load
duke
parents:
diff changeset
8471 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8472 Since each <jvmti/> environment is independent and
a61af66fc99e Initial load
duke
parents:
diff changeset
8473 can do its own transformation of the bytecodes, more
a61af66fc99e Initial load
duke
parents:
diff changeset
8474 than one layer of wrappers may be applied. Thus each
a61af66fc99e Initial load
duke
parents:
diff changeset
8475 environment needs its own prefix. Since transformations
a61af66fc99e Initial load
duke
parents:
diff changeset
8476 are applied in order, the prefixes, if applied, will
a61af66fc99e Initial load
duke
parents:
diff changeset
8477 be applied in the same order.
a61af66fc99e Initial load
duke
parents:
diff changeset
8478 The order of transformation application is described in
a61af66fc99e Initial load
duke
parents:
diff changeset
8479 the <eventlink id="ClassFileLoadHook"/> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
8480 Thus if three environments applied
a61af66fc99e Initial load
duke
parents:
diff changeset
8481 wrappers, <code>foo</code> might become
a61af66fc99e Initial load
duke
parents:
diff changeset
8482 <code>$env3_$env2_$env1_foo</code>. But if, say,
a61af66fc99e Initial load
duke
parents:
diff changeset
8483 the second environment did not apply a wrapper to
a61af66fc99e Initial load
duke
parents:
diff changeset
8484 <code>foo</code> it would be just
a61af66fc99e Initial load
duke
parents:
diff changeset
8485 <code>$env3_$env1_foo</code>. To be able to
a61af66fc99e Initial load
duke
parents:
diff changeset
8486 efficiently determine the sequence of prefixes,
a61af66fc99e Initial load
duke
parents:
diff changeset
8487 an intermediate prefix is only applied if its non-native
a61af66fc99e Initial load
duke
parents:
diff changeset
8488 wrapper exists. Thus, in the last example, even though
a61af66fc99e Initial load
duke
parents:
diff changeset
8489 <code>$env1_foo</code> is not a native method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
8490 <code>$env1_</code> prefix is applied since
a61af66fc99e Initial load
duke
parents:
diff changeset
8491 <code>$env1_foo</code> exists.
a61af66fc99e Initial load
duke
parents:
diff changeset
8492 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8493 Since the prefixes are used at resolution time
a61af66fc99e Initial load
duke
parents:
diff changeset
8494 and since resolution may be arbitrarily delayed, a
a61af66fc99e Initial load
duke
parents:
diff changeset
8495 native method prefix must remain set as long as there
a61af66fc99e Initial load
duke
parents:
diff changeset
8496 are corresponding prefixed native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
8497 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8498 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8499 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8500 <required id="can_set_native_method_prefix"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8501 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8502 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8503 <param id="prefix">
a61af66fc99e Initial load
duke
parents:
diff changeset
8504 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8505 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8506 <nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8507 any existing prefix in this environment is cancelled
a61af66fc99e Initial load
duke
parents:
diff changeset
8508 </nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8509 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8510 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8511 The prefix to apply, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8512 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8513 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8514 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8515 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8516 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8517 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8518 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8519
a61af66fc99e Initial load
duke
parents:
diff changeset
8520 <function id="SetNativeMethodPrefixes" jkernel="yes" phase="any" num="74" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8521 <synopsis>Set Native Method Prefixes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8522 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8523 For a normal agent, <functionlink id="SetNativeMethodPrefix"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8524 will provide all needed native method prefixing.
a61af66fc99e Initial load
duke
parents:
diff changeset
8525 For a meta-agent that performs multiple independent class
a61af66fc99e Initial load
duke
parents:
diff changeset
8526 file transformations (for example as a proxy for another
a61af66fc99e Initial load
duke
parents:
diff changeset
8527 layer of agents) this function allows each transformation
a61af66fc99e Initial load
duke
parents:
diff changeset
8528 to have its own prefix.
a61af66fc99e Initial load
duke
parents:
diff changeset
8529 The prefixes are applied in the order supplied and are
a61af66fc99e Initial load
duke
parents:
diff changeset
8530 processed in the same manor as described for the
a61af66fc99e Initial load
duke
parents:
diff changeset
8531 application of prefixes from multiple <jvmti/> environments
a61af66fc99e Initial load
duke
parents:
diff changeset
8532 in <functionlink id="SetNativeMethodPrefix"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8533 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8534 Any previous prefixes are replaced. Thus, calling this
a61af66fc99e Initial load
duke
parents:
diff changeset
8535 function with a <paramlink id="prefix_count"/> of <code>0</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8536 disables prefixing in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
8537 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8538 <functionlink id="SetNativeMethodPrefix"/> and this function
a61af66fc99e Initial load
duke
parents:
diff changeset
8539 are the two ways to set the prefixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8540 Calling <code>SetNativeMethodPrefix</code> with
a61af66fc99e Initial load
duke
parents:
diff changeset
8541 a prefix is the same as calling this function with
a61af66fc99e Initial load
duke
parents:
diff changeset
8542 <paramlink id="prefix_count"/> of <code>1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8543 Calling <code>SetNativeMethodPrefix</code> with
a61af66fc99e Initial load
duke
parents:
diff changeset
8544 <code>NULL</code> is the same as calling this function with
a61af66fc99e Initial load
duke
parents:
diff changeset
8545 <paramlink id="prefix_count"/> of <code>0</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8546 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8547 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8548 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8549 <required id="can_set_native_method_prefix"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8550 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8551 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8552 <param id="prefix_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
8553 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8554 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8555 The number of prefixes to apply.
a61af66fc99e Initial load
duke
parents:
diff changeset
8556 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8557 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8558 <param id="prefixes">
a61af66fc99e Initial load
duke
parents:
diff changeset
8559 <agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8560 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8561 </agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8562 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8563 The prefixes to apply for this environment, each encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8564 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8565 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8566 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8567 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8568 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8569 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8570 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8571
a61af66fc99e Initial load
duke
parents:
diff changeset
8572 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8573
a61af66fc99e Initial load
duke
parents:
diff changeset
8574 <category id="RawMonitors" label="Raw Monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8575
a61af66fc99e Initial load
duke
parents:
diff changeset
8576 <function id="CreateRawMonitor" phase="onload" callbacksafe="safe" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
8577 <synopsis>Create Raw Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8578 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8579 Create a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8580 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8581 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8582 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8583 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8584 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8585 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
8586 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8587 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8588 A name to identify the monitor, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8589 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8590 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8591 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8592 <param id="monitor_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8593 <outptr><jrawMonitorID/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8594 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8595 On return, points to the created monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8596 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8597 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8598 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8599 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8600 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8601 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8602
a61af66fc99e Initial load
duke
parents:
diff changeset
8603 <function id="DestroyRawMonitor" phase="onload" callbacksafe="safe" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
8604 <synopsis>Destroy Raw Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8605 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8606 Destroy the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8607 If the monitor being destroyed has been entered by this thread, it will be
a61af66fc99e Initial load
duke
parents:
diff changeset
8608 exited before it is destroyed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8609 If the monitor being destroyed has been entered by another thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
8610 an error will be returned and the monitor will not be destroyed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8611 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8612 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8613 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8614 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8615 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8616 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8617 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8618 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8619 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8620 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8621 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8622 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8623 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8624 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8625 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8626 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8627 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8628 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8629
a61af66fc99e Initial load
duke
parents:
diff changeset
8630 <function id="RawMonitorEnter" phase="any" callbacksafe="safe" impl="innative notrace" num="33">
a61af66fc99e Initial load
duke
parents:
diff changeset
8631 <synopsis>Raw Monitor Enter</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8632 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8633 Gain exclusive ownership of a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8634 The same thread may enter a monitor more then once.
a61af66fc99e Initial load
duke
parents:
diff changeset
8635 The thread must
a61af66fc99e Initial load
duke
parents:
diff changeset
8636 <functionlink id="RawMonitorExit">exit</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8637 the monitor the same number of times as it is entered.
a61af66fc99e Initial load
duke
parents:
diff changeset
8638 If a monitor is entered during <code>OnLoad</code> (before attached threads exist)
a61af66fc99e Initial load
duke
parents:
diff changeset
8639 and has not exited when attached threads come into existence, the enter
a61af66fc99e Initial load
duke
parents:
diff changeset
8640 is considered to have occurred on the main thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
8641 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8642 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8643 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8644 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8645 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8646 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8647 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8648 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8649 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8650 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8651 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8652 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8653 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8654 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8655 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8656
a61af66fc99e Initial load
duke
parents:
diff changeset
8657 <function id="RawMonitorExit" phase="any" callbacksafe="safe" impl="innative notrace" num="34">
a61af66fc99e Initial load
duke
parents:
diff changeset
8658 <synopsis>Raw Monitor Exit</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8659 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8660 Release exclusive ownership of a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8661 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8662 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8663 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8664 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8665 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8666 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8667 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8668 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8669 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8670 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8671 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8672 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8673 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8674 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8675 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8676 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8677 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8678 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8679
a61af66fc99e Initial load
duke
parents:
diff changeset
8680 <function id="RawMonitorWait" phase="any" callbacksafe="safe" impl="innative notrace" num="35">
a61af66fc99e Initial load
duke
parents:
diff changeset
8681 <synopsis>Raw Monitor Wait</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8682 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8683 Wait for notification of the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8684 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8685 Causes the current thread to wait until either another thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
8686 <functionlink id="RawMonitorNotify"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
8687 <functionlink id="RawMonitorNotifyAll"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8688 for the specified raw monitor, or the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
8689 <paramlink id="millis">timeout</paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8690 has elapsed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8691 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8692 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8693 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8694 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8695 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8696 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8697 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8698 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8699 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8700 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8701 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8702 <param id="millis">
a61af66fc99e Initial load
duke
parents:
diff changeset
8703 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8704 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8705 The timeout, in milliseconds. If the timeout is
a61af66fc99e Initial load
duke
parents:
diff changeset
8706 zero, then real time is not taken into consideration
a61af66fc99e Initial load
duke
parents:
diff changeset
8707 and the thread simply waits until notified.
a61af66fc99e Initial load
duke
parents:
diff changeset
8708 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8709 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8710 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8711 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8712 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8713 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8714 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8715 <error id="JVMTI_ERROR_INTERRUPT">
a61af66fc99e Initial load
duke
parents:
diff changeset
8716 Wait was interrupted, try again
a61af66fc99e Initial load
duke
parents:
diff changeset
8717 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8718 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8719 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8720
a61af66fc99e Initial load
duke
parents:
diff changeset
8721 <function id="RawMonitorNotify" phase="any" callbacksafe="safe" impl="notrace" num="36">
a61af66fc99e Initial load
duke
parents:
diff changeset
8722 <synopsis>Raw Monitor Notify</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8723 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8724 Notify a single thread waiting on the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8725 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8726 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8727 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8728 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8729 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8730 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8731 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8732 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8733 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8734 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8735 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8736 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8737 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8738 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8739 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8740 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8741 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8742 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8743
a61af66fc99e Initial load
duke
parents:
diff changeset
8744 <function id="RawMonitorNotifyAll" phase="any" callbacksafe="safe" impl="notrace" num="37">
a61af66fc99e Initial load
duke
parents:
diff changeset
8745 <synopsis>Raw Monitor Notify All</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8746 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8747 Notify all threads waiting on the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8748 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8749 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8750 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8751 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8752 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8753 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8754 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8755 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8756 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8757 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8758 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8759 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8760 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8761 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8762 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8763 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8764 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8765 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8766
a61af66fc99e Initial load
duke
parents:
diff changeset
8767 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
8768 <function id="GetRawMonitorUse" num="118">
a61af66fc99e Initial load
duke
parents:
diff changeset
8769 <synopsis>Get Raw Monitor Use</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8771 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
8772 are filled in with information about usage of the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8773 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8774 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8775 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8776 <required id="can_get_raw_monitor_usage"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8777 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8778 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8779 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8780 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8781 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8782 the raw monitor to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8783 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8784 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8785 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8786 <outptr><struct>jvmtiMonitorUsage</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8787 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8788 On return, filled with monitor information for the
a61af66fc99e Initial load
duke
parents:
diff changeset
8789 specified raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8790 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8791 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8792 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8793 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8794 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8795 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8796
a61af66fc99e Initial load
duke
parents:
diff changeset
8797 <function id="GetRawMonitors" num="119">
a61af66fc99e Initial load
duke
parents:
diff changeset
8798 <synopsis>Get Raw Monitors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8799 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8800 Return the list of raw monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
8801 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8802 Note: details about each monitor can be examined with
a61af66fc99e Initial load
duke
parents:
diff changeset
8803 <functionlink id="GetRawMonitorUse"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8804 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8805 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8806 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8807 <required id="can_get_raw_monitor_usage"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8808 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8809 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8810 <param id="monitorCnt">
a61af66fc99e Initial load
duke
parents:
diff changeset
8811 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8812 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8813 On return, pointer to the number
a61af66fc99e Initial load
duke
parents:
diff changeset
8814 of monitors returned in <code>monitors_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8815 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8816 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8817 <param id="monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8818 <allocbuf outcount="monitorCnt"><jrawMonitorID/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8819 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8820 On return, pointer to the monitor list.
a61af66fc99e Initial load
duke
parents:
diff changeset
8821 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8822 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8823 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8824 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8825 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8826 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8827 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
8828 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8829
a61af66fc99e Initial load
duke
parents:
diff changeset
8830 <category id="jniIntercept" label="JNI Function Interception">
a61af66fc99e Initial load
duke
parents:
diff changeset
8831
a61af66fc99e Initial load
duke
parents:
diff changeset
8832 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
8833 Provides the ability to intercept and resend
a61af66fc99e Initial load
duke
parents:
diff changeset
8834 Java Native Interface (JNI) function calls
a61af66fc99e Initial load
duke
parents:
diff changeset
8835 by manipulating the JNI function table.
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
8836 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
8837 Functions</externallink> in the <i>Java Native Interface Specification</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8838 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8839 The following example illustrates intercepting the
a61af66fc99e Initial load
duke
parents:
diff changeset
8840 <code>NewGlobalRef</code> JNI call in order to count reference
a61af66fc99e Initial load
duke
parents:
diff changeset
8841 creation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8842 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8843 JNIEnv original_jni_Functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
8844 JNIEnv redirected_jni_Functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
8845 int my_global_ref_count = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
8846
a61af66fc99e Initial load
duke
parents:
diff changeset
8847 jobject
a61af66fc99e Initial load
duke
parents:
diff changeset
8848 MyNewGlobalRef(JNIEnv *jni_env, jobject lobj) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8849 ++my_global_ref_count;
a61af66fc99e Initial load
duke
parents:
diff changeset
8850 return originalJNIFunctions-&gt;NewGlobalRef(env, lobj);
a61af66fc99e Initial load
duke
parents:
diff changeset
8851 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8852
a61af66fc99e Initial load
duke
parents:
diff changeset
8853 void
a61af66fc99e Initial load
duke
parents:
diff changeset
8854 myInit() {
a61af66fc99e Initial load
duke
parents:
diff changeset
8855 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
8856
a61af66fc99e Initial load
duke
parents:
diff changeset
8857 err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;original_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8858 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8859 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8860 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8861 err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;redirected_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8862 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8863 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8864 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8865 redirectedJNIFunctions-&gt;NewGlobalRef = MyNewGlobalRef;
a61af66fc99e Initial load
duke
parents:
diff changeset
8866 err = (*jvmti_env)-&gt;SetJNIFunctionTable(jvmti_env, redirected_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8867 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8868 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8869 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8870 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8871 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8872 Sometime after <code>myInit</code> is called the user's JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
8873 code is executed which makes the call to create a new global
a61af66fc99e Initial load
duke
parents:
diff changeset
8874 reference. Instead of going to the normal JNI implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
8875 the call goes to <code>myNewGlobalRef</code>. Note that a
a61af66fc99e Initial load
duke
parents:
diff changeset
8876 copy of the original function table is kept so that the normal
a61af66fc99e Initial load
duke
parents:
diff changeset
8877 JNI function can be called after the data is collected.
a61af66fc99e Initial load
duke
parents:
diff changeset
8878 Note also that any JNI functions which are not overwritten
a61af66fc99e Initial load
duke
parents:
diff changeset
8879 will behave normally.
a61af66fc99e Initial load
duke
parents:
diff changeset
8880 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
8881 check that the example compiles and executes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8882 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
8883 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
8884
a61af66fc99e Initial load
duke
parents:
diff changeset
8885 <function id="SetJNIFunctionTable" phase="start" num="120">
a61af66fc99e Initial load
duke
parents:
diff changeset
8886 <synopsis>Set JNI Function Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8887 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8888 Set the JNI function table
a61af66fc99e Initial load
duke
parents:
diff changeset
8889 in all current and future JNI environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
8890 As a result, all future JNI calls are directed to the specified functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
8891 Use <functionlink id="GetJNIFunctionTable"></functionlink> to get the
a61af66fc99e Initial load
duke
parents:
diff changeset
8892 function table to pass to this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8893 For this function to take effect the the updated table entries must be
a61af66fc99e Initial load
duke
parents:
diff changeset
8894 used by the JNI clients.
a61af66fc99e Initial load
duke
parents:
diff changeset
8895 Since the table is defined <code>const</code> some compilers may optimize
a61af66fc99e Initial load
duke
parents:
diff changeset
8896 away the access to the table, thus preventing this function from taking
a61af66fc99e Initial load
duke
parents:
diff changeset
8897 effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8898 The table is copied--changes to the local copy of the
a61af66fc99e Initial load
duke
parents:
diff changeset
8899 table have no effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8900 This function affects only the function table, all other aspects of the environment are
a61af66fc99e Initial load
duke
parents:
diff changeset
8901 unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
8902 See the examples <internallink id="jniIntercept">above</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8903 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8904 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8905 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8906 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8907 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8908 <param id="function_table">
a61af66fc99e Initial load
duke
parents:
diff changeset
8909 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8910 <struct>jniNativeInterface</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8911 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8912 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8913 Points to the new JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8914 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8915 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8916 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8917 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8918 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8919 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8920
a61af66fc99e Initial load
duke
parents:
diff changeset
8921 <function id="GetJNIFunctionTable" phase="start" num="121">
a61af66fc99e Initial load
duke
parents:
diff changeset
8922 <synopsis>Get JNI Function Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8923 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8924 Get the JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8925 The JNI function table is copied into allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
8926 If <functionlink id="SetJNIFunctionTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8927 has been called, the modified (not the original) function
a61af66fc99e Initial load
duke
parents:
diff changeset
8928 table is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
8929 Only the function table is copied, no other aspects of the environment
a61af66fc99e Initial load
duke
parents:
diff changeset
8930 are copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
8931 See the examples <internallink id="jniIntercept">above</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8932 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8933 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8934 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8935 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8936 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8937 <param id="function_table">
a61af66fc99e Initial load
duke
parents:
diff changeset
8938 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8939 <struct>jniNativeInterface</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8940 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8941 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8942 On return, <code>*function_table</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8943 points a newly allocated copy of the JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8944 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8945 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8946 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8947 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8948 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8949 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8950
a61af66fc99e Initial load
duke
parents:
diff changeset
8951 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8952
a61af66fc99e Initial load
duke
parents:
diff changeset
8953 <category id="eventManagement" label="Event Management">
a61af66fc99e Initial load
duke
parents:
diff changeset
8954
a61af66fc99e Initial load
duke
parents:
diff changeset
8955 <function id="SetEventCallbacks" jkernel="yes" phase="onload" num="122">
a61af66fc99e Initial load
duke
parents:
diff changeset
8956 <synopsis>Set Event Callbacks</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8957 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8958 Set the functions to be called for each event.
a61af66fc99e Initial load
duke
parents:
diff changeset
8959 The callbacks are specified by supplying a replacement function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8960 The function table is copied--changes to the local copy of the
a61af66fc99e Initial load
duke
parents:
diff changeset
8961 table have no effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8962 This is an atomic action, all callbacks are set at once.
a61af66fc99e Initial load
duke
parents:
diff changeset
8963 No events are sent before this function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
8964 When an entry is <code>NULL</code> or when the event is beyond
a61af66fc99e Initial load
duke
parents:
diff changeset
8965 <paramlink id="size_of_callbacks"></paramlink> no event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
8966 Details on events are
a61af66fc99e Initial load
duke
parents:
diff changeset
8967 described <internallink id="EventSection">later</internallink> in this document.
a61af66fc99e Initial load
duke
parents:
diff changeset
8968 An event must be enabled and have a callback in order to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8969 sent--the order in which this function and
a61af66fc99e Initial load
duke
parents:
diff changeset
8970 <functionlink id="SetEventNotificationMode"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8971 are called does not affect the result.
a61af66fc99e Initial load
duke
parents:
diff changeset
8972 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8973 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8974 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8975 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8976 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8977 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
8978 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8979 <struct>jvmtiEventCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8980 <nullok>remove the existing callbacks</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8981 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8982 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8983 The new event callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
8984 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8985 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8986 <param id="size_of_callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
8987 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8988 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8989 <code>sizeof(jvmtiEventCallbacks)</code>--for version
a61af66fc99e Initial load
duke
parents:
diff changeset
8990 compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
8991 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8992 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8993 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8994 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8995 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8996 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8997
a61af66fc99e Initial load
duke
parents:
diff changeset
8998 <function id="SetEventNotificationMode" jkernel="yes" phase="onload" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
8999 <synopsis>Set Event Notification Mode</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9000 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9001 Control the generation of events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9002 <constants id="jvmtiEventMode" label="Event Enable/Disable" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9003 <constant id="JVMTI_ENABLE" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9004 If <paramlink id="mode"></paramlink> is <code>JVMTI_ENABLE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9005 the event <paramlink id="event_type"></paramlink> will be enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
9006 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9007 <constant id="JVMTI_DISABLE" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
9008 If <paramlink id="mode"></paramlink> is <code>JVMTI_DISABLE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9009 the event <paramlink id="event_type"></paramlink> will be disabled
a61af66fc99e Initial load
duke
parents:
diff changeset
9010 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9011 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9012 If <code>thread</code> is <code>NULL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9013 the event is enabled or disabled globally; otherwise, it is
a61af66fc99e Initial load
duke
parents:
diff changeset
9014 enabled or disabled for a particular thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9015 An event is generated for
a61af66fc99e Initial load
duke
parents:
diff changeset
9016 a particular thread if it is enabled either at the thread or global
a61af66fc99e Initial load
duke
parents:
diff changeset
9017 levels.
a61af66fc99e Initial load
duke
parents:
diff changeset
9018 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9019 See <internallink id="EventIndex">below</internallink> for information on specific events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9020 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9021 The following events cannot be controlled at the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
9022 level through this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9023 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9024 <li><eventlink id="VMInit"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9025 <li><eventlink id="VMStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9026 <li><eventlink id="VMDeath"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9027 <li><eventlink id="ThreadStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9028 <li><eventlink id="CompiledMethodLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9029 <li><eventlink id="CompiledMethodUnload"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9030 <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9031 <li><eventlink id="DataDumpRequest"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9032 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9033 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9034 Initially, no events are enabled at either the thread level
a61af66fc99e Initial load
duke
parents:
diff changeset
9035 or the global level.
a61af66fc99e Initial load
duke
parents:
diff changeset
9036 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9037 Any needed capabilities (see Event Enabling Capabilities below) must be possessed
a61af66fc99e Initial load
duke
parents:
diff changeset
9038 before calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9039 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9040 Details on events are
a61af66fc99e Initial load
duke
parents:
diff changeset
9041 described <internallink id="EventSection">below</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9042 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9043 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9044 <eventcapabilities></eventcapabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9045 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9046 <param id="mode">
a61af66fc99e Initial load
duke
parents:
diff changeset
9047 <enum>jvmtiEventMode</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9048 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9049 <code>JVMTI_ENABLE</code> or <code>JVMTI_DISABLE</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9050 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9051 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9052 <param id="event_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9053 <enum>jvmtiEvent</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9054 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9055 the event to control
a61af66fc99e Initial load
duke
parents:
diff changeset
9056 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9057 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9058 <param id="event_thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
9059 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9060 <jthread impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9061 <nullok>event is controlled at the global level</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
9062 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9063 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9064 The thread to control
a61af66fc99e Initial load
duke
parents:
diff changeset
9065 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9066 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9067 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9068 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9069 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9070 for future expansion
a61af66fc99e Initial load
duke
parents:
diff changeset
9071 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9072 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9073 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9074 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9075 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
9076 <paramlink id="event_thread"/> is non-<code>NULL</code> and is not a valid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9077 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9078 <error id="JVMTI_ERROR_THREAD_NOT_ALIVE">
a61af66fc99e Initial load
duke
parents:
diff changeset
9079 <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
9080 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9081 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9082 thread level control was attempted on events which do not
a61af66fc99e Initial load
duke
parents:
diff changeset
9083 permit thread level control.
a61af66fc99e Initial load
duke
parents:
diff changeset
9084 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9085 <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
9086 The Required Event Enabling Capability is not possessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9087 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9088 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9089 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9090
a61af66fc99e Initial load
duke
parents:
diff changeset
9091 <function id="GenerateEvents" num="123">
a61af66fc99e Initial load
duke
parents:
diff changeset
9092 <synopsis>Generate Events</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9093 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9094 Generate events to represent the current state of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
9095 For example, if <paramlink id="event_type"/> is
a61af66fc99e Initial load
duke
parents:
diff changeset
9096 <code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9097 a <eventlink id="CompiledMethodLoad"></eventlink> event will be
a61af66fc99e Initial load
duke
parents:
diff changeset
9098 sent for each currently compiled method.
a61af66fc99e Initial load
duke
parents:
diff changeset
9099 Methods that were loaded and now have been unloaded are not sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
9100 The history of what events have previously been sent does not
a61af66fc99e Initial load
duke
parents:
diff changeset
9101 effect what events are sent by this function--for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
9102 all currently compiled methods
a61af66fc99e Initial load
duke
parents:
diff changeset
9103 will be sent each time this function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
9104 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9105 This function is useful when
a61af66fc99e Initial load
duke
parents:
diff changeset
9106 events may have been missed due to the agent attaching after program
a61af66fc99e Initial load
duke
parents:
diff changeset
9107 execution begins; this function generates the missed events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9108 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9109 Attempts to execute Java programming language code or
a61af66fc99e Initial load
duke
parents:
diff changeset
9110 JNI functions may be paused until this function returns -
a61af66fc99e Initial load
duke
parents:
diff changeset
9111 so neither should be called from the thread sending the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9112 This function returns only after the missed events have been
a61af66fc99e Initial load
duke
parents:
diff changeset
9113 sent, processed and have returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
9114 The event may be sent on a different thread than the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
9115 on which the event occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
9116 The callback for the event must be set with
a61af66fc99e Initial load
duke
parents:
diff changeset
9117 <functionlink id="SetEventCallbacks"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9118 and the event must be enabled with
a61af66fc99e Initial load
duke
parents:
diff changeset
9119 <functionlink id="SetEventNotificationMode"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9120 or the events will not occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
9121 If the VM no longer has the information to generate some or
a61af66fc99e Initial load
duke
parents:
diff changeset
9122 all of the requested events, the events are simply not sent -
a61af66fc99e Initial load
duke
parents:
diff changeset
9123 no error is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
9124 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9125 Only the following events are supported:
a61af66fc99e Initial load
duke
parents:
diff changeset
9126 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9127 <li><eventlink id="CompiledMethodLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9128 <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9129 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9130 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9131 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9132 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9133 <capability id="can_generate_compiled_method_load_events"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
9134 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9135 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9136 <param id="event_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9137 <enum>jvmtiEvent</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9138 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9139 The type of event to generate. Must be one of these:
a61af66fc99e Initial load
duke
parents:
diff changeset
9140 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9141 <li><eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9142 <li><eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9143 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9144 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9145 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9146 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9147 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9148 <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
9149 <paramlink id="event_type"/> is
a61af66fc99e Initial load
duke
parents:
diff changeset
9150 <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9151 and <fieldlink id="can_generate_compiled_method_load_events" struct="jvmtiCapabilities"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9152 is <code>false</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9153 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9154 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9155 <paramlink id="event_type"/> is other than
a61af66fc99e Initial load
duke
parents:
diff changeset
9156 <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9157 or <eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9158 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9159 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9160 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9161
a61af66fc99e Initial load
duke
parents:
diff changeset
9162 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
9163
a61af66fc99e Initial load
duke
parents:
diff changeset
9164 <category id="extension" label="Extension Mechanism">
a61af66fc99e Initial load
duke
parents:
diff changeset
9165
a61af66fc99e Initial load
duke
parents:
diff changeset
9166 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9167 These functions
a61af66fc99e Initial load
duke
parents:
diff changeset
9168 allow a <jvmti/> implementation to provide functions and events
a61af66fc99e Initial load
duke
parents:
diff changeset
9169 beyond those defined in this specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
9170 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9171 Both extension functions and extension events have parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9172 each of which has a 'type' and 'kind' chosen from the following tables:
a61af66fc99e Initial load
duke
parents:
diff changeset
9173
a61af66fc99e Initial load
duke
parents:
diff changeset
9174 <constants id="jvmtiParamTypes" label="Extension Function/Event Parameter Types" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9175 <constant id="JVMTI_TYPE_JBYTE" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
9176 Java programming language primitive type - <code>byte</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9177 JNI type <code>jbyte</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9178 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9179 <constant id="JVMTI_TYPE_JCHAR" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
9180 Java programming language primitive type - <code>char</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9181 JNI type <code>jchar</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9182 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9183 <constant id="JVMTI_TYPE_JSHORT" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
9184 Java programming language primitive type - <code>short</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9185 JNI type <code>jshort</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9186 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9187 <constant id="JVMTI_TYPE_JINT" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
9188 Java programming language primitive type - <code>int</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9189 JNI type <datalink id="jint"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9190 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9191 <constant id="JVMTI_TYPE_JLONG" num="105">
a61af66fc99e Initial load
duke
parents:
diff changeset
9192 Java programming language primitive type - <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9193 JNI type <datalink id="jlong"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9194 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9195 <constant id="JVMTI_TYPE_JFLOAT" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
9196 Java programming language primitive type - <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9197 JNI type <datalink id="jfloat"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9198 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9199 <constant id="JVMTI_TYPE_JDOUBLE" num="107">
a61af66fc99e Initial load
duke
parents:
diff changeset
9200 Java programming language primitive type - <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9201 JNI type <datalink id="jdouble"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9202 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9203 <constant id="JVMTI_TYPE_JBOOLEAN" num="108">
a61af66fc99e Initial load
duke
parents:
diff changeset
9204 Java programming language primitive type - <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9205 JNI type <datalink id="jboolean"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9206 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9207 <constant id="JVMTI_TYPE_JOBJECT" num="109">
a61af66fc99e Initial load
duke
parents:
diff changeset
9208 Java programming language object type - <code>java.lang.Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9209 JNI type <datalink id="jobject"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9210 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9211 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9212 <constant id="JVMTI_TYPE_JTHREAD" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
9213 Java programming language object type - <code>java.lang.Thread</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9214 <jvmti/> type <datalink id="jthread"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9215 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9216 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9217 <constant id="JVMTI_TYPE_JCLASS" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
9218 Java programming language object type - <code>java.lang.Class</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9219 JNI type <datalink id="jclass"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9220 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9221 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9222 <constant id="JVMTI_TYPE_JVALUE" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
9223 Union of all Java programming language primitive and object types -
a61af66fc99e Initial load
duke
parents:
diff changeset
9224 JNI type <datalink id="jvalue"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9225 Returned values which represent object types are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9226 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9227 <constant id="JVMTI_TYPE_JFIELDID" num="113">
a61af66fc99e Initial load
duke
parents:
diff changeset
9228 Java programming language field identifier -
a61af66fc99e Initial load
duke
parents:
diff changeset
9229 JNI type <datalink id="jfieldID"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9230 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9231 <constant id="JVMTI_TYPE_JMETHODID" num="114">
a61af66fc99e Initial load
duke
parents:
diff changeset
9232 Java programming language method identifier -
a61af66fc99e Initial load
duke
parents:
diff changeset
9233 JNI type <datalink id="jmethodID"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9234 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9235 <constant id="JVMTI_TYPE_CCHAR" num="115">
a61af66fc99e Initial load
duke
parents:
diff changeset
9236 C programming language type - <code>char</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9237 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9238 <constant id="JVMTI_TYPE_CVOID" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
9239 C programming language type - <code>void</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9240 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9241 <constant id="JVMTI_TYPE_JNIENV" num="117">
a61af66fc99e Initial load
duke
parents:
diff changeset
9242 JNI environment - <code>JNIEnv</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9243 Should be used with the correct <datalink id="jvmtiParamKind"/> to make it a pointer type.
a61af66fc99e Initial load
duke
parents:
diff changeset
9244 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9245 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9246
a61af66fc99e Initial load
duke
parents:
diff changeset
9247 <constants id="jvmtiParamKind" label="Extension Function/Event Parameter Kinds" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9248 <constant id="JVMTI_KIND_IN" num="91">
a61af66fc99e Initial load
duke
parents:
diff changeset
9249 Ingoing argument - <code>foo</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9250 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9251 <constant id="JVMTI_KIND_IN_PTR" num="92">
a61af66fc99e Initial load
duke
parents:
diff changeset
9252 Ingoing pointer argument - <code>const foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9253 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9254 <constant id="JVMTI_KIND_IN_BUF" num="93">
a61af66fc99e Initial load
duke
parents:
diff changeset
9255 Ingoing array argument - <code>const foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9256 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9257 <constant id="JVMTI_KIND_ALLOC_BUF" num="94">
a61af66fc99e Initial load
duke
parents:
diff changeset
9258 Outgoing allocated array argument - <code>foo**</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9259 Free with <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9260 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9261 <constant id="JVMTI_KIND_ALLOC_ALLOC_BUF" num="95">
a61af66fc99e Initial load
duke
parents:
diff changeset
9262 Outgoing allocated array of allocated arrays argument - <code>foo***</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9263 Free with <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9264 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9265 <constant id="JVMTI_KIND_OUT" num="96">
a61af66fc99e Initial load
duke
parents:
diff changeset
9266 Outgoing argument - <code>foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9267 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9268 <constant id="JVMTI_KIND_OUT_BUF" num="97">
a61af66fc99e Initial load
duke
parents:
diff changeset
9269 Outgoing array argument (pre-allocated by agent) - <code>foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9270 Do not <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9271 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9272 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9273
a61af66fc99e Initial load
duke
parents:
diff changeset
9274 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9275
a61af66fc99e Initial load
duke
parents:
diff changeset
9276 <typedef id="jvmtiParamInfo" label="Extension Function/Event Parameter Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9277 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
9278 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9279 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9280 The parameter name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9281 <internallink id="mUTF">modified UTF-8</internallink> string
a61af66fc99e Initial load
duke
parents:
diff changeset
9282 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9283 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9284 <field id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
9285 <enum>jvmtiParamKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9286 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9287 The kind of the parameter - type modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
9288 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9289 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9290 <field id="base_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9291 <enum>jvmtiParamTypes</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9292 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9293 The base type of the parameter - modified by <code>kind</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9294 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9295 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9296 <field id="null_ok">
a61af66fc99e Initial load
duke
parents:
diff changeset
9297 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9298 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9299 Is a <code>NULL</code> argument permitted? Applies only to pointer and object types.
a61af66fc99e Initial load
duke
parents:
diff changeset
9300 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9301 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9302 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9303
a61af66fc99e Initial load
duke
parents:
diff changeset
9304 <callback id="jvmtiExtensionFunction">
a61af66fc99e Initial load
duke
parents:
diff changeset
9305 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9306 <synopsis>Extension Function</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9307 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9308 This is the implementation-specific extension function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9309 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9310 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9311 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
9312 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9313 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9314 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9315 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9316 The <jvmti/> environment is the only fixed parameter for extension functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9317 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9318 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9319 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9320 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9321 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9322 The extension function-specific parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9323 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9324 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9325 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9326 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
9327
a61af66fc99e Initial load
duke
parents:
diff changeset
9328 <function id="GetExtensionFunctions" phase="onload" num="124">
a61af66fc99e Initial load
duke
parents:
diff changeset
9329 <synopsis>Get Extension Functions</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9330
a61af66fc99e Initial load
duke
parents:
diff changeset
9331 <typedef id="jvmtiExtensionFunctionInfo" label="Extension Function Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9332 <field id="func">
a61af66fc99e Initial load
duke
parents:
diff changeset
9333 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9334 <struct>jvmtiExtensionFunction</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9335 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9336 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9337 The actual function to call
a61af66fc99e Initial load
duke
parents:
diff changeset
9338 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9339 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9340 <field id="id">
a61af66fc99e Initial load
duke
parents:
diff changeset
9341 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9342 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9343 The identifier for the extension function, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9344 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9345 Uses package name conventions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9346 For example, <code>com.sun.hotspot.bar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9347 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9348 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9349 <field id="short_description">
a61af66fc99e Initial load
duke
parents:
diff changeset
9350 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9351 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9352 A one sentence description of the function, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9353 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9354 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9355 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9356 <field id="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9357 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9358 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9359 The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9360 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9361 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9362 <field id="params">
a61af66fc99e Initial load
duke
parents:
diff changeset
9363 <allocfieldbuf outcount="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9364 <struct>jvmtiParamInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9365 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9366 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9367 Array of
a61af66fc99e Initial load
duke
parents:
diff changeset
9368 <fieldlink id="param_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9369 parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
a61af66fc99e Initial load
duke
parents:
diff changeset
9370 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9371 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9372 <field id="error_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9373 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9374 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9375 The number of possible error returns (excluding universal errors)
a61af66fc99e Initial load
duke
parents:
diff changeset
9376 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9377 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9378 <field id="errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
9379 <allocfieldbuf outcount="error_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9380 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9381 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9382 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9383 Array of <fieldlink id="error_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9384 possible errors
a61af66fc99e Initial load
duke
parents:
diff changeset
9385 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9386 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9387 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9388
a61af66fc99e Initial load
duke
parents:
diff changeset
9389 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9390 Returns the set of extension functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9391 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9392 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9393 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9394 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9395 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9396 <param id="extension_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9397 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9398 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9399 On return, points to the number of extension functions
a61af66fc99e Initial load
duke
parents:
diff changeset
9400 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9401 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9402 <param id="extensions">
a61af66fc99e Initial load
duke
parents:
diff changeset
9403 <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionFunctionInfo</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9404 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9405 Returns an array of extension function info, one per function
a61af66fc99e Initial load
duke
parents:
diff changeset
9406 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9407 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9408 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9409 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9410 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9411 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9412
a61af66fc99e Initial load
duke
parents:
diff changeset
9413 <function id="GetExtensionEvents" phase="onload" num="125">
a61af66fc99e Initial load
duke
parents:
diff changeset
9414 <synopsis>Get Extension Events</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9415
a61af66fc99e Initial load
duke
parents:
diff changeset
9416 <typedef id="jvmtiExtensionEventInfo" label="Extension Event Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9417 <field id="extension_event_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
9418 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9419 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9420 The identifying index of the event
a61af66fc99e Initial load
duke
parents:
diff changeset
9421 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9422 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9423 <field id="id">
a61af66fc99e Initial load
duke
parents:
diff changeset
9424 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9425 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9426 The identifier for the extension event, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9427 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9428 Uses package name conventions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9429 For example, <code>com.sun.hotspot.bar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9430 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9431 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9432 <field id="short_description">
a61af66fc99e Initial load
duke
parents:
diff changeset
9433 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9434 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9435 A one sentence description of the event, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9436 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9437 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9438 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9439 <field id="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9440 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9441 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9442 The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9443 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9444 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9445 <field id="params">
a61af66fc99e Initial load
duke
parents:
diff changeset
9446 <allocfieldbuf outcount="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9447 <struct>jvmtiParamInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9448 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9449 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9450 Array of
a61af66fc99e Initial load
duke
parents:
diff changeset
9451 <fieldlink id="param_count" struct="jvmtiExtensionEventInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9452 parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
a61af66fc99e Initial load
duke
parents:
diff changeset
9453 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9454 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9455 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9456
a61af66fc99e Initial load
duke
parents:
diff changeset
9457 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9458 Returns the set of extension events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9459 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9460 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9461 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9462 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9463 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9464 <param id="extension_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9465 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9466 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9467 On return, points to the number of extension events
a61af66fc99e Initial load
duke
parents:
diff changeset
9468 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9469 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9470 <param id="extensions">
a61af66fc99e Initial load
duke
parents:
diff changeset
9471 <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionEventInfo</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9472 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9473 Returns an array of extension event info, one per event
a61af66fc99e Initial load
duke
parents:
diff changeset
9474 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9475 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9476 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9477 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9478 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9479 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9480
a61af66fc99e Initial load
duke
parents:
diff changeset
9481 <callback id="jvmtiExtensionEvent">
a61af66fc99e Initial load
duke
parents:
diff changeset
9482 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9483 <synopsis>Extension Event</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9484 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9485 This is the implementation-specific event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9486 The event handler is set with
a61af66fc99e Initial load
duke
parents:
diff changeset
9487 <functionlink id="SetExtensionEventCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9488 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9489 Event handlers for extension events must be declared varargs to match this definition.
a61af66fc99e Initial load
duke
parents:
diff changeset
9490 Failure to do so could result in calling convention mismatch and undefined behavior
a61af66fc99e Initial load
duke
parents:
diff changeset
9491 on some platforms.
a61af66fc99e Initial load
duke
parents:
diff changeset
9492 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9493 For example, if the <code>jvmtiParamInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9494 returned by <functionlink id="GetExtensionEvents"/> indicates that
a61af66fc99e Initial load
duke
parents:
diff changeset
9495 there is a <code>jint</code> parameter, the event handler should be
a61af66fc99e Initial load
duke
parents:
diff changeset
9496 declared:
a61af66fc99e Initial load
duke
parents:
diff changeset
9497 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9498 void JNICALL myHandler(jvmtiEnv* jvmti_env, jint myInt, ...)
a61af66fc99e Initial load
duke
parents:
diff changeset
9499 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9500 Note the terminal "<code>...</code>" which indicates varargs.
a61af66fc99e Initial load
duke
parents:
diff changeset
9501 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9502 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9503 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
9504 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9505 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9506 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9507 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9508 The <jvmti/> environment is the only fixed parameter for extension events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9509 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9510 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9511 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9512 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9513 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9514 The extension event-specific parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9515 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9516 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9517 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9518 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
9519
a61af66fc99e Initial load
duke
parents:
diff changeset
9520 <function id="SetExtensionEventCallback" phase="onload" num="126">
a61af66fc99e Initial load
duke
parents:
diff changeset
9521 <synopsis>Set Extension Event Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9522
a61af66fc99e Initial load
duke
parents:
diff changeset
9523 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9524 Sets the callback function for an extension event and
a61af66fc99e Initial load
duke
parents:
diff changeset
9525 enables the event. Or, if the callback is <code>NULL</code>, disables
a61af66fc99e Initial load
duke
parents:
diff changeset
9526 the event. Note that unlike standard events, setting
a61af66fc99e Initial load
duke
parents:
diff changeset
9527 the callback and enabling the event are a single operation.
a61af66fc99e Initial load
duke
parents:
diff changeset
9528 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9529 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9530 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9531 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9532 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9533 <param id="extension_event_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
9534 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9535 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9536 Identifies which callback to set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9537 This index is the
a61af66fc99e Initial load
duke
parents:
diff changeset
9538 <fieldlink id="extension_event_index" struct="jvmtiExtensionEventInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9539 field of
a61af66fc99e Initial load
duke
parents:
diff changeset
9540 <datalink id="jvmtiExtensionEventInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9541 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9542 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9543 <param id="callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
9544 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9545 <struct>jvmtiExtensionEvent</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9546 <nullok>disable the event</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
9547 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9548 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9549 If <code>callback</code> is non-<code>NULL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9550 set <code>callback</code> to be the event callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
9551 and enable the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9552 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9553 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9554 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9555 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9556 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9557 <paramlink id="extension_event_index"/> is not an
a61af66fc99e Initial load
duke
parents:
diff changeset
9558 <fieldlink id="extension_event_index"
a61af66fc99e Initial load
duke
parents:
diff changeset
9559 struct="jvmtiExtensionEventInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9560 returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
9561 <functionlink id="GetExtensionEvents"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9562 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9563 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9564 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9565
a61af66fc99e Initial load
duke
parents:
diff changeset
9566 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
9567
a61af66fc99e Initial load
duke
parents:
diff changeset
9568 <category id="capability" label="Capability">
a61af66fc99e Initial load
duke
parents:
diff changeset
9569
a61af66fc99e Initial load
duke
parents:
diff changeset
9570 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9571 The capabilities functions allow you to change the
a61af66fc99e Initial load
duke
parents:
diff changeset
9572 functionality available to <jvmti/>--that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
9573 which <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9574 functions can be called, what events can be generated,
a61af66fc99e Initial load
duke
parents:
diff changeset
9575 and what functionality these events and functions can
a61af66fc99e Initial load
duke
parents:
diff changeset
9576 provide.
a61af66fc99e Initial load
duke
parents:
diff changeset
9577 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9578 The "Capabilities" section of each function and event describe which
a61af66fc99e Initial load
duke
parents:
diff changeset
9579 capabilities, if any, they are associated with. "Required Functionality"
a61af66fc99e Initial load
duke
parents:
diff changeset
9580 means it is available for use and no capabilities must be added to use it.
a61af66fc99e Initial load
duke
parents:
diff changeset
9581 "Optional Functionality" means the agent must possess the capability
a61af66fc99e Initial load
duke
parents:
diff changeset
9582 before it can be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
9583 To possess a capability, the agent must
a61af66fc99e Initial load
duke
parents:
diff changeset
9584 <functionlink id="AddCapabilities">add the capability</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9585 "Optional Features" describe capabilities which,
a61af66fc99e Initial load
duke
parents:
diff changeset
9586 if added, extend the feature set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9587 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9588 The potentially available capabilities of each <jvmti/> implementation are different.
a61af66fc99e Initial load
duke
parents:
diff changeset
9589 Depending on the implementation, a capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
9590 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9591 <li>may never be added</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9592 <li>may be added in either the <code>OnLoad</code> or live phase in any environment</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9593 <li>may be added only during the <code>OnLoad</code> phase</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9594 <li>may be possessed by only one environment at a time</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9595 <li>may be possessed by only one environment at a time,
a61af66fc99e Initial load
duke
parents:
diff changeset
9596 and only during the <code>OnLoad</code> phase</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9597 <li>and so on ...</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9598 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9599 Frequently, the addition of a capability may incur a cost in execution speed, start up
a61af66fc99e Initial load
duke
parents:
diff changeset
9600 time, and/or memory footprint. Note that the overhead of using a capability
a61af66fc99e Initial load
duke
parents:
diff changeset
9601 is completely different than the overhead of possessing a capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
9602 Take single stepping as an example. When single stepping is on (that
a61af66fc99e Initial load
duke
parents:
diff changeset
9603 is, when the event is enabled and thus actively sending events)
a61af66fc99e Initial load
duke
parents:
diff changeset
9604 the overhead of sending and processing an event
a61af66fc99e Initial load
duke
parents:
diff changeset
9605 on each instruction is huge in any implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
9606 However, the overhead of possessing the capability may be small or large,
a61af66fc99e Initial load
duke
parents:
diff changeset
9607 depending on the implementation. Also, when and if a capability is potentially
a61af66fc99e Initial load
duke
parents:
diff changeset
9608 available depends on the implementation. Some examples:
a61af66fc99e Initial load
duke
parents:
diff changeset
9609 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9610 <li>One VM might perform all execution by compiling bytecodes into
a61af66fc99e Initial load
duke
parents:
diff changeset
9611 native code and be unable to generate single step instructions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9612 In this implementation the capability can not be added.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9613 <li>Another VM may be able to switch execution to a single stepping
a61af66fc99e Initial load
duke
parents:
diff changeset
9614 interpreter at any time. In this implementation, having the capability has no
a61af66fc99e Initial load
duke
parents:
diff changeset
9615 overhead and could be added at any time.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9616 <li>Yet another VM might be able to choose a bytecode compiling or single stepping capable interpreted
a61af66fc99e Initial load
duke
parents:
diff changeset
9617 execution engine at start up, but be unable to switch between them.
a61af66fc99e Initial load
duke
parents:
diff changeset
9618 In this implementation the capability would need to be added
a61af66fc99e Initial load
duke
parents:
diff changeset
9619 during the <code>OnLoad</code> phase (before bytecode
a61af66fc99e Initial load
duke
parents:
diff changeset
9620 execution begins) and would have a large impact on execution speed
a61af66fc99e Initial load
duke
parents:
diff changeset
9621 even if single stepping was never used.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9622 <li>Still another VM might be able to add an "is single stepping on" check
a61af66fc99e Initial load
duke
parents:
diff changeset
9623 into compiled bytecodes or a generated interpreter. Again in this implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9624 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
9625 and branch on each instruction) would be considerably less.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9626 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9627 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9628 Each <jvmti/> <internallink id="environments">environment</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9629 has its own set of capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9630 Initially, that set is empty.
a61af66fc99e Initial load
duke
parents:
diff changeset
9631 Any desired capability must be added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9632 If possible, capabilities should be added during the <code>OnLoad</code> phase. For most
a61af66fc99e Initial load
duke
parents:
diff changeset
9633 virtual machines certain capabilities require special set up for
a61af66fc99e Initial load
duke
parents:
diff changeset
9634 the virtual machine and this set up must happen
a61af66fc99e Initial load
duke
parents:
diff changeset
9635 during the <code>OnLoad</code> phase, before the virtual machine begins execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
9636 Once a capability is added, it can
a61af66fc99e Initial load
duke
parents:
diff changeset
9637 only be removed if explicitly relinquished by the environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
9638 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9639 The agent can,
a61af66fc99e Initial load
duke
parents:
diff changeset
9640 <functionlink id="GetPotentialCapabilities">determine what
a61af66fc99e Initial load
duke
parents:
diff changeset
9641 capabilities this VM can potentially provide</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9642 <functionlink id="AddCapabilities">add the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9643 to be used</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9644 <functionlink id="RelinquishCapabilities">release capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9645 which are no longer needed</functionlink>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
9646 <functionlink id="GetCapabilities">examine the currently available
a61af66fc99e Initial load
duke
parents:
diff changeset
9647 capabilities</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9648 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9649
a61af66fc99e Initial load
duke
parents:
diff changeset
9650 <intro id="capabilityExamples" label="Capability Examples">
a61af66fc99e Initial load
duke
parents:
diff changeset
9651 For example, a freshly started agent (in the <code>OnLoad</code> function)
a61af66fc99e Initial load
duke
parents:
diff changeset
9652 wants to enable all possible capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9653 Note that, in general, this is not advisable as the agent may suffer
a61af66fc99e Initial load
duke
parents:
diff changeset
9654 a performance penalty for functionality it is not using.
a61af66fc99e Initial load
duke
parents:
diff changeset
9655 The code might look like this in C:
a61af66fc99e Initial load
duke
parents:
diff changeset
9656 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9657 jvmtiCapabilities capa;
a61af66fc99e Initial load
duke
parents:
diff changeset
9658 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
9659
a61af66fc99e Initial load
duke
parents:
diff changeset
9660 err = (*jvmti)-&gt;GetPotentialCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9661 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
9662 err = (*jvmti)-&gt;AddCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9663 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9664 For example, if an agent wants to check if it can get
a61af66fc99e Initial load
duke
parents:
diff changeset
9665 the bytecodes of a method (that is, it wants to check
a61af66fc99e Initial load
duke
parents:
diff changeset
9666 if it previously added this capability and has not
a61af66fc99e Initial load
duke
parents:
diff changeset
9667 relinquished it), the code might
a61af66fc99e Initial load
duke
parents:
diff changeset
9668 look like this in C:
a61af66fc99e Initial load
duke
parents:
diff changeset
9669 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9670 jvmtiCapabilities capa;
a61af66fc99e Initial load
duke
parents:
diff changeset
9671 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
9672
a61af66fc99e Initial load
duke
parents:
diff changeset
9673 err = (*jvmti)-&gt;GetCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9674 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
9675 if (capa.can_get_bytecodes) { ... } }
a61af66fc99e Initial load
duke
parents:
diff changeset
9676 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9677 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9678
a61af66fc99e Initial load
duke
parents:
diff changeset
9679 <capabilitiestypedef id="jvmtiCapabilities" label="The Capabilities Structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
9680 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9681 The functions in this category use this capabilities structure
a61af66fc99e Initial load
duke
parents:
diff changeset
9682 which contains boolean flags corresponding to each capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
9683 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9684 <capabilityfield id="can_tag_objects">
a61af66fc99e Initial load
duke
parents:
diff changeset
9685 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9686 Can set and get tags, as described in the
a61af66fc99e Initial load
duke
parents:
diff changeset
9687 <internallink id="Heap">Heap category</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9688 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9689 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9690 <capabilityfield id="can_generate_field_modification_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9691 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9692 Can set watchpoints on field modification -
a61af66fc99e Initial load
duke
parents:
diff changeset
9693 <functionlink id="SetFieldModificationWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9694 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9695 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9696 <capabilityfield id="can_generate_field_access_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9697 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9698 Can set watchpoints on field access -
a61af66fc99e Initial load
duke
parents:
diff changeset
9699 <functionlink id="SetFieldAccessWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9700 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9701 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9702 <capabilityfield id="can_get_bytecodes">
a61af66fc99e Initial load
duke
parents:
diff changeset
9703 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9704 Can get bytecodes of a method <functionlink id="GetBytecodes"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9705 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9706 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9707 <capabilityfield id="can_get_synthetic_attribute">
a61af66fc99e Initial load
duke
parents:
diff changeset
9708 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9709 Can test if a field or method is synthetic -
a61af66fc99e Initial load
duke
parents:
diff changeset
9710 <functionlink id="IsFieldSynthetic"></functionlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9711 <functionlink id="IsMethodSynthetic"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9712 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9713 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9714 <capabilityfield id="can_get_owned_monitor_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9715 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9716 Can get information about ownership of monitors -
a61af66fc99e Initial load
duke
parents:
diff changeset
9717 <functionlink id="GetOwnedMonitorInfo"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9718 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9719 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9720 <capabilityfield id="can_get_current_contended_monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
9721 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9722 Can <functionlink id="GetCurrentContendedMonitor"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9723 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9724 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9725 <capabilityfield id="can_get_monitor_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9726 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9727 Can <functionlink id="GetObjectMonitorUsage"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9728 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9729 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9730 <capabilityfield id="can_pop_frame">
a61af66fc99e Initial load
duke
parents:
diff changeset
9731 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9732 Can pop frames off the stack - <functionlink id="PopFrame"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9733 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9734 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9735 <capabilityfield id="can_redefine_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
9736 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9737 Can redefine classes with <functionlink id="RedefineClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9738 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9739 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9740 <capabilityfield id="can_signal_thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
9741 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9742 Can send stop or interrupt to threads
a61af66fc99e Initial load
duke
parents:
diff changeset
9743 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9744 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9745 <capabilityfield id="can_get_source_file_name">
a61af66fc99e Initial load
duke
parents:
diff changeset
9746 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9747 Can get the source file name of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
9748 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9749 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9750 <capabilityfield id="can_get_line_numbers">
a61af66fc99e Initial load
duke
parents:
diff changeset
9751 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9752 Can get the line number table of a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9753 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9754 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9755 <capabilityfield id="can_get_source_debug_extension">
a61af66fc99e Initial load
duke
parents:
diff changeset
9756 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9757 Can get the source debug extension of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
9758 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9759 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9760 <capabilityfield id="can_access_local_variables">
a61af66fc99e Initial load
duke
parents:
diff changeset
9761 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9762 Can set and get local variables
a61af66fc99e Initial load
duke
parents:
diff changeset
9763 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9764 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9765 <capabilityfield id="can_maintain_original_method_order">
a61af66fc99e Initial load
duke
parents:
diff changeset
9766 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9767 Can return methods in the order they occur in the class file
a61af66fc99e Initial load
duke
parents:
diff changeset
9768 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9769 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9770 <capabilityfield id="can_generate_single_step_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9771 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9772 Can get <eventlink id="SingleStep">single step</eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9773 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9774 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9775 <capabilityfield id="can_generate_exception_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9776 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9777 Can get <eventlink id="Exception">exception thrown</eventlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9778 <eventlink id="ExceptionCatch">exception catch</eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9779 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9780 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9781 <capabilityfield id="can_generate_frame_pop_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9782 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9783 Can <functionlink id="NotifyFramePop">set</functionlink> and thus get
a61af66fc99e Initial load
duke
parents:
diff changeset
9784 <eventlink id="FramePop"></eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9785 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9786 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9787 <capabilityfield id="can_generate_breakpoint_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9788 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9789 Can <functionlink id="SetBreakpoint">set</functionlink> and thus get
a61af66fc99e Initial load
duke
parents:
diff changeset
9790 <eventlink id="Breakpoint"></eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9791 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9792 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9793 <capabilityfield id="can_suspend">
a61af66fc99e Initial load
duke
parents:
diff changeset
9794 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9795 Can suspend and resume threads
a61af66fc99e Initial load
duke
parents:
diff changeset
9796 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9797 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9798 <capabilityfield id="can_redefine_any_class">
a61af66fc99e Initial load
duke
parents:
diff changeset
9799 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9800 Can modify (retransform or redefine) any non-primitive non-array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
9801 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9802 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9803 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9804 <capabilityfield id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
9805 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9806 Can <functionlink id="GetCurrentThreadCpuTime">get</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9807 current thread CPU time
a61af66fc99e Initial load
duke
parents:
diff changeset
9808 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9809 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9810 <capabilityfield id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
9811 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9812 Can <functionlink id="GetThreadCpuTime">get</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9813 thread CPU time
a61af66fc99e Initial load
duke
parents:
diff changeset
9814 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9815 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9816 <capabilityfield id="can_generate_method_entry_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9817 disp1="can_generate" disp2="_method_entry_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9818 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9819 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9820 Can generate method entry events on entering a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9821 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9822 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9823 <capabilityfield id="can_generate_method_exit_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9824 disp1="can_generate" disp2="_method_exit_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9825 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9826 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9827 Can generate method exit events on leaving a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9828 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9829 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9830 <capabilityfield id="can_generate_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9831 disp1="can_generate" disp2="_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9832 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9833 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9834 Can generate ClassFileLoadHook events for every loaded class.
a61af66fc99e Initial load
duke
parents:
diff changeset
9835 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9836 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9837 <capabilityfield id="can_generate_compiled_method_load_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9838 disp1="can_generate" disp2="_compiled_method_load_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9839 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9840 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9841 Can generate events when a method is compiled or unloaded
a61af66fc99e Initial load
duke
parents:
diff changeset
9842 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9843 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9844 <capabilityfield id="can_generate_monitor_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9845 disp1="can_generate" disp2="_monitor_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9846 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9847 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9848 Can generate events on monitor activity
a61af66fc99e Initial load
duke
parents:
diff changeset
9849 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9850 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9851 <capabilityfield id="can_generate_vm_object_alloc_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9852 disp1="can_generate" disp2="_vm_object_alloc_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9853 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9854 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9855 Can generate events on VM allocation of an object
a61af66fc99e Initial load
duke
parents:
diff changeset
9856 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9857 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9858 <capabilityfield id="can_generate_native_method_bind_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9859 disp1="can_generate" disp2="_native_method_bind_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9860 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9861 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9862 Can generate events when a native method is bound to its
a61af66fc99e Initial load
duke
parents:
diff changeset
9863 implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9864 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9865 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9866 <capabilityfield id="can_generate_garbage_collection_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9867 disp1="can_generate" disp2="_garbage_collection_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9868 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9869 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9870 Can generate events when garbage collection begins or ends
a61af66fc99e Initial load
duke
parents:
diff changeset
9871 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9872 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9873 <capabilityfield id="can_generate_object_free_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9874 disp1="can_generate" disp2="_object_free_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9875 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9876 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9877 Can generate events when the garbage collector frees an object
a61af66fc99e Initial load
duke
parents:
diff changeset
9878 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9879 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9880 <capabilityfield id="can_force_early_return" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9881 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9882 Can return early from a method, as described in the
a61af66fc99e Initial load
duke
parents:
diff changeset
9883 <internallink id="ForceEarlyReturn">Force Early Return category</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9884 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9885 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9886 <capabilityfield id="can_get_owned_monitor_stack_depth_info" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9887 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9888 Can get information about owned monitors with stack depth -
a61af66fc99e Initial load
duke
parents:
diff changeset
9889 <functionlink id="GetOwnedMonitorStackDepthInfo"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9890 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9891 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9892 <capabilityfield id="can_get_constant_pool" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9893 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9894 Can get the constant pool of a class -
a61af66fc99e Initial load
duke
parents:
diff changeset
9895 <functionlink id="GetConstantPool"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9896 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9897 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9898 <capabilityfield id="can_set_native_method_prefix" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9899 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9900 Can set prefix to be applied when native method cannot be resolved -
a61af66fc99e Initial load
duke
parents:
diff changeset
9901 <functionlink id="SetNativeMethodPrefix"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9902 <functionlink id="SetNativeMethodPrefixes"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9903 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9904 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9905 <capabilityfield id="can_retransform_classes" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9906 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9907 Can retransform classes with <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9908 In addition to the restrictions imposed by the specific
a61af66fc99e Initial load
duke
parents:
diff changeset
9909 implementation on this capability (see the
a61af66fc99e Initial load
duke
parents:
diff changeset
9910 <internallink id="capability">Capability</internallink> section),
a61af66fc99e Initial load
duke
parents:
diff changeset
9911 this capability must be set before the
a61af66fc99e Initial load
duke
parents:
diff changeset
9912 <eventlink id="ClassFileLoadHook"/> event is enabled for the
a61af66fc99e Initial load
duke
parents:
diff changeset
9913 first time in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
9914 An environment that possesses this capability at the time that
a61af66fc99e Initial load
duke
parents:
diff changeset
9915 <code>ClassFileLoadHook</code> is enabled for the first time is
a61af66fc99e Initial load
duke
parents:
diff changeset
9916 said to be <i>retransformation capable</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9917 An environment that does not possess this capability at the time that
a61af66fc99e Initial load
duke
parents:
diff changeset
9918 <code>ClassFileLoadHook</code> is enabled for the first time is
a61af66fc99e Initial load
duke
parents:
diff changeset
9919 said to be <i>retransformation incapable</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9920 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9921 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9922 <capabilityfield id="can_retransform_any_class" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9923 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9924 <functionlink id="RetransformClasses"/> can be called on any class
a61af66fc99e Initial load
duke
parents:
diff changeset
9925 (<fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9926 must also be set)
a61af66fc99e Initial load
duke
parents:
diff changeset
9927 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9928 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9929 <capabilityfield id="can_generate_resource_exhaustion_heap_events" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9930 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9931 Can generate events when the VM is unable to allocate memory from
a61af66fc99e Initial load
duke
parents:
diff changeset
9932 the <tm>Java</tm> platform heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
9933 See <eventlink id="ResourceExhausted"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9934 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9935 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9936 <capabilityfield id="can_generate_resource_exhaustion_threads_events" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9937 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9938 Can generate events when the VM is unable to create a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9939 See <eventlink id="ResourceExhausted"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9940 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9941 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9942 </capabilitiestypedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9943
a61af66fc99e Initial load
duke
parents:
diff changeset
9944 <function id="GetPotentialCapabilities" jkernel="yes" phase="onload" num="140">
a61af66fc99e Initial load
duke
parents:
diff changeset
9945 <synopsis>Get Potential Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9946 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9947 Returns via <paramlink id="capabilities_ptr"></paramlink> the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9948 features that can potentially be possessed by this environment
a61af66fc99e Initial load
duke
parents:
diff changeset
9949 at this time.
a61af66fc99e Initial load
duke
parents:
diff changeset
9950 The returned capabilities differ from the complete set of capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9951 implemented by the VM in two cases: another environment possesses
a61af66fc99e Initial load
duke
parents:
diff changeset
9952 capabilities that can only be possessed by one environment, or the
a61af66fc99e Initial load
duke
parents:
diff changeset
9953 current <functionlink id="GetPhase">phase</functionlink> is live,
a61af66fc99e Initial load
duke
parents:
diff changeset
9954 and certain capabilities can only be added during the <code>OnLoad</code> phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9955 The <functionlink id="AddCapabilities"></functionlink> function
a61af66fc99e Initial load
duke
parents:
diff changeset
9956 may be used to set any or all or these capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9957 Currently possessed capabilities are included.
a61af66fc99e Initial load
duke
parents:
diff changeset
9958 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9959 Typically this function is used in the <code>OnLoad</code> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9960 Some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
9961 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9962 In this case, the set of potentially available capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9963 will likely differ from the <code>OnLoad</code> phase set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9964 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9965 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
9966 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9967 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9968 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9969 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9970 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9971 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9972 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9973 <outptr><struct>jvmtiCapabilities</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9974 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9975 On return, points to the <jvmti/> capabilities that may be added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9976 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9977 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9978 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9979 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9980 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9981 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9982
a61af66fc99e Initial load
duke
parents:
diff changeset
9983 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
9984 <function id="EstimateCostOfCapabilities" phase="onload" num="141">
a61af66fc99e Initial load
duke
parents:
diff changeset
9985 <synopsis>Estimate Cost Of Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9986 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9987 <issue>There is strong opposition to this function. The concern is
a61af66fc99e Initial load
duke
parents:
diff changeset
9988 that it would be difficult or impossible to provide meaningful
a61af66fc99e Initial load
duke
parents:
diff changeset
9989 numbers, as the amount of impact is conditional on many factors
a61af66fc99e Initial load
duke
parents:
diff changeset
9990 that a single number could not represent. There is doubt that
a61af66fc99e Initial load
duke
parents:
diff changeset
9991 conditional implementations would be used or are even a good idea.
a61af66fc99e Initial load
duke
parents:
diff changeset
9992 The thought is that release documentation for the implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9993 would be the best means of exposing this information.
a61af66fc99e Initial load
duke
parents:
diff changeset
9994 Unless new arguments are presented, I intend to remove this
a61af66fc99e Initial load
duke
parents:
diff changeset
9995 function in the next revision.
a61af66fc99e Initial load
duke
parents:
diff changeset
9996 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
9997 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9998 Return via the <paramlink id="time_impact_ptr"></paramlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9999 <paramlink id="space_impact_ptr"></paramlink> an estimate of the impact
a61af66fc99e Initial load
duke
parents:
diff changeset
10000 of adding the capabilities pointed to by
a61af66fc99e Initial load
duke
parents:
diff changeset
10001 <paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10002 The returned estimates are in percentage of additional overhead, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10003 a time impact of 100 mean the application might run
a61af66fc99e Initial load
duke
parents:
diff changeset
10004 at half the speed.
a61af66fc99e Initial load
duke
parents:
diff changeset
10005 The estimates are very rough approximations and are not guaranteed.
a61af66fc99e Initial load
duke
parents:
diff changeset
10006 Note also, that the estimates are of the impact of having the
a61af66fc99e Initial load
duke
parents:
diff changeset
10007 capability available--when and if it is used the impact may be
a61af66fc99e Initial load
duke
parents:
diff changeset
10008 much greater.
a61af66fc99e Initial load
duke
parents:
diff changeset
10009 Estimates can be for a single capability or for a set of
a61af66fc99e Initial load
duke
parents:
diff changeset
10010 capabilities. Note that the costs are not necessarily additive,
a61af66fc99e Initial load
duke
parents:
diff changeset
10011 adding support for one capability might make another available
a61af66fc99e Initial load
duke
parents:
diff changeset
10012 for free or conversely having two capabilities at once may
a61af66fc99e Initial load
duke
parents:
diff changeset
10013 have multiplicative impact.
a61af66fc99e Initial load
duke
parents:
diff changeset
10014 Estimates are relative to the current set of capabilities -
a61af66fc99e Initial load
duke
parents:
diff changeset
10015 that is, how much more impact given the currently possessed capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
10016 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10017 Typically this function is used in the OnLoad function,
a61af66fc99e Initial load
duke
parents:
diff changeset
10018 some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
10019 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10020 In this case, the set of potentially available capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10021 will likely differ from the OnLoad phase set.
a61af66fc99e Initial load
duke
parents:
diff changeset
10022 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10023 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10024 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10025 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10026 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10027 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10028 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10029 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10030 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10031 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10032 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10033 points to the <jvmti/> capabilities to evaluate.
a61af66fc99e Initial load
duke
parents:
diff changeset
10034 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10035 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10036 <param id="time_impact_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10037 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10038 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10039 On return, points to the estimated percentage increase in
a61af66fc99e Initial load
duke
parents:
diff changeset
10040 run time if this capability was added.
a61af66fc99e Initial load
duke
parents:
diff changeset
10041 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10042 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10043 <param id="space_impact_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10044 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10045 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10046 On return, points to the estimated percentage increase in
a61af66fc99e Initial load
duke
parents:
diff changeset
10047 memory space used if this capability was added.
a61af66fc99e Initial load
duke
parents:
diff changeset
10048 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10049 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10050 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10051 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10052 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10053 The desired capabilities are not even potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10054 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10055 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10056 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10057 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
10058
a61af66fc99e Initial load
duke
parents:
diff changeset
10059 <function id="AddCapabilities" jkernel="yes" phase="onload" num="142">
a61af66fc99e Initial load
duke
parents:
diff changeset
10060 <synopsis>Add Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10061 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10062 Set new capabilities by adding the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10063 whose values are set to one (<code>1</code>) in
a61af66fc99e Initial load
duke
parents:
diff changeset
10064 <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10065 All previous capabilities are retained.
a61af66fc99e Initial load
duke
parents:
diff changeset
10066 Typically this function is used in the <code>OnLoad</code> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10067 Some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
10068 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10069 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10070 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10071 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10072 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10073 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10074 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10075 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10076 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10077 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10078 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10079 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10080 Points to the <jvmti/> capabilities to add.
a61af66fc99e Initial load
duke
parents:
diff changeset
10081 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10082 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10083 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10084 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10085 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10086 The desired capabilities are not even potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10087 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10088 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10089 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10090
a61af66fc99e Initial load
duke
parents:
diff changeset
10091
a61af66fc99e Initial load
duke
parents:
diff changeset
10092 <function id="RelinquishCapabilities" phase="onload" num="143">
a61af66fc99e Initial load
duke
parents:
diff changeset
10093 <synopsis>Relinquish Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10094 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10095 Relinquish the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10096 whose values are set to one (<code>1</code>) in
a61af66fc99e Initial load
duke
parents:
diff changeset
10097 <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10098 Some implementations may allow only one environment to have a capability
a61af66fc99e Initial load
duke
parents:
diff changeset
10099 (see the <internallink id="capability">capability introduction</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10100 This function releases capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10101 so that they may be used by other agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
10102 All other capabilities are retained.
a61af66fc99e Initial load
duke
parents:
diff changeset
10103 The capability will no longer be present in <functionlink id="GetCapabilities"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10104 Attempting to relinquish a capability that the agent does not possess is not an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
10105 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10106 It is possible for the agent to be actively using capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10107 which are being relinquished. For example, a thread is currently
a61af66fc99e Initial load
duke
parents:
diff changeset
10108 suspended and can_suspend is being relinquished or an event is currently
a61af66fc99e Initial load
duke
parents:
diff changeset
10109 enabled and can_generate_whatever is being relinquished.
a61af66fc99e Initial load
duke
parents:
diff changeset
10110 There are three possible ways we could spec this:
a61af66fc99e Initial load
duke
parents:
diff changeset
10111 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10112 <li>relinquish automatically releases them</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10113 <li>relinquish checks and returns some error code if held</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10114 <li>it is the agent's responsibility and it is not checked</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10115 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10116 One of these should be chosen.
a61af66fc99e Initial load
duke
parents:
diff changeset
10117 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10118 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10119 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10120 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10121 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10122 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10123 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10124 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10125 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10126 Points to the <jvmti/> capabilities to relinquish.
a61af66fc99e Initial load
duke
parents:
diff changeset
10127 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10128 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10129 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10130 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10131 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10132 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10133
a61af66fc99e Initial load
duke
parents:
diff changeset
10134
a61af66fc99e Initial load
duke
parents:
diff changeset
10135
a61af66fc99e Initial load
duke
parents:
diff changeset
10136 <function id="GetCapabilities" jkernel="yes" phase="any" num="89">
a61af66fc99e Initial load
duke
parents:
diff changeset
10137 <synopsis>Get Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10138 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10139 Returns via <paramlink id="capabilities_ptr"></paramlink> the optional <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10140 features which this environment currently possesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
10141 Each possessed capability is indicated by a one (<code>1</code>) in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10142 corresponding field of the <internallink id="jvmtiCapabilities">capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10143 structure</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10144 An environment does not possess a capability unless it has been successfully added with
a61af66fc99e Initial load
duke
parents:
diff changeset
10145 <functionlink id="AddCapabilities"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10146 An environment only loses possession of a capability if it has been relinquished with
a61af66fc99e Initial load
duke
parents:
diff changeset
10147 <functionlink id="RelinquishCapabilities"/>. Thus, this function returns the net result
a61af66fc99e Initial load
duke
parents:
diff changeset
10148 of the <code>AddCapabilities</code> and <code>RelinquishCapabilities</code> calls which
a61af66fc99e Initial load
duke
parents:
diff changeset
10149 have been made.
a61af66fc99e Initial load
duke
parents:
diff changeset
10150 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10151 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10152 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10153 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10154 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10155 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10156 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10157 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10158 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10159 <outptr><struct>jvmtiCapabilities</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10160 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10161 On return, points to the <jvmti/> capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
10162 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10163 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10164 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10165 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10166 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10167 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10168
a61af66fc99e Initial load
duke
parents:
diff changeset
10169 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10170
a61af66fc99e Initial load
duke
parents:
diff changeset
10171
a61af66fc99e Initial load
duke
parents:
diff changeset
10172 <category id="timers" label="Timers">
a61af66fc99e Initial load
duke
parents:
diff changeset
10173
a61af66fc99e Initial load
duke
parents:
diff changeset
10174 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10175 These functions provide timing information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10176 The resolution at which the time is updated is not specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
10177 They provides nanosecond precision, but not necessarily nanosecond accuracy.
a61af66fc99e Initial load
duke
parents:
diff changeset
10178 Details about the timers, such as their maximum values, can be accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
10179 the timer information functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
10180 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10181
a61af66fc99e Initial load
duke
parents:
diff changeset
10182 <typedef id="jvmtiTimerInfo" label="Timer Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
10183 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10184 The information function for each timer returns this data structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
10185 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10186 <field id="max_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
10187 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10188 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10189 The maximum value the timer can reach.
a61af66fc99e Initial load
duke
parents:
diff changeset
10190 After this value is reached the timer wraps back to zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
10191 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10192 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10193 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10194 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10195 <field id="may_skip_forward">
a61af66fc99e Initial load
duke
parents:
diff changeset
10196 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10197 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10198 If true, the timer can be externally adjusted and as a result skip forward.
a61af66fc99e Initial load
duke
parents:
diff changeset
10199 If false, the timer value will never increase faster than real time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10200 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10201 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10202 <field id="may_skip_backward">
a61af66fc99e Initial load
duke
parents:
diff changeset
10203 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10204 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10205 If true, the timer can be externally adjusted and as a result skip backward.
a61af66fc99e Initial load
duke
parents:
diff changeset
10206 If false, the timer value will be monotonically increasing.
a61af66fc99e Initial load
duke
parents:
diff changeset
10207 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10208 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10209 <field id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
10210 <enum>jvmtiTimerKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
10211 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10212 The kind of timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10213 On a platform that does not distinguish between user and system time, <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
10214 id="JVMTI_TIMER_TOTAL_CPU"><code>JVMTI_TIMER_TOTAL_CPU</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10215 is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10216 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10217 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10218 <field id="reserved1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10219 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10220 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10221 Reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
10222 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10223 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10224 <field id="reserved2">
a61af66fc99e Initial load
duke
parents:
diff changeset
10225 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10226 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10227 Reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
10228 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10229 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10230 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
10231
a61af66fc99e Initial load
duke
parents:
diff changeset
10232 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10233 Where the timer kind is --
a61af66fc99e Initial load
duke
parents:
diff changeset
10234
a61af66fc99e Initial load
duke
parents:
diff changeset
10235 <constants id="jvmtiTimerKind" label="Timer Kinds" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10236 <constant id="JVMTI_TIMER_USER_CPU" num="30">
a61af66fc99e Initial load
duke
parents:
diff changeset
10237 CPU time that a thread is in user mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
10238 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10239 <constant id="JVMTI_TIMER_TOTAL_CPU" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
10240 CPU time that a thread is in user or system mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
10241 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10242 <constant id="JVMTI_TIMER_ELAPSED" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
10243 Elapsed time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10244 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10245 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10246 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10247
a61af66fc99e Initial load
duke
parents:
diff changeset
10248 <function id="GetCurrentThreadCpuTimerInfo" callbacksafe="safe" impl="innative notrace" phase="start" num="134">
a61af66fc99e Initial load
duke
parents:
diff changeset
10249 <synopsis>Get Current Thread CPU Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10250 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10251 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10252 <functionlink id="GetCurrentThreadCpuTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10253 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10254 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10255 This information is specific to the platform and the implementation of
a61af66fc99e Initial load
duke
parents:
diff changeset
10256 <functionlink id="GetCurrentThreadCpuTime"/> and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10257 does not vary by thread nor does it vary
a61af66fc99e Initial load
duke
parents:
diff changeset
10258 during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10259 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10260 Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10261 and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10262 returned by <code>GetCurrentThreadCpuTimerInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10263 and <functionlink id="GetThreadCpuTimerInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10264 may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10265 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10266 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10267 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10268 <required id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10269 Can get current thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10270 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10271 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10272 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10273 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10274 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10275 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10276 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10277 returned by <functionlink id="GetCurrentThreadCpuTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10278 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10279 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10280 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10281 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10282 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10283 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10284
a61af66fc99e Initial load
duke
parents:
diff changeset
10285 <function id="GetCurrentThreadCpuTime" callbacksafe="safe" impl="innative notrace" phase="start" num="135">
a61af66fc99e Initial load
duke
parents:
diff changeset
10286 <synopsis>Get Current Thread CPU Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10287 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10288 Return the CPU time utilized by the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
10289 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10290 Note that the <functionlink id="GetThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10291 function provides CPU time for any thread, including
a61af66fc99e Initial load
duke
parents:
diff changeset
10292 the current thread. <code>GetCurrentThreadCpuTime</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10293 exists to support platforms which cannot
a61af66fc99e Initial load
duke
parents:
diff changeset
10294 supply CPU time for threads other than the current
a61af66fc99e Initial load
duke
parents:
diff changeset
10295 thread or which have more accurate information for
a61af66fc99e Initial load
duke
parents:
diff changeset
10296 the current thread (see
a61af66fc99e Initial load
duke
parents:
diff changeset
10297 <functionlink id="GetCurrentThreadCpuTimerInfo"/> vs
a61af66fc99e Initial load
duke
parents:
diff changeset
10298 <functionlink id="GetThreadCpuTimerInfo"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10299 On many platforms this call will be equivalent to:
a61af66fc99e Initial load
duke
parents:
diff changeset
10300 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
10301 GetThreadCpuTime(env, NULL, nanos_ptr)
a61af66fc99e Initial load
duke
parents:
diff changeset
10302 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
10303 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10304 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10305 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10306 <required id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10307 Can get current thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10308 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10309 If this capability is enabled after threads have started,
a61af66fc99e Initial load
duke
parents:
diff changeset
10310 the implementation may choose any time up
a61af66fc99e Initial load
duke
parents:
diff changeset
10311 to and including the time that the capability is enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
10312 as the point where CPU time collection starts.
a61af66fc99e Initial load
duke
parents:
diff changeset
10313 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10314 This capability must be potentially available on any
a61af66fc99e Initial load
duke
parents:
diff changeset
10315 platform where
a61af66fc99e Initial load
duke
parents:
diff changeset
10316 <internallink id="jvmtiCapabilities.can_get_thread_cpu_time"><code>can_get_thread_cpu_time</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10317 is potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10318 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10319 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10320 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10321 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10322 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10323 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10324 On return, points to the CPU time used by this thread
a61af66fc99e Initial load
duke
parents:
diff changeset
10325 in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10326 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10327 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10328 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10329 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10330 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10331 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10332 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10333 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10334
a61af66fc99e Initial load
duke
parents:
diff changeset
10335 <function id="GetThreadCpuTimerInfo" num="136">
a61af66fc99e Initial load
duke
parents:
diff changeset
10336 <synopsis>Get Thread CPU Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10337 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10338 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10339 <functionlink id="GetThreadCpuTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10340 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10341 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10342 This information is specific to the platform and the implementation of
a61af66fc99e Initial load
duke
parents:
diff changeset
10343 <functionlink id="GetThreadCpuTime"/> and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10344 does not vary by thread nor does it vary
a61af66fc99e Initial load
duke
parents:
diff changeset
10345 during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10346 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10347 Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10348 and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10349 returned by <functionlink id="GetCurrentThreadCpuTimerInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10350 and <code>GetThreadCpuTimerInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10351 may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10352 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10353 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10354 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10355 <required id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10356 Can get thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10357 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10358 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10359 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10360 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10361 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10362 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10363 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10364 returned by <functionlink id="GetThreadCpuTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10365 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10366 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10367 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10368 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10369 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10370 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10371
a61af66fc99e Initial load
duke
parents:
diff changeset
10372 <function id="GetThreadCpuTime" num="137">
a61af66fc99e Initial load
duke
parents:
diff changeset
10373 <synopsis>Get Thread CPU Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10374 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10375 Return the CPU time utilized by the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
10376 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10377 Get information about this timer with
a61af66fc99e Initial load
duke
parents:
diff changeset
10378 <functionlink id="GetThreadCpuTimerInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10379 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10380 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10381 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10382 <required id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10383 Can get thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10384 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10385 If this capability is enabled after threads have started,
a61af66fc99e Initial load
duke
parents:
diff changeset
10386 the implementation may choose any time up
a61af66fc99e Initial load
duke
parents:
diff changeset
10387 to and including the time that the capability is enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
10388 as the point where CPU time collection starts.
a61af66fc99e Initial load
duke
parents:
diff changeset
10389 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10390 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10391 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10392 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
10393 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10394 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10395 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
10396 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10397 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10398 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10399 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10400 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10401 On return, points to the CPU time used by the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
10402 in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10403 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10404 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10405 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10406 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10407 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10408 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10409 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10410 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10411
a61af66fc99e Initial load
duke
parents:
diff changeset
10412 <function id="GetTimerInfo" phase="any" callbacksafe="safe" num="138">
a61af66fc99e Initial load
duke
parents:
diff changeset
10413 <synopsis>Get Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10414 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10415 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10416 <functionlink id="GetTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10417 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10418 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10419 This information will not change during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10420 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10421 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10422 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10423 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10424 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10425 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10426 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10427 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10428 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10429 returned by <functionlink id="GetTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10430 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10431 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10432 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10433 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10434 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10435 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10436
a61af66fc99e Initial load
duke
parents:
diff changeset
10437 <function id="GetTime" phase="any" callbacksafe="safe" num="139">
a61af66fc99e Initial load
duke
parents:
diff changeset
10438 <synopsis>Get Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10439 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10440 Return the current value of the system timer, in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10441 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10442 The value returned represents nanoseconds since some fixed but
a61af66fc99e Initial load
duke
parents:
diff changeset
10443 arbitrary time (perhaps in the future, so values may be
a61af66fc99e Initial load
duke
parents:
diff changeset
10444 negative). This function provides nanosecond precision, but not
a61af66fc99e Initial load
duke
parents:
diff changeset
10445 necessarily nanosecond accuracy. No guarantees are made about
a61af66fc99e Initial load
duke
parents:
diff changeset
10446 how frequently values change.
a61af66fc99e Initial load
duke
parents:
diff changeset
10447 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10448 Get information about this timer with
a61af66fc99e Initial load
duke
parents:
diff changeset
10449 <functionlink id="GetTimerInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10450 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10451 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10452 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10453 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10454 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10455 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10456 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10457 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10458 On return, points to the time in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10459 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10460 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10461 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10462 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10463 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10464 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10465 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10466 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10467
a61af66fc99e Initial load
duke
parents:
diff changeset
10468 <function id="GetAvailableProcessors" phase="any" num="144">
a61af66fc99e Initial load
duke
parents:
diff changeset
10469 <synopsis>Get Available Processors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10470 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10471 Returns the number of processors available to the Java virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
10472 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10473 This value may change during a particular invocation of the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
10474 Applications that are sensitive to the number of available processors should
a61af66fc99e Initial load
duke
parents:
diff changeset
10475 therefore occasionally poll this property.
a61af66fc99e Initial load
duke
parents:
diff changeset
10476 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10477 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10478 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10479 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10480 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10481 <param id="processor_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10482 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10483 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10484 On return, points to the maximum number of processors available to the
a61af66fc99e Initial load
duke
parents:
diff changeset
10485 virtual machine; never smaller than one.
a61af66fc99e Initial load
duke
parents:
diff changeset
10486 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10487 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10488 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10489 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10490 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10491 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10492
a61af66fc99e Initial load
duke
parents:
diff changeset
10493 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10494
a61af66fc99e Initial load
duke
parents:
diff changeset
10495
a61af66fc99e Initial load
duke
parents:
diff changeset
10496 <category id="classLoaderSearch" label="Class Loader Search">
a61af66fc99e Initial load
duke
parents:
diff changeset
10497
a61af66fc99e Initial load
duke
parents:
diff changeset
10498 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10499 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
10500 This is useful for installing instrumentation under the correct class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
10501 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10502
a61af66fc99e Initial load
duke
parents:
diff changeset
10503 <function id="AddToBootstrapClassLoaderSearch" jkernel="yes" phase="onload" num="149">
a61af66fc99e Initial load
duke
parents:
diff changeset
10504 <synopsis>Add To Bootstrap Class Loader Search</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10505 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10506 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
10507 bootstrap class loader. See <vmspec chapter="5.3.1"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10508 After the bootstrap
a61af66fc99e Initial load
duke
parents:
diff changeset
10509 class loader unsuccessfully searches for a class, the specified platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10510 search path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in
a61af66fc99e Initial load
duke
parents:
diff changeset
10511 the <paramlink id="segment"/>. This function may be called multiple times to add multiple segments,
a61af66fc99e Initial load
duke
parents:
diff changeset
10512 the segments will be searched in the order that this function was called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10513 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10514 In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10515 search path segment to be searched after the bootstrap class loader unsuccessfully searches
a61af66fc99e Initial load
duke
parents:
diff changeset
10516 for a class. The segment is typically a directory or JAR file.
a61af66fc99e Initial load
duke
parents:
diff changeset
10517 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10518 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
10519 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
10520 JAR file</externallink>. The agent should take care that the JAR file does not
a61af66fc99e Initial load
duke
parents:
diff changeset
10521 contain any classes or resources other than those to be defined by the bootstrap
a61af66fc99e Initial load
duke
parents:
diff changeset
10522 class loader for the purposes of instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
10523 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
10524 <vmspec/> specifies that a subsequent attempt to resolve a symbolic
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10525 reference that the Java virtual machine has previously unsuccessfully attempted
a61af66fc99e Initial load
duke
parents:
diff changeset
10526 to resolve always fails with the same error that was thrown as a result of the
a61af66fc99e Initial load
duke
parents:
diff changeset
10527 initial resolution attempt. Consequently, if the JAR file contains an entry
a61af66fc99e Initial load
duke
parents:
diff changeset
10528 that corresponds to a class for which the Java virtual machine has
a61af66fc99e Initial load
duke
parents:
diff changeset
10529 unsuccessfully attempted to resolve a reference, then subsequent attempts to
a61af66fc99e Initial load
duke
parents:
diff changeset
10530 resolve that reference will fail with the same error as the initial attempt.
a61af66fc99e Initial load
duke
parents:
diff changeset
10531 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10532 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10533 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10534 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10535 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10536 <param id="segment">
a61af66fc99e Initial load
duke
parents:
diff changeset
10537 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10538 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10539 The platform-dependent search path segment, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10540 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10541 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10542 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10543 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10544 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10545 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
10546 <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
a61af66fc99e Initial load
duke
parents:
diff changeset
10547 existing JAR file is an invalid path.
a61af66fc99e Initial load
duke
parents:
diff changeset
10548 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10549 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10550 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10551
a61af66fc99e Initial load
duke
parents:
diff changeset
10552 <function id="AddToSystemClassLoaderSearch" jkernel="yes" phase="onload" num="151" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10553 <synopsis>Add To System Class Loader Search</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10554 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10555 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
10556 defined by the system class loader. See <vmspec chapter="5.3.2"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10557 After the class loader unsuccessfully searches for a class, the specified platform-dependent search
a61af66fc99e Initial load
duke
parents:
diff changeset
10558 path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10559 <paramlink id="segment"/>. This function may be called multiple times to add multiple segments, the
a61af66fc99e Initial load
duke
parents:
diff changeset
10560 segments will be searched in the order that this function was called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10561 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10562 In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10563 search path segment to be searched after the system class loader unsuccessfully searches
a61af66fc99e Initial load
duke
parents:
diff changeset
10564 for a class. The segment is typically a directory or JAR file.
a61af66fc99e Initial load
duke
parents:
diff changeset
10565 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10566 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
10567 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
10568 searched after the system class loader unsuccessfully searches for a class. The agent should
a61af66fc99e Initial load
duke
parents:
diff changeset
10569 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
10570 defined by the system class loader for the purposes of instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
10571 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10572 In the live phase the system class loader supports adding a JAR file to be searched if
a61af66fc99e Initial load
duke
parents:
diff changeset
10573 the system class loader implements a method name <code>appendToClassPathForInstrumentation</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10574 which takes a single parameter of type <code>java.lang.String</code>. The method is not required
a61af66fc99e Initial load
duke
parents:
diff changeset
10575 to have <code>public</code> access.
a61af66fc99e Initial load
duke
parents:
diff changeset
10576 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
10577 <vmspec/> specifies that a subsequent attempt to resolve a symbolic
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10578 reference that the Java virtual machine has previously unsuccessfully attempted
a61af66fc99e Initial load
duke
parents:
diff changeset
10579 to resolve always fails with the same error that was thrown as a result of the
a61af66fc99e Initial load
duke
parents:
diff changeset
10580 initial resolution attempt. Consequently, if the JAR file contains an entry
a61af66fc99e Initial load
duke
parents:
diff changeset
10581 that corresponds to a class for which the Java virtual machine has
a61af66fc99e Initial load
duke
parents:
diff changeset
10582 unsuccessfully attempted to resolve a reference, then subsequent attempts to
a61af66fc99e Initial load
duke
parents:
diff changeset
10583 resolve that reference will fail with the same error as the initial attempt.
a61af66fc99e Initial load
duke
parents:
diff changeset
10584 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10585 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10586 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10587 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10588 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10589 <param id="segment">
a61af66fc99e Initial load
duke
parents:
diff changeset
10590 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10591 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10592 The platform-dependent search path segment, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10593 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10594 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10595 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10596 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10597 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10598 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
10599 <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
a61af66fc99e Initial load
duke
parents:
diff changeset
10600 existing JAR file is an invalid path.
a61af66fc99e Initial load
duke
parents:
diff changeset
10601 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10602 <error id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED">
a61af66fc99e Initial load
duke
parents:
diff changeset
10603 Operation not supported by the system class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
10604 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10605 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10606 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10607
a61af66fc99e Initial load
duke
parents:
diff changeset
10608 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10609
a61af66fc99e Initial load
duke
parents:
diff changeset
10610
a61af66fc99e Initial load
duke
parents:
diff changeset
10611 <category id="props" label="System Properties">
a61af66fc99e Initial load
duke
parents:
diff changeset
10612
a61af66fc99e Initial load
duke
parents:
diff changeset
10613 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10614 These functions get and set system properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
10615 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10616
a61af66fc99e Initial load
duke
parents:
diff changeset
10617 <function id="GetSystemProperties" phase="onload" num="130">
a61af66fc99e Initial load
duke
parents:
diff changeset
10618 <synopsis>Get System Properties</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10619 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10620 The list of VM system property keys which may be used with
a61af66fc99e Initial load
duke
parents:
diff changeset
10621 <functionlink id="GetSystemProperty"/> is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10622 It is strongly recommended that virtual machines provide the
a61af66fc99e Initial load
duke
parents:
diff changeset
10623 following property keys:
a61af66fc99e Initial load
duke
parents:
diff changeset
10624 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10625 <li><code>java.vm.vendor</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10626 <li><code>java.vm.version</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10627 <li><code>java.vm.name</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10628 <li><code>java.vm.info</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10629 <li><code>java.library.path</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10630 <li><code>java.class.path</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10631 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10632 Provides access to system properties defined by and used
a61af66fc99e Initial load
duke
parents:
diff changeset
10633 by the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10634 Properties set on the command-line are included.
a61af66fc99e Initial load
duke
parents:
diff changeset
10635 This allows getting and setting of these properties
a61af66fc99e Initial load
duke
parents:
diff changeset
10636 before the VM even begins executing bytecodes.
a61af66fc99e Initial load
duke
parents:
diff changeset
10637 Since this is a VM view of system properties, the set of available
a61af66fc99e Initial load
duke
parents:
diff changeset
10638 properties will usually be different than that
a61af66fc99e Initial load
duke
parents:
diff changeset
10639 in <code>java.lang.System.getProperties</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10640 JNI method invocation may be used to access
a61af66fc99e Initial load
duke
parents:
diff changeset
10641 <code>java.lang.System.getProperties</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10642 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10643 The set of properties may grow during execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10644 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10645 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10646 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10647 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10648 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10649 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10650 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10651 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10652 On return, points to the number of property keys returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10653 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10654 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10655 <param id="property_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10656 <allocallocbuf outcount="count_ptr"><char/></allocallocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10657 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10658 On return, points to an array of property keys, encoded as
a61af66fc99e Initial load
duke
parents:
diff changeset
10659 <internallink id="mUTF">modified UTF-8</internallink> strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
10660 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10661 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10662 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10663 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10664 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10665 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10666
a61af66fc99e Initial load
duke
parents:
diff changeset
10667 <function id="GetSystemProperty" phase="onload" num="131">
a61af66fc99e Initial load
duke
parents:
diff changeset
10668 <synopsis>Get System Property</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10669 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10670 Return a VM system property value given the property key.
a61af66fc99e Initial load
duke
parents:
diff changeset
10671 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10672 The function <functionlink id="GetSystemProperties"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10673 returns the set of property keys which may be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
10674 The properties which can be retrieved may grow during
a61af66fc99e Initial load
duke
parents:
diff changeset
10675 execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10676 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10677 Since this is a VM view of system properties, the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10678 of properties may differ from that returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
10679 <code>java.lang.System.getProperty(String)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10680 A typical VM might copy the values of the VM system
a61af66fc99e Initial load
duke
parents:
diff changeset
10681 properties into the <code>Properties</code> held by
a61af66fc99e Initial load
duke
parents:
diff changeset
10682 <code>java.lang.System</code> during the initialization
a61af66fc99e Initial load
duke
parents:
diff changeset
10683 of that class. Thereafter any changes to the VM system
a61af66fc99e Initial load
duke
parents:
diff changeset
10684 properties (with <functionlink id="SetSystemProperty"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
10685 or the <code>java.lang.System</code> system properties
a61af66fc99e Initial load
duke
parents:
diff changeset
10686 (with <code>java.lang.System.setProperty(String,String)</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
10687 would cause the values to diverge.
a61af66fc99e Initial load
duke
parents:
diff changeset
10688 JNI method invocation may be used to access
a61af66fc99e Initial load
duke
parents:
diff changeset
10689 <code>java.lang.System.getProperty(String)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10690 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10691 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10692 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10693 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10694 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10695 <param id="property">
a61af66fc99e Initial load
duke
parents:
diff changeset
10696 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10697 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10698 The key of the property to retrieve, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10699 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10700 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10701 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10702 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10703 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10704 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10705 On return, points to the property value, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10706 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10707 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10708 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10709 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10710 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10711 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10712 This property is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10713 Use <functionlink id="GetSystemProperties"/> to find available properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
10714 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10715 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10716 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10717
a61af66fc99e Initial load
duke
parents:
diff changeset
10718 <function id="SetSystemProperty" phase="onloadOnly" num="132">
a61af66fc99e Initial load
duke
parents:
diff changeset
10719 <synopsis>Set System Property</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10720 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10721 Set a VM system property value.
a61af66fc99e Initial load
duke
parents:
diff changeset
10722 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10723 The function <functionlink id="GetSystemProperties"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10724 returns the set of property keys, some of these may be settable.
a61af66fc99e Initial load
duke
parents:
diff changeset
10725 See <functionlink id="GetSystemProperty"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10726 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10727 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10728 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10729 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10730 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10731 <param id="property">
a61af66fc99e Initial load
duke
parents:
diff changeset
10732 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10733 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10734 The key of the property, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10735 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10736 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10737 </param>
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 2019
diff changeset
10738 <param id="value_ptr">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10739 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10740 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10741 <nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10742 do not set the value, but return <errorlink id="JVMTI_ERROR_NOT_AVAILABLE"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10743 if the property is not writeable
a61af66fc99e Initial load
duke
parents:
diff changeset
10744 </nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10745 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10746 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10747 The property value to set, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10748 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10749 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10750 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10751 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10752 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10753 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10754 This property is not available or is not writeable.
a61af66fc99e Initial load
duke
parents:
diff changeset
10755 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10756 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10757 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10758
a61af66fc99e Initial load
duke
parents:
diff changeset
10759 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10760
a61af66fc99e Initial load
duke
parents:
diff changeset
10761 <category id="general" label="General">
a61af66fc99e Initial load
duke
parents:
diff changeset
10762
a61af66fc99e Initial load
duke
parents:
diff changeset
10763 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10764 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10765
a61af66fc99e Initial load
duke
parents:
diff changeset
10766 <function id="GetPhase" jkernel="yes" phase="any" num="133">
a61af66fc99e Initial load
duke
parents:
diff changeset
10767 <synopsis>Get Phase</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10768 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10769 Return the current phase of VM execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10770 The phases proceed in sequence:
a61af66fc99e Initial load
duke
parents:
diff changeset
10771 <constants id="jvmtiPhase" label="Phases of execution" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10772 <constant id="JVMTI_PHASE_ONLOAD" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10773 <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
10774 <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
10775 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
10776 <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
10777 </code></internallink> function.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10778 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10779 <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
10780 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
10781 or <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> and the
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10782 <code>VMStart</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
10783 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10784 <constant id="JVMTI_PHASE_START" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
10785 Start phase: when the <eventlink id="VMStart"><code>VMStart</code></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
10786 is sent and until the <code>VMInit</code> event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10787 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10788 <constant id="JVMTI_PHASE_LIVE" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
10789 Live phase: when the <eventlink id="VMInit"><code>VMInit</code></eventlink> event is sent
a61af66fc99e Initial load
duke
parents:
diff changeset
10790 and until the <eventlink id="VMDeath"></eventlink> event returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
10791 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10792 <constant id="JVMTI_PHASE_DEAD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
10793 Dead phase: after the <eventlink id="VMDeath"></eventlink> event returns or after
a61af66fc99e Initial load
duke
parents:
diff changeset
10794 start-up failure.
a61af66fc99e Initial load
duke
parents:
diff changeset
10795 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10796 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10797 In the case of start-up failure the VM will proceed directly to the dead
a61af66fc99e Initial load
duke
parents:
diff changeset
10798 phase skipping intermediate phases and neither a <code>VMInit</code> nor
a61af66fc99e Initial load
duke
parents:
diff changeset
10799 <code>VMDeath</code> event will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10800 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10801 Most <jvmti/> functions operate only in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10802 The following functions operate in either the <code>OnLoad</code> or live phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10803 <functionphaselist phase="onload"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10804 The following functions operate in only the <code>OnLoad</code> phase:
a61af66fc99e Initial load
duke
parents:
diff changeset
10805 <functionphaselist phase="onloadOnly"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10806 The following functions operate in the start or live phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10807 <functionphaselist phase="start"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10808 The following functions operate in any phase:
a61af66fc99e Initial load
duke
parents:
diff changeset
10809 <functionphaselist phase="any"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10810 JNI functions (except the Invocation API) must only be used in the start or live phases.
a61af66fc99e Initial load
duke
parents:
diff changeset
10811 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10812 Most <jvmti/> events are sent only in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10813 The following events operate in others phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10814 <eventphaselist phase="start"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10815 <eventphaselist phase="any"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10816 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10817 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10818 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10819 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10820 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10821 <param id="phase_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10822 <outptr><enum>jvmtiPhase</enum></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10823 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10824 On return, points to the phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10825 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10826 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10827 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10828 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10829 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10830 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10831
a61af66fc99e Initial load
duke
parents:
diff changeset
10832 <function id="DisposeEnvironment" jkernel="yes" phase="any" num="127">
a61af66fc99e Initial load
duke
parents:
diff changeset
10833 <synopsis>Dispose Environment</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10834 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10835 Shutdown a <jvmti/> connection created with JNI <code>GetEnv</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10836 (see <internallink id="environments"><jvmti/> Environments</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10837 Dispose of any resources held by the environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
10838 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10839 What resources are reclaimed? What is undone?
a61af66fc99e Initial load
duke
parents:
diff changeset
10840 Breakpoints,watchpoints removed?
a61af66fc99e Initial load
duke
parents:
diff changeset
10841 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10842 Threads suspended by this environment are not resumed by this call,
a61af66fc99e Initial load
duke
parents:
diff changeset
10843 this must be done explicitly by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10844 Memory allocated by this environment via calls to <jvmti/> functions
a61af66fc99e Initial load
duke
parents:
diff changeset
10845 is not released, this can be done explicitly by the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
10846 by calling <functionlink id="Deallocate"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10847 Raw monitors created by this environment are not destroyed,
a61af66fc99e Initial load
duke
parents:
diff changeset
10848 this can be done explicitly by the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
10849 by calling <functionlink id="DestroyRawMonitor"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10850 The state of threads waiting on raw monitors created by this environment
a61af66fc99e Initial load
duke
parents:
diff changeset
10851 are not affected.
a61af66fc99e Initial load
duke
parents:
diff changeset
10852 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10853 Any <functionlink id="SetNativeMethodPrefix">native method
a61af66fc99e Initial load
duke
parents:
diff changeset
10854 prefixes</functionlink> for this environment will be unset;
a61af66fc99e Initial load
duke
parents:
diff changeset
10855 the agent must remove any prefixed native methods before
a61af66fc99e Initial load
duke
parents:
diff changeset
10856 dispose is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10857 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10858 Any <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10859 held by this environment are relinquished.
a61af66fc99e Initial load
duke
parents:
diff changeset
10860 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10861 Events enabled by this environment will no longer be sent, however
a61af66fc99e Initial load
duke
parents:
diff changeset
10862 event handlers currently running will continue to run. Caution must
a61af66fc99e Initial load
duke
parents:
diff changeset
10863 be exercised in the design of event handlers whose environment may
a61af66fc99e Initial load
duke
parents:
diff changeset
10864 be disposed and thus become invalid during their execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10865 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10866 This environment may not be used after this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
10867 This call returns to the caller.
a61af66fc99e Initial load
duke
parents:
diff changeset
10868 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10869 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10870 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10871 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10872 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10873 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10874 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10875 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10876 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10877
a61af66fc99e Initial load
duke
parents:
diff changeset
10878 <function id="SetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="148">
a61af66fc99e Initial load
duke
parents:
diff changeset
10879 <synopsis>Set Environment Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10880 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10881 The VM stores a pointer value associated with each environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
10882 This pointer value is called <i>environment-local storage</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10883 This value is <code>NULL</code> unless set with this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10884 Agents can allocate memory in which they store environment specific
a61af66fc99e Initial load
duke
parents:
diff changeset
10885 information. By setting environment-local storage it can then be
a61af66fc99e Initial load
duke
parents:
diff changeset
10886 accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
10887 <functionlink id="GetEnvironmentLocalStorage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10888 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10889 Called by the agent to set the value of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10890 environment-local storage. <jvmti/> supplies to the agent a pointer-size
a61af66fc99e Initial load
duke
parents:
diff changeset
10891 environment-local storage that can be used to record per-environment
a61af66fc99e Initial load
duke
parents:
diff changeset
10892 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10893 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10894 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10895 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10896 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10897 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10898 <param id="data">
a61af66fc99e Initial load
duke
parents:
diff changeset
10899 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10900 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10901 <nullok>value is set to <code>NULL</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10902 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10903 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10904 The value to be entered into the environment-local storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
10905 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10906 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10907 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10908 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10909 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10910 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10911
a61af66fc99e Initial load
duke
parents:
diff changeset
10912 <function id="GetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="147">
a61af66fc99e Initial load
duke
parents:
diff changeset
10913 <synopsis>Get Environment Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10914 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10915 Called by the agent to get the value of the <jvmti/> environment-local
a61af66fc99e Initial load
duke
parents:
diff changeset
10916 storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
10917 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10918 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10919 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10920 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10921 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10922 <param id="data_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10923 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10924 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10925 Pointer through which the value of the environment local
a61af66fc99e Initial load
duke
parents:
diff changeset
10926 storage is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10927 If environment-local storage has not been set with
a61af66fc99e Initial load
duke
parents:
diff changeset
10928 <functionlink id="SetEnvironmentLocalStorage"></functionlink> returned
a61af66fc99e Initial load
duke
parents:
diff changeset
10929 pointer is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10930 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10931 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10932 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10933 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10934 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10935 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10936
a61af66fc99e Initial load
duke
parents:
diff changeset
10937 <function id="GetVersionNumber" jkernel="yes" phase="any" num="88">
a61af66fc99e Initial load
duke
parents:
diff changeset
10938 <synopsis>Get Version Number</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10939 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10940 Return the <jvmti/> version via <code>version_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10941 The return value is the version identifier.
a61af66fc99e Initial load
duke
parents:
diff changeset
10942 The version identifier includes major, minor and micro
a61af66fc99e Initial load
duke
parents:
diff changeset
10943 version as well as the interface type.
a61af66fc99e Initial load
duke
parents:
diff changeset
10944 <constants id="jvmtiVersionInterfaceTypes" label="Version Interface Types" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10945 <constant id="JVMTI_VERSION_INTERFACE_JNI" num="0x00000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10946 Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
10947 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10948 <constant id="JVMTI_VERSION_INTERFACE_JVMTI" num="0x30000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10949 Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10950 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10951 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10952 <constants id="jvmtiVersionMasks" label="Version Masks" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10953 <constant id="JVMTI_VERSION_MASK_INTERFACE_TYPE" num="0x70000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10954 Mask to extract interface type.
a61af66fc99e Initial load
duke
parents:
diff changeset
10955 The value of the version returned by this function masked with
a61af66fc99e Initial load
duke
parents:
diff changeset
10956 <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> is always
a61af66fc99e Initial load
duke
parents:
diff changeset
10957 <code>JVMTI_VERSION_INTERFACE_JVMTI</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10958 since this is a <jvmti/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10959 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10960 <constant id="JVMTI_VERSION_MASK_MAJOR" num="0x0FFF0000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10961 Mask to extract major version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10962 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10963 <constant id="JVMTI_VERSION_MASK_MINOR" num="0x0000FF00">
a61af66fc99e Initial load
duke
parents:
diff changeset
10964 Mask to extract minor version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10965 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10966 <constant id="JVMTI_VERSION_MASK_MICRO" num="0x000000FF">
a61af66fc99e Initial load
duke
parents:
diff changeset
10967 Mask to extract micro version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10968 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10969 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10970 <constants id="jvmtiVersionShifts" label="Version Shifts" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10971 <constant id="JVMTI_VERSION_SHIFT_MAJOR" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
10972 Shift to extract major version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10973 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10974 <constant id="JVMTI_VERSION_SHIFT_MINOR" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
10975 Shift to extract minor version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10976 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10977 <constant id="JVMTI_VERSION_SHIFT_MICRO" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
10978 Shift to extract micro version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10979 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10980 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10981 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10982 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10983 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10984 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10985 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10986 <param id="version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10987 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10988 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10989 On return, points to the <jvmti/> version.
a61af66fc99e Initial load
duke
parents:
diff changeset
10990 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10991 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10992 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10993 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10994 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10995 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10996
a61af66fc99e Initial load
duke
parents:
diff changeset
10997
a61af66fc99e Initial load
duke
parents:
diff changeset
10998 <function id="GetErrorName" phase="any" num="128">
a61af66fc99e Initial load
duke
parents:
diff changeset
10999 <synopsis>Get Error Name</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
11000 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11001 Return the symbolic name for an
a61af66fc99e Initial load
duke
parents:
diff changeset
11002 <internallink id="ErrorSection">error code</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11003 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11004 For example
a61af66fc99e Initial load
duke
parents:
diff changeset
11005 <code>GetErrorName(env, JVMTI_ERROR_NONE, &amp;err_name)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11006 would return in <code>err_name</code> the string
a61af66fc99e Initial load
duke
parents:
diff changeset
11007 <code>"JVMTI_ERROR_NONE"</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11008 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11009 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11010 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11011 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11012 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11013 <param id="error">
a61af66fc99e Initial load
duke
parents:
diff changeset
11014 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
11015 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11016 The error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
11017 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11018 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11019 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11020 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
11021 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11022 On return, points to the error name.
a61af66fc99e Initial load
duke
parents:
diff changeset
11023 The name is encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
11024 <internallink id="mUTF">modified UTF-8</internallink> string,
a61af66fc99e Initial load
duke
parents:
diff changeset
11025 but is restricted to the ASCII subset.
a61af66fc99e Initial load
duke
parents:
diff changeset
11026 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11027 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11028 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11029 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11030 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11031 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
11032
a61af66fc99e Initial load
duke
parents:
diff changeset
11033 <function id="SetVerboseFlag" phase="any" num="150">
a61af66fc99e Initial load
duke
parents:
diff changeset
11034 <synopsis>Set Verbose Flag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
11035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11036 <constants id="jvmtiVerboseFlag" label="Verbose Flag Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
11037 <constant id="JVMTI_VERBOSE_OTHER" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11038 Verbose output other than the below.
a61af66fc99e Initial load
duke
parents:
diff changeset
11039 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11040 <constant id="JVMTI_VERBOSE_GC" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
11041 Verbose garbage collector output, like that specified with <code>-verbose:gc</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11042 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11043 <constant id="JVMTI_VERBOSE_CLASS" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
11044 Verbose class loading output, like that specified with <code>-verbose:class</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11045 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11046 <constant id="JVMTI_VERBOSE_JNI" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
11047 Verbose JNI output, like that specified with <code>-verbose:jni</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11048 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11049 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
11050 Control verbose output.
a61af66fc99e Initial load
duke
parents:
diff changeset
11051 This is the output which typically is sent to <code>stderr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11052 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11053 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11054 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11055 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11056 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11057 <param id="flag">
a61af66fc99e Initial load
duke
parents:
diff changeset
11058 <enum>jvmtiVerboseFlag</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
11059 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11060 Which verbose flag to set.
a61af66fc99e Initial load
duke
parents:
diff changeset
11061 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11062 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11063 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11064 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11065 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11066 New value of the flag.
a61af66fc99e Initial load
duke
parents:
diff changeset
11067 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11068 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11069 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11070 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11071 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11072 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
11073
a61af66fc99e Initial load
duke
parents:
diff changeset
11074
a61af66fc99e Initial load
duke
parents:
diff changeset
11075 <function id="GetJLocationFormat" phase="any" num="129">
a61af66fc99e Initial load
duke
parents:
diff changeset
11076 <synopsis>Get JLocation Format</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
11077 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11078 Although the greatest functionality is achieved with location information
a61af66fc99e Initial load
duke
parents:
diff changeset
11079 referencing the virtual machine bytecode index, the definition of
a61af66fc99e Initial load
duke
parents:
diff changeset
11080 <code>jlocation</code> has intentionally been left unconstrained to allow VM
a61af66fc99e Initial load
duke
parents:
diff changeset
11081 implementations that do not have this information.
a61af66fc99e Initial load
duke
parents:
diff changeset
11082 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11083 This function describes the representation of <code>jlocation</code> used in this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
11084 If the returned format is <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11085 <code>jlocation</code>s can
a61af66fc99e Initial load
duke
parents:
diff changeset
11086 be used as in indices into the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
11087 <functionlink id="GetBytecodes"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11088 <constants id="jvmtiJlocationFormat" label="JLocation Format Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
11089 <constant id="JVMTI_JLOCATION_JVMBCI" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
11090 <code>jlocation</code> values represent virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
11091 bytecode indices--that is, offsets into the
a61af66fc99e Initial load
duke
parents:
diff changeset
11092 virtual machine code for a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11093 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11094 <constant id="JVMTI_JLOCATION_MACHINEPC" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
11095 <code>jlocation</code> values represent native machine
a61af66fc99e Initial load
duke
parents:
diff changeset
11096 program counter values.
a61af66fc99e Initial load
duke
parents:
diff changeset
11097 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11098 <constant id="JVMTI_JLOCATION_OTHER" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11099 <code>jlocation</code> values have some other representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11100 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11101 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
11102 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11103 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11104 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11105 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11106 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11107 <param id="format_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11108 <outptr><enum>jvmtiJlocationFormat</enum></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11109 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11110 On return, points to the format identifier for <code>jlocation</code> values.
a61af66fc99e Initial load
duke
parents:
diff changeset
11111 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11112 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11113 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11114 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11115 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11116 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
11117
a61af66fc99e Initial load
duke
parents:
diff changeset
11118 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
11119
a61af66fc99e Initial load
duke
parents:
diff changeset
11120 </functionsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
11121
a61af66fc99e Initial load
duke
parents:
diff changeset
11122 <errorsection label="Error Reference">
a61af66fc99e Initial load
duke
parents:
diff changeset
11123 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11124 Every <jvmti/> function returns a <b><code>jvmtiError</code></b> error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
11125 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11126 It is the responsibility of the agent to call <jvmti/> functions with
a61af66fc99e Initial load
duke
parents:
diff changeset
11127 valid parameters and in the proper context (calling thread is attached,
a61af66fc99e Initial load
duke
parents:
diff changeset
11128 phase is correct, etc.).
a61af66fc99e Initial load
duke
parents:
diff changeset
11129 Detecting some error conditions may be difficult, inefficient, or
a61af66fc99e Initial load
duke
parents:
diff changeset
11130 impossible for an implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11131 The errors listed in
a61af66fc99e Initial load
duke
parents:
diff changeset
11132 <internallink id="reqerrors">Function Specific Required Errors</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11133 must be detected by the implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11134 All other errors represent the recommended response to the error
a61af66fc99e Initial load
duke
parents:
diff changeset
11135 condition.
a61af66fc99e Initial load
duke
parents:
diff changeset
11136 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11137
a61af66fc99e Initial load
duke
parents:
diff changeset
11138 <errorcategory id="universal-error" label="Universal Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11139 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11140 The following errors may be returned by any function
a61af66fc99e Initial load
duke
parents:
diff changeset
11141 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11142
a61af66fc99e Initial load
duke
parents:
diff changeset
11143 <errorid id="JVMTI_ERROR_NONE" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11144 No error has occurred. This is the error code that is returned
a61af66fc99e Initial load
duke
parents:
diff changeset
11145 on successful completion of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11146 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11147 <errorid id="JVMTI_ERROR_NULL_POINTER" num="100">
a61af66fc99e Initial load
duke
parents:
diff changeset
11148 Pointer is unexpectedly <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11149 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11150 <errorid id="JVMTI_ERROR_OUT_OF_MEMORY" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
11151 The function attempted to allocate memory and no more memory was
a61af66fc99e Initial load
duke
parents:
diff changeset
11152 available for allocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11153 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11154 <errorid id="JVMTI_ERROR_ACCESS_DENIED" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
11155 The desired functionality has not been enabled in this virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
11156 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11157 <errorid id="JVMTI_ERROR_UNATTACHED_THREAD" num="115">
a61af66fc99e Initial load
duke
parents:
diff changeset
11158 The thread being used to call this function is not attached
a61af66fc99e Initial load
duke
parents:
diff changeset
11159 to the virtual machine. Calls must be made from attached threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
11160 See <code>AttachCurrentThread</code> in the JNI invocation API.
a61af66fc99e Initial load
duke
parents:
diff changeset
11161 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11162 <errorid id="JVMTI_ERROR_INVALID_ENVIRONMENT" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
11163 The <jvmti/> environment provided is no longer connected or is
a61af66fc99e Initial load
duke
parents:
diff changeset
11164 not an environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
11165 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11166 <errorid id="JVMTI_ERROR_WRONG_PHASE" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
11167 The desired functionality is not available in the current
a61af66fc99e Initial load
duke
parents:
diff changeset
11168 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11169 Always returned if the virtual machine has completed running.
a61af66fc99e Initial load
duke
parents:
diff changeset
11170 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11171 <errorid id="JVMTI_ERROR_INTERNAL" num="113">
a61af66fc99e Initial load
duke
parents:
diff changeset
11172 An unexpected internal error has occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
11173 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11174 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11175
a61af66fc99e Initial load
duke
parents:
diff changeset
11176 <errorcategory id="reqerrors" label="Function Specific Required Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11177 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11178 The following errors are returned by some <jvmti/> functions and must
a61af66fc99e Initial load
duke
parents:
diff changeset
11179 be returned by the implementation when the condition occurs.
a61af66fc99e Initial load
duke
parents:
diff changeset
11180 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11181
a61af66fc99e Initial load
duke
parents:
diff changeset
11182 <errorid id="JVMTI_ERROR_INVALID_PRIORITY" num="12">
a61af66fc99e Initial load
duke
parents:
diff changeset
11183 Invalid priority.
a61af66fc99e Initial load
duke
parents:
diff changeset
11184 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11185 <errorid id="JVMTI_ERROR_THREAD_NOT_SUSPENDED" num="13">
a61af66fc99e Initial load
duke
parents:
diff changeset
11186 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
11187 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11188 <errorid id="JVMTI_ERROR_THREAD_SUSPENDED" num="14">
a61af66fc99e Initial load
duke
parents:
diff changeset
11189 Thread already suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
11190 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11191 <errorid id="JVMTI_ERROR_THREAD_NOT_ALIVE" num="15">
a61af66fc99e Initial load
duke
parents:
diff changeset
11192 This operation requires the thread to be alive--that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
11193 it must be started and not yet have died.
a61af66fc99e Initial load
duke
parents:
diff changeset
11194 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11195 <errorid id="JVMTI_ERROR_CLASS_NOT_PREPARED" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
11196 The class has been loaded but not yet prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
11197 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11198 <errorid id="JVMTI_ERROR_NO_MORE_FRAMES" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
11199 There are no Java programming language or JNI stack frames at the specified depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
11200 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11201 <errorid id="JVMTI_ERROR_OPAQUE_FRAME" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
11202 Information about the frame is not available (e.g. for native frames).
a61af66fc99e Initial load
duke
parents:
diff changeset
11203 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11204 <errorid id="JVMTI_ERROR_DUPLICATE" num="40">
a61af66fc99e Initial load
duke
parents:
diff changeset
11205 Item already set.
a61af66fc99e Initial load
duke
parents:
diff changeset
11206 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11207 <errorid id="JVMTI_ERROR_NOT_FOUND" num="41">
a61af66fc99e Initial load
duke
parents:
diff changeset
11208 Desired element (e.g. field or breakpoint) not found
a61af66fc99e Initial load
duke
parents:
diff changeset
11209 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11210 <errorid id="JVMTI_ERROR_NOT_MONITOR_OWNER" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
11211 This thread doesn't own the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
11212 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11213 <errorid id="JVMTI_ERROR_INTERRUPT" num="52">
a61af66fc99e Initial load
duke
parents:
diff changeset
11214 The call has been interrupted before completion.
a61af66fc99e Initial load
duke
parents:
diff changeset
11215 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11216 <errorid id="JVMTI_ERROR_UNMODIFIABLE_CLASS" num="79">
a61af66fc99e Initial load
duke
parents:
diff changeset
11217 The class cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
11218 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11219 <errorid id="JVMTI_ERROR_NOT_AVAILABLE" num="98">
a61af66fc99e Initial load
duke
parents:
diff changeset
11220 The functionality is not available in this virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
11221 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11222 <errorid id="JVMTI_ERROR_ABSENT_INFORMATION" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
11223 The requested information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11224 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11225 <errorid id="JVMTI_ERROR_INVALID_EVENT_TYPE" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
11226 The specified event type ID is not recognized.
a61af66fc99e Initial load
duke
parents:
diff changeset
11227 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11228 <errorid id="JVMTI_ERROR_NATIVE_METHOD" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
11229 The requested information is not available for native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11230 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11231 <errorid id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
11232 The class loader does not support this operation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11233 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11234 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11235
a61af66fc99e Initial load
duke
parents:
diff changeset
11236 <errorcategory id="function-specific-errors" label="Function Specific Agent Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11237 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11238 The following errors are returned by some <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
11239 They are returned in the event of invalid parameters passed by the
a61af66fc99e Initial load
duke
parents:
diff changeset
11240 agent or usage in an invalid context.
a61af66fc99e Initial load
duke
parents:
diff changeset
11241 An implementation is not required to detect these errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
11242 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11243
a61af66fc99e Initial load
duke
parents:
diff changeset
11244 <errorid id="JVMTI_ERROR_INVALID_THREAD" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
11245 The passed thread is not a valid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11246 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11247 <errorid id="JVMTI_ERROR_INVALID_FIELDID" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
11248 Invalid field.
a61af66fc99e Initial load
duke
parents:
diff changeset
11249 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11250 <errorid id="JVMTI_ERROR_INVALID_METHODID" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
11251 Invalid method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11252 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11253 <errorid id="JVMTI_ERROR_INVALID_LOCATION" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
11254 Invalid location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11255 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11256 <errorid id="JVMTI_ERROR_INVALID_OBJECT" num="20">
a61af66fc99e Initial load
duke
parents:
diff changeset
11257 Invalid object.
a61af66fc99e Initial load
duke
parents:
diff changeset
11258 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11259 <errorid id="JVMTI_ERROR_INVALID_CLASS" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
11260 Invalid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
11261 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11262 <errorid id="JVMTI_ERROR_TYPE_MISMATCH" num="34">
a61af66fc99e Initial load
duke
parents:
diff changeset
11263 The variable is not an appropriate type for the function used.
a61af66fc99e Initial load
duke
parents:
diff changeset
11264 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11265 <errorid id="JVMTI_ERROR_INVALID_SLOT" num="35">
a61af66fc99e Initial load
duke
parents:
diff changeset
11266 Invalid slot.
a61af66fc99e Initial load
duke
parents:
diff changeset
11267 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11268 <errorid id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY" num="99">
a61af66fc99e Initial load
duke
parents:
diff changeset
11269 The capability being used is false in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
11270 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11271 <errorid id="JVMTI_ERROR_INVALID_THREAD_GROUP" num="11">
a61af66fc99e Initial load
duke
parents:
diff changeset
11272 Thread group invalid.
a61af66fc99e Initial load
duke
parents:
diff changeset
11273 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11274 <errorid id="JVMTI_ERROR_INVALID_MONITOR" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
11275 Invalid raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
11276 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11277 <errorid id="JVMTI_ERROR_ILLEGAL_ARGUMENT" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
11278 Illegal argument.
a61af66fc99e Initial load
duke
parents:
diff changeset
11279 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11280 <errorid id="JVMTI_ERROR_INVALID_TYPESTATE" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
11281 The state of the thread has been modified, and is now inconsistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
11282 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11283 <errorid id="JVMTI_ERROR_UNSUPPORTED_VERSION" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
11284 A new class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
11285 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11286 <errorid id="JVMTI_ERROR_INVALID_CLASS_FORMAT" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
11287 A new class file is malformed (the VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11288 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11289 <errorid id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
11290 The new class file definitions would lead to a circular
a61af66fc99e Initial load
duke
parents:
diff changeset
11291 definition (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11292 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11293 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
11294 A new class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11295 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11296 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
11297 A new class version changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
11298 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11299 <errorid id="JVMTI_ERROR_FAILS_VERIFICATION" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
11300 The class bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
11301 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11302 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
11303 A direct superclass is different for the new class
a61af66fc99e Initial load
duke
parents:
diff changeset
11304 version, or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
11305 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
11306 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11307 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
11308 A new class version does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
11309 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
11310 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11311 <errorid id="JVMTI_ERROR_NAMES_DONT_MATCH" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
11312 The class name defined in the new class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
11313 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
11314 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11315 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
11316 A new class version has different modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
11317 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11318 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
11319 A method in the new class version has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
11320 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
11321 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11322 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11323 </errorsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
11324
a61af66fc99e Initial load
duke
parents:
diff changeset
11325 <eventsection label="Events">
a61af66fc99e Initial load
duke
parents:
diff changeset
11326 <intro label="Handling Events" id="eventIntro">
a61af66fc99e Initial load
duke
parents:
diff changeset
11327 Agents can be informed of many events that occur in application
a61af66fc99e Initial load
duke
parents:
diff changeset
11328 programs.
a61af66fc99e Initial load
duke
parents:
diff changeset
11329 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11330 To handle events, designate a set of callback functions with
a61af66fc99e Initial load
duke
parents:
diff changeset
11331 <functionlink id="SetEventCallbacks"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11332 For each event the corresponding callback function will be
a61af66fc99e Initial load
duke
parents:
diff changeset
11333 called.
a61af66fc99e Initial load
duke
parents:
diff changeset
11334 Arguments to the callback function provide additional
a61af66fc99e Initial load
duke
parents:
diff changeset
11335 information about the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11336 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11337 The callback function is usually called from within an application
a61af66fc99e Initial load
duke
parents:
diff changeset
11338 thread. The <jvmti/> implementation does not
a61af66fc99e Initial load
duke
parents:
diff changeset
11339 queue events in any way. This means
a61af66fc99e Initial load
duke
parents:
diff changeset
11340 that event callback functions must be written
a61af66fc99e Initial load
duke
parents:
diff changeset
11341 carefully. Here are some general guidelines. See
a61af66fc99e Initial load
duke
parents:
diff changeset
11342 the individual event descriptions for further
a61af66fc99e Initial load
duke
parents:
diff changeset
11343 suggestions.
a61af66fc99e Initial load
duke
parents:
diff changeset
11344 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11345 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11346 <li>Any exception thrown during the execution of an event callback can
a61af66fc99e Initial load
duke
parents:
diff changeset
11347 overwrite any current pending exception in the current application thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11348 Care must be taken to preserve a pending exception
a61af66fc99e Initial load
duke
parents:
diff changeset
11349 when an event callback makes a JNI call that might generate an exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11350 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11351 <li>Event callback functions must be re-entrant. The <jvmti/> implementation does
a61af66fc99e Initial load
duke
parents:
diff changeset
11352 not queue events. If an agent needs to process events one at a time, it
a61af66fc99e Initial load
duke
parents:
diff changeset
11353 can use a raw monitor inside the
a61af66fc99e Initial load
duke
parents:
diff changeset
11354 event callback functions to serialize event processing.
a61af66fc99e Initial load
duke
parents:
diff changeset
11355 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11356 <li>Event callback functions that execute JNI's FindClass function to load
a61af66fc99e Initial load
duke
parents:
diff changeset
11357 classes need to note that FindClass locates the class loader associated
a61af66fc99e Initial load
duke
parents:
diff changeset
11358 with the current native method. For the purposes of class loading, an
a61af66fc99e Initial load
duke
parents:
diff changeset
11359 event callback that includes a JNI environment as a parameter to the
a61af66fc99e Initial load
duke
parents:
diff changeset
11360 callback will treated as if it is a native call, where the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11361 is in the class of the event thread's current frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
11362 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11363 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11364 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11365 Some <jvmti/> events identify objects with JNI references.
a61af66fc99e Initial load
duke
parents:
diff changeset
11366 All references
a61af66fc99e Initial load
duke
parents:
diff changeset
11367 in <jvmti/> events are JNI local references and will become invalid
a61af66fc99e Initial load
duke
parents:
diff changeset
11368 after the event callback returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
11369 Unless stated otherwise, memory referenced by pointers sent in event
a61af66fc99e Initial load
duke
parents:
diff changeset
11370 callbacks may not be referenced after the event callback returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
11371 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11372 Except where stated otherwise, events are delivered on the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11373 that caused the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11374 Events are sent at the time they occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
11375 The specification for each event includes the set of
a61af66fc99e Initial load
duke
parents:
diff changeset
11376 <functionlink id="GetPhase">phases</functionlink> in which it can be sent;
a61af66fc99e Initial load
duke
parents:
diff changeset
11377 if an event triggering activity occurs during another phase, no event
a61af66fc99e Initial load
duke
parents:
diff changeset
11378 is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
11379 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11380 A thread that generates an event does not change its execution status
a61af66fc99e Initial load
duke
parents:
diff changeset
11381 (for example, the event does not cause the thread to be suspended).
a61af66fc99e Initial load
duke
parents:
diff changeset
11382 If an agent wishes the event to result in suspension, then the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
11383 is responsible for explicitly suspending the thread with
a61af66fc99e Initial load
duke
parents:
diff changeset
11384 <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11385 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11386 If an event is enabled in multiple environments, the event will be sent
a61af66fc99e Initial load
duke
parents:
diff changeset
11387 to each agent in the order that the environments were created.
a61af66fc99e Initial load
duke
parents:
diff changeset
11388 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11389
a61af66fc99e Initial load
duke
parents:
diff changeset
11390 <intro label="Enabling Events" id="enablingevents">
a61af66fc99e Initial load
duke
parents:
diff changeset
11391 All events are initially disabled. In order to receive any
a61af66fc99e Initial load
duke
parents:
diff changeset
11392 event:
a61af66fc99e Initial load
duke
parents:
diff changeset
11393 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11394 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11395 If the event requires a capability, that capability must
a61af66fc99e Initial load
duke
parents:
diff changeset
11396 be added with
a61af66fc99e Initial load
duke
parents:
diff changeset
11397 <functionlink id="AddCapabilities"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11398 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11399 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11400 A callback for the event must be set with
a61af66fc99e Initial load
duke
parents:
diff changeset
11401 <functionlink id="SetEventCallbacks"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11402 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11403 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11404 The event must be enabled with
a61af66fc99e Initial load
duke
parents:
diff changeset
11405 <functionlink id="SetEventNotificationMode"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11406 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11407 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11408 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11409
a61af66fc99e Initial load
duke
parents:
diff changeset
11410 <intro label="Multiple Co-located Events" id="eventorder">
a61af66fc99e Initial load
duke
parents:
diff changeset
11411 In many situations it is possible for multiple events to occur
a61af66fc99e Initial load
duke
parents:
diff changeset
11412 at the same location in one thread. When this happens, all the events
a61af66fc99e Initial load
duke
parents:
diff changeset
11413 are reported through the event callbacks in the order specified in this section.
a61af66fc99e Initial load
duke
parents:
diff changeset
11414 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11415 If the current location is at the entry point of a method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11416 <eventlink id="MethodEntry"></eventlink> event is reported before
a61af66fc99e Initial load
duke
parents:
diff changeset
11417 any other event at the current location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11418 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11419 If an exception catch has been detected at the current location,
a61af66fc99e Initial load
duke
parents:
diff changeset
11420 either because it is the beginning of a catch clause or a native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11421 that cleared a pending exception has returned, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11422 <code>exceptionCatch</code> event is reported before
a61af66fc99e Initial load
duke
parents:
diff changeset
11423 any other event at the current location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11424 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11425 If a <code>singleStep</code> event or
a61af66fc99e Initial load
duke
parents:
diff changeset
11426 <code>breakpoint</code> event is triggered at the
a61af66fc99e Initial load
duke
parents:
diff changeset
11427 current location, the event is defined to occur
a61af66fc99e Initial load
duke
parents:
diff changeset
11428 immediately before the code at the current location is executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
11429 These events are reported before any events which are triggered
a61af66fc99e Initial load
duke
parents:
diff changeset
11430 by the execution of code at the current location in the same
a61af66fc99e Initial load
duke
parents:
diff changeset
11431 thread (specifically:
a61af66fc99e Initial load
duke
parents:
diff changeset
11432 <code>exception</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11433 <code>fieldAccess</code>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
11434 <code>fieldModification</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11435 If both a step and breakpoint event are triggered for the same thread and
a61af66fc99e Initial load
duke
parents:
diff changeset
11436 location, the step event is reported before the breakpoint event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11437 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11438 If the current location is the exit point of a method (that is, the last
a61af66fc99e Initial load
duke
parents:
diff changeset
11439 location before returning to the caller), the
a61af66fc99e Initial load
duke
parents:
diff changeset
11440 <eventlink id="MethodExit"></eventlink> event and
a61af66fc99e Initial load
duke
parents:
diff changeset
11441 the <eventlink id="FramePop"></eventlink> event (if requested)
a61af66fc99e Initial load
duke
parents:
diff changeset
11442 are reported after all other events at the current location in the same
a61af66fc99e Initial load
duke
parents:
diff changeset
11443 thread. There is no specified ordering of these two events
a61af66fc99e Initial load
duke
parents:
diff changeset
11444 with respect to each other.
a61af66fc99e Initial load
duke
parents:
diff changeset
11445 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11446 Co-located events can be triggered during the processing of some other
a61af66fc99e Initial load
duke
parents:
diff changeset
11447 event by the agent at the same location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11448 If such an event, of type <i>y</i>, is triggered during the processing of
a61af66fc99e Initial load
duke
parents:
diff changeset
11449 an event of type <i>x</i>, and if <i>x</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
11450 precedes <i>y</i> in the ordering specified above, the co-located event
a61af66fc99e Initial load
duke
parents:
diff changeset
11451 <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
11452 <i>y</i>, <i>y</i> is not reported for the current thread and location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11453 For example, if a breakpoint is set at the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
11454 during the processing of <eventlink id="SingleStep"></eventlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11455 that breakpoint will be reported before the thread moves off the current
a61af66fc99e Initial load
duke
parents:
diff changeset
11456 location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11457 <p/>The following events are never considered to be co-located with
a61af66fc99e Initial load
duke
parents:
diff changeset
11458 other events.
a61af66fc99e Initial load
duke
parents:
diff changeset
11459 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11460 <li><eventlink id="VMStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11461 <li><eventlink id="VMInit"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11462 <li><eventlink id="VMDeath"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11463 <li><eventlink id="ThreadStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11464 <li><eventlink id="ThreadEnd"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11465 <li><eventlink id="ClassLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11466 <li><eventlink id="ClassPrepare"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11467 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11468 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11469
a61af66fc99e Initial load
duke
parents:
diff changeset
11470 <intro label="Event Callbacks" id="jvmtiEventCallbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
11471 The event callback structure below is used to specify the handler function
a61af66fc99e Initial load
duke
parents:
diff changeset
11472 for events. It is set with the
a61af66fc99e Initial load
duke
parents:
diff changeset
11473 <functionlink id="SetEventCallbacks"></functionlink> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11474 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11475
a61af66fc99e Initial load
duke
parents:
diff changeset
11476 <event label="Single Step"
a61af66fc99e Initial load
duke
parents:
diff changeset
11477 id="SingleStep" const="JVMTI_EVENT_SINGLE_STEP" filtered="thread" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
11478 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11479 Single step events allow the agent to trace thread execution
a61af66fc99e Initial load
duke
parents:
diff changeset
11480 at the finest granularity allowed by the VM. A single step event is
a61af66fc99e Initial load
duke
parents:
diff changeset
11481 generated whenever a thread reaches a new location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11482 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
11483 instruction as defined in <vmspec/>. However, some implementations
0
a61af66fc99e Initial load
duke
parents:
diff changeset
11484 may define locations differently. In any case the
a61af66fc99e Initial load
duke
parents:
diff changeset
11485 <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11486 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11487 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11488 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11489 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11490 No single step events are generated from within native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
11491 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11492 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11493 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11494 <required id="can_generate_single_step_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11495 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11496 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11497 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11498 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11499 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11500 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11501 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11502 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11503 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11504 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11505 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11506 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11507 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11508 Thread about to execution a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11509 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11510 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11511 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11512 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11513 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11514 Class of the method about to execute a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11515 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11516 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11517 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11518 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11519 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11520 Method about to execute a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11521 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11522 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11523 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11524 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11525 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11526 Location of the new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11527 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11528 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11529 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11530 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11531
a61af66fc99e Initial load
duke
parents:
diff changeset
11532 <event label="Breakpoint"
a61af66fc99e Initial load
duke
parents:
diff changeset
11533 id="Breakpoint" const="JVMTI_EVENT_BREAKPOINT" filtered="thread" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
11534 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11535 Breakpoint events are generated whenever a thread reaches a location
a61af66fc99e Initial load
duke
parents:
diff changeset
11536 designated as a breakpoint with <functionlink id="SetBreakpoint"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11537 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11538 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11539 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11540 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11541 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11542 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11543 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11544 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11545 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11546 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11547 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11548 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11549 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11550 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11551 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11552 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11553 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11554 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11555 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11556 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11557 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11558 Thread that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11559 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11560 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11561 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11562 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11563 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11564 Class of the method that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11565 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11566 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11567 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11568 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11569 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11570 Method that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11571 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11572 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11573 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11574 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11575 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11576 location of the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11577 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11578 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11579 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11580 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11581
a61af66fc99e Initial load
duke
parents:
diff changeset
11582 <event label="Field Access"
a61af66fc99e Initial load
duke
parents:
diff changeset
11583 id="FieldAccess" const="JVMTI_EVENT_FIELD_ACCESS" filtered="thread" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
11584 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11585 Field access events are generated whenever a thread accesses
a61af66fc99e Initial load
duke
parents:
diff changeset
11586 a field that was designated as a watchpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11587 with <functionlink id="SetFieldAccessWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11588 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11589 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11590 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11591 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11592 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11593 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11594 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11595 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11596 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11597 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11598 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11599 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11600 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11601 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11602 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11603 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11604 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11605 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11606 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11607 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11608 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11609 Thread accessing the field
a61af66fc99e Initial load
duke
parents:
diff changeset
11610 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11611 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11612 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11613 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11614 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11615 Class of the method where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11616 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11617 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11618 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11619 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11620 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11621 Method where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11622 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11623 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11624 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11625 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11626 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11627 Location where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11628 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11629 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11630 <param id="field_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11631 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11632 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11633 Class of the field being accessed
a61af66fc99e Initial load
duke
parents:
diff changeset
11634 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11635 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11636 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
11637 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11638 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11639 Object with the field being accessed if the field is an
a61af66fc99e Initial load
duke
parents:
diff changeset
11640 instance field; <code>NULL</code> otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
11641 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11642 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11643 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
11644 <jfieldID class="field_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11645 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11646 Field being accessed
a61af66fc99e Initial load
duke
parents:
diff changeset
11647 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11648 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11649 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11650 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11651
a61af66fc99e Initial load
duke
parents:
diff changeset
11652 <event label="Field Modification"
a61af66fc99e Initial load
duke
parents:
diff changeset
11653 id="FieldModification" const="JVMTI_EVENT_FIELD_MODIFICATION" filtered="thread" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
11654 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11655 Field modification events are generated whenever a thread modifies
a61af66fc99e Initial load
duke
parents:
diff changeset
11656 a field that was designated as a watchpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11657 with <functionlink id="SetFieldModificationWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11658 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11659 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11660 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11661 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11662 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11663 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11664 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11665 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11666 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11667 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11668 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11669 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11670 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11671 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11672 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11673 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11674 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11675 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11676 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11677 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11678 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11679 Thread modifying the field
a61af66fc99e Initial load
duke
parents:
diff changeset
11680 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11681 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11682 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11683 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11684 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11685 Class of the method where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11686 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11687 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11688 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11689 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11690 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11691 Method where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11692 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11693 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11694 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11695 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11696 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11697 Location where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11698 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11699 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11700 <param id="field_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11701 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11702 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11703 Class of the field being modified
a61af66fc99e Initial load
duke
parents:
diff changeset
11704 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11705 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11706 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
11707 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11708 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11709 Object with the field being modified if the field is an
a61af66fc99e Initial load
duke
parents:
diff changeset
11710 instance field; <code>NULL</code> otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
11711 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11712 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11713 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
11714 <jfieldID class="field_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11715 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11716 Field being modified
a61af66fc99e Initial load
duke
parents:
diff changeset
11717 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11718 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11719 <param id="signature_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
11720 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11721 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11722 Signature type of the new value
a61af66fc99e Initial load
duke
parents:
diff changeset
11723 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11724 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11725 <param id="new_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11726 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11727 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11728 The new value
a61af66fc99e Initial load
duke
parents:
diff changeset
11729 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11730 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11731 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11732 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11733
a61af66fc99e Initial load
duke
parents:
diff changeset
11734 <event label="Frame Pop"
a61af66fc99e Initial load
duke
parents:
diff changeset
11735 id="FramePop" const="JVMTI_EVENT_FRAME_POP" filtered="thread" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
11736 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11737 Frame pop events are generated upon exit from a single method
a61af66fc99e Initial load
duke
parents:
diff changeset
11738 in a single frame as specified
a61af66fc99e Initial load
duke
parents:
diff changeset
11739 in a call to <functionlink id="NotifyFramePop"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11740 This is true whether termination is caused by
a61af66fc99e Initial load
duke
parents:
diff changeset
11741 executing its return instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11742 or by throwing an exception to its caller
a61af66fc99e Initial load
duke
parents:
diff changeset
11743 (see <paramlink id="was_popped_by_exception"></paramlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11744 However, frame pops caused by the <functionlink id="PopFrame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11745 function are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
11746 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11747 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11748 identifies the executable location in the returning method,
a61af66fc99e Initial load
duke
parents:
diff changeset
11749 immediately prior to the return.
a61af66fc99e Initial load
duke
parents:
diff changeset
11750 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11751 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11752 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11753 <required id="can_generate_frame_pop_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11754 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11755 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11756 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11757 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11758 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11759 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11760 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11761 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11762 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11763 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11764 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11765 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11766 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11767 Thread that is popping the frame
a61af66fc99e Initial load
duke
parents:
diff changeset
11768 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11769 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11770 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11771 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11772 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11773 Class of the method being popped
a61af66fc99e Initial load
duke
parents:
diff changeset
11774 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11775 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11776 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11777 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11778 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11779 Method being popped
a61af66fc99e Initial load
duke
parents:
diff changeset
11780 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11781 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11782 <param id="was_popped_by_exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
11783 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11784 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11785 True if frame was popped by a thrown exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11786 False if method exited through its return instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
11787 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11788 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11789 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11790 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11791
a61af66fc99e Initial load
duke
parents:
diff changeset
11792 <event label="Method Entry"
a61af66fc99e Initial load
duke
parents:
diff changeset
11793 id="MethodEntry" const="JVMTI_EVENT_METHOD_ENTRY" filtered="thread" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
11794 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11795 Method entry events are generated upon entry of Java
a61af66fc99e Initial load
duke
parents:
diff changeset
11796 programming language methods (including native methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
11797 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11798 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11799 identifies the initial executable location in
a61af66fc99e Initial load
duke
parents:
diff changeset
11800 the method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11801 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11802 Enabling method
a61af66fc99e Initial load
duke
parents:
diff changeset
11803 entry or exit events will significantly degrade performance on many platforms and is thus
a61af66fc99e Initial load
duke
parents:
diff changeset
11804 not advised for performance critical usage (such as profiling).
a61af66fc99e Initial load
duke
parents:
diff changeset
11805 <internallink id="bci">Bytecode instrumentation</internallink> should be
a61af66fc99e Initial load
duke
parents:
diff changeset
11806 used in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
11807 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11808 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11809 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11810 <required id="can_generate_method_entry_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11811 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11812 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11813 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11814 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11815 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11816 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11817 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11818 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11819 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11820 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11821 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11822 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11823 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11824 Thread entering the method
a61af66fc99e Initial load
duke
parents:
diff changeset
11825 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11826 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11827 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11828 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11829 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11830 Class of the method being entered
a61af66fc99e Initial load
duke
parents:
diff changeset
11831 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11832 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11833 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11834 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11835 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11836 Method being entered
a61af66fc99e Initial load
duke
parents:
diff changeset
11837 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11838 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11839 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11840 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11841
a61af66fc99e Initial load
duke
parents:
diff changeset
11842 <event label="Method Exit"
a61af66fc99e Initial load
duke
parents:
diff changeset
11843 id="MethodExit" const="JVMTI_EVENT_METHOD_EXIT" filtered="thread" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
11844 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11845 Method exit events are generated upon exit from Java
a61af66fc99e Initial load
duke
parents:
diff changeset
11846 programming language methods (including native methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
11847 This is true whether termination is caused by
a61af66fc99e Initial load
duke
parents:
diff changeset
11848 executing its return instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11849 or by throwing an exception to its caller
a61af66fc99e Initial load
duke
parents:
diff changeset
11850 (see <paramlink id="was_popped_by_exception"></paramlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11851 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11852 The <code>method</code> field uniquely identifies the
a61af66fc99e Initial load
duke
parents:
diff changeset
11853 method being entered or exited. The <code>frame</code> field provides
a61af66fc99e Initial load
duke
parents:
diff changeset
11854 access to the stack frame for the method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11855 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11856 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11857 identifies the executable location in the returning method
a61af66fc99e Initial load
duke
parents:
diff changeset
11858 immediately prior to the return.
a61af66fc99e Initial load
duke
parents:
diff changeset
11859 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11860 Enabling method
a61af66fc99e Initial load
duke
parents:
diff changeset
11861 entry or exit events will significantly degrade performance on many platforms and is thus
a61af66fc99e Initial load
duke
parents:
diff changeset
11862 not advised for performance critical usage (such as profiling).
a61af66fc99e Initial load
duke
parents:
diff changeset
11863 <internallink id="bci">Bytecode instrumentation</internallink> should be
a61af66fc99e Initial load
duke
parents:
diff changeset
11864 used in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
11865 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11866 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11867 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11868 <required id="can_generate_method_exit_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11869 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11870 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11871 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11872 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11873 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11874 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11875 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11876 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11877 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11878 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11879 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11880 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11881 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11882 Thread exiting the method
a61af66fc99e Initial load
duke
parents:
diff changeset
11883 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11884 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11885 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11886 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11887 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11888 Class of the method being exited
a61af66fc99e Initial load
duke
parents:
diff changeset
11889 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11890 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11891 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11892 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11893 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11894 Method being exited
a61af66fc99e Initial load
duke
parents:
diff changeset
11895 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11896 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11897 <param id="was_popped_by_exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
11898 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11899 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11900 True if frame was popped by a thrown exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11901 False if method exited through its return instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
11902 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11903 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11904 <param id="return_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11905 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11906 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11907 The return value of the method being exited.
a61af66fc99e Initial load
duke
parents:
diff changeset
11908 Undefined and should not be used if
a61af66fc99e Initial load
duke
parents:
diff changeset
11909 <paramlink id="was_popped_by_exception"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11910 is true.
a61af66fc99e Initial load
duke
parents:
diff changeset
11911 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11912 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11913 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11914 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11915
a61af66fc99e Initial load
duke
parents:
diff changeset
11916 <event label="Native Method Bind" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
11917 id="NativeMethodBind" const="JVMTI_EVENT_NATIVE_METHOD_BIND" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
11918 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11919 A Native Method Bind event is sent when a VM binds a
a61af66fc99e Initial load
duke
parents:
diff changeset
11920 Java programming language native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11921 to the address of a function that implements the native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11922 This will occur when the native method is called for the first time
a61af66fc99e Initial load
duke
parents:
diff changeset
11923 and also occurs when the JNI function <code>RegisterNatives</code> is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
11924 This event allows the bind to be redirected to an agent-specified
a61af66fc99e Initial load
duke
parents:
diff changeset
11925 proxy function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11926 This event is not sent when the native method is unbound.
a61af66fc99e Initial load
duke
parents:
diff changeset
11927 Typically, this proxy function will need to be specific to a
a61af66fc99e Initial load
duke
parents:
diff changeset
11928 particular method or, to handle the general case, automatically
a61af66fc99e Initial load
duke
parents:
diff changeset
11929 generated assembly code, since after instrumentation code is
a61af66fc99e Initial load
duke
parents:
diff changeset
11930 executed the function at the original binding
a61af66fc99e Initial load
duke
parents:
diff changeset
11931 address will usually be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
11932 The original binding can be restored or the redirection changed
a61af66fc99e Initial load
duke
parents:
diff changeset
11933 by use of the JNI function <code>RegisterNatives</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11934 Some events may be sent during the primordial phase, JNI and
a61af66fc99e Initial load
duke
parents:
diff changeset
11935 most of <jvmti/> cannot be used at this time but the method and
a61af66fc99e Initial load
duke
parents:
diff changeset
11936 address can be saved for use later.
a61af66fc99e Initial load
duke
parents:
diff changeset
11937 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11938 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11939 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11940 <required id="can_generate_native_method_bind_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11941 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11942 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11943 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11944 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11945 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11946 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11947 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11948 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11949 Will be <code>NULL</code> if sent during the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
11950 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11951 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11952 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11953 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11954 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11955 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11956 Thread requesting the bind
a61af66fc99e Initial load
duke
parents:
diff changeset
11957 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11958 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11959 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11960 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11961 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11962 Class of the method being bound
a61af66fc99e Initial load
duke
parents:
diff changeset
11963 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11964 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11965 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11966 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11967 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11968 Native method being bound
a61af66fc99e Initial load
duke
parents:
diff changeset
11969 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11970 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11971 <param id="address">
a61af66fc99e Initial load
duke
parents:
diff changeset
11972 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11973 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11974 The address the VM is about to bind to--that is, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11975 address of the implementation of the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11976 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11977 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11978 <param id="new_address_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11979 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
11980 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11981 if the referenced address is changed (that is, if
a61af66fc99e Initial load
duke
parents:
diff changeset
11982 <code>*new_address_ptr</code> is set), the binding
a61af66fc99e Initial load
duke
parents:
diff changeset
11983 will instead be made to the supplied address.
a61af66fc99e Initial load
duke
parents:
diff changeset
11984 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11985 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11986 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11987 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11988
a61af66fc99e Initial load
duke
parents:
diff changeset
11989 <event label="Exception"
a61af66fc99e Initial load
duke
parents:
diff changeset
11990 id="Exception" const="JVMTI_EVENT_EXCEPTION" filtered="thread" num="58">
a61af66fc99e Initial load
duke
parents:
diff changeset
11991 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11992 Exception events are generated whenever an exception is first detected
a61af66fc99e Initial load
duke
parents:
diff changeset
11993 in a Java programming language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11994 Where "exception" means any <code>java.lang.Throwable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11995 The exception may have been thrown by a Java programming language or native
a61af66fc99e Initial load
duke
parents:
diff changeset
11996 method, but in the case of native methods, the event is not generated
a61af66fc99e Initial load
duke
parents:
diff changeset
11997 until the exception is first seen by a Java programming language method. If an exception is
a61af66fc99e Initial load
duke
parents:
diff changeset
11998 set and cleared in a native method (and thus is never visible to Java programming language code),
a61af66fc99e Initial load
duke
parents:
diff changeset
11999 no exception event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12000 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12001 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12002 parameters uniquely identify the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
12003 (where the exception was detected) and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
12004 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
12005 available. The <code>exception</code> field identifies the thrown
a61af66fc99e Initial load
duke
parents:
diff changeset
12006 exception object. The <code>catch_method</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12007 and <code>catch_location</code> identify the location of the catch clause,
a61af66fc99e Initial load
duke
parents:
diff changeset
12008 if any, that handles the thrown exception. If there is no such catch clause,
a61af66fc99e Initial load
duke
parents:
diff changeset
12009 each field is set to 0. There is no guarantee that the thread will ever
a61af66fc99e Initial load
duke
parents:
diff changeset
12010 reach this catch clause. If there are native methods on the call stack
a61af66fc99e Initial load
duke
parents:
diff changeset
12011 between the throw location and the catch clause, the exception may
a61af66fc99e Initial load
duke
parents:
diff changeset
12012 be reset by one of those native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
12013 Similarly, exceptions that are reported as uncaught (<code>catch_klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12014 et al. set to 0) may in fact be caught by native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
12015 Agents can check for these occurrences by monitoring
a61af66fc99e Initial load
duke
parents:
diff changeset
12016 <eventlink id="ExceptionCatch"></eventlink> events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12017 Note that finally clauses are implemented as catch and re-throw. Therefore they
a61af66fc99e Initial load
duke
parents:
diff changeset
12018 will be reported in the catch location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12019 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12020 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12021 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12022 <required id="can_generate_exception_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12023 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12024 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12025 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12026 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12027 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12028 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12029 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12030 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12031 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12032 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12033 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12034 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12036 Thread generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12037 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12038 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12039 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12040 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12041 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12042 Class generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12043 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12044 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12045 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12046 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12047 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12048 Method generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12049 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12050 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12051 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12052 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12053 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12054 Location where exception occurred
a61af66fc99e Initial load
duke
parents:
diff changeset
12055 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12056 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12057 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
12058 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12059 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12060 The exception being thrown
a61af66fc99e Initial load
duke
parents:
diff changeset
12061 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12062 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12063 <param id="catch_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12064 <jclass method="catch_method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12065 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12066 Class that will catch the exception, or <code>NULL</code> if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12067 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12068 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12069 <param id="catch_method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12070 <jmethodID class="catch_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12071 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12072 Method that will catch the exception, or <code>NULL</code> if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12073 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12074 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12075 <param id="catch_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12076 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12077 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12078 location which will catch the exception or zero if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12079 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12080 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12081 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12082 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12083
a61af66fc99e Initial load
duke
parents:
diff changeset
12084 <event label="Exception Catch"
a61af66fc99e Initial load
duke
parents:
diff changeset
12085 id="ExceptionCatch" const="JVMTI_EVENT_EXCEPTION_CATCH" filtered="thread" num="59">
a61af66fc99e Initial load
duke
parents:
diff changeset
12086 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12087 Exception catch events are generated whenever a thrown exception is caught.
a61af66fc99e Initial load
duke
parents:
diff changeset
12088 Where "exception" means any <code>java.lang.Throwable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12089 If the exception is caught in a Java programming language method, the event is generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12090 when the catch clause is reached. If the exception is caught in a native
a61af66fc99e Initial load
duke
parents:
diff changeset
12091 method, the event is generated as soon as control is returned to a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12092 method. Exception catch events are generated for any exception for which
a61af66fc99e Initial load
duke
parents:
diff changeset
12093 a throw was detected in a Java programming language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
12094 Note that finally clauses are implemented as catch and re-throw. Therefore they
a61af66fc99e Initial load
duke
parents:
diff changeset
12095 will generate exception catch events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12096 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12097 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12098 parameters uniquely identify the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
12099 and allow the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
12100 available. For exceptions caught in a Java programming language method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
12101 <code>exception</code> object identifies the exception object. Exceptions
a61af66fc99e Initial load
duke
parents:
diff changeset
12102 caught in native methods are not necessarily available by the time the
a61af66fc99e Initial load
duke
parents:
diff changeset
12103 exception catch is reported, so the <code>exception</code> field is set
a61af66fc99e Initial load
duke
parents:
diff changeset
12104 to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12105 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12106 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12107 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12108 <required id="can_generate_exception_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12109 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12110 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12111 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12112 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12113 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12114 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12115 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12116 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12117 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12118 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12119 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12120 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12121 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12122 Thread catching the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12123 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12124 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12125 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12126 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12127 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12128 Class catching the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12129 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12130 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12131 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12132 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12133 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12134 Method catching the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12135 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12136 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12137 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12138 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12139 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12140 Location where exception is being caught
a61af66fc99e Initial load
duke
parents:
diff changeset
12141 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12142 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12143 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
12144 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12145 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12146 Exception being caught
a61af66fc99e Initial load
duke
parents:
diff changeset
12147 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12148 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12149 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12150 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12151
a61af66fc99e Initial load
duke
parents:
diff changeset
12152 <event label="Thread Start"
a61af66fc99e Initial load
duke
parents:
diff changeset
12153 id="ThreadStart" const="JVMTI_EVENT_THREAD_START" num="52" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12154 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12155 Thread start events are generated by a new thread before its initial
a61af66fc99e Initial load
duke
parents:
diff changeset
12156 method executes.
a61af66fc99e Initial load
duke
parents:
diff changeset
12157 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12158 A thread may be listed in the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
12159 <functionlink id="GetAllThreads"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12160 before its thread start event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12161 It is possible for other events to be generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12162 on a thread before its thread start event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12163 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12164 The event is sent on the newly started <paramlink id="thread"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12165 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12166 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12167 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12168 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12169 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12170 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12171 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12172 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12173 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12174 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12175 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12176 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12177 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12178 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12179 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12180 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12181 Thread starting
a61af66fc99e Initial load
duke
parents:
diff changeset
12182 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12183 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12184 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12185 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12186
a61af66fc99e Initial load
duke
parents:
diff changeset
12187 <event label="Thread End"
a61af66fc99e Initial load
duke
parents:
diff changeset
12188 id="ThreadEnd" const="JVMTI_EVENT_THREAD_END" filtered="thread" num="53" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12189 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12190 Thread end events are generated by a terminating thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12191 after its initial method has finished execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
12192 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12193 A thread may be listed in the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
12194 <functionlink id="GetAllThreads"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12195 after its thread end event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12196 No events are generated on a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12197 after its thread end event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12198 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12199 The event is sent on the dying <paramlink id="thread"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12200 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12201 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12202 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12203 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12204 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12205 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12206 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12207 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12208 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12209 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12210 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12211 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12212 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12213 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12214 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12215 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12216 Thread ending
a61af66fc99e Initial load
duke
parents:
diff changeset
12217 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12218 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12219 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12220 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12221
a61af66fc99e Initial load
duke
parents:
diff changeset
12222 <event label="Class Load"
a61af66fc99e Initial load
duke
parents:
diff changeset
12223 id="ClassLoad" const="JVMTI_EVENT_CLASS_LOAD" filtered="thread" phase="start" num="55">
a61af66fc99e Initial load
duke
parents:
diff changeset
12224 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12225 A class load event is generated when a class is first loaded. The order
a61af66fc99e Initial load
duke
parents:
diff changeset
12226 of class load events generated by a particular thread are guaranteed
a61af66fc99e Initial load
duke
parents:
diff changeset
12227 to match the order of class loading within that thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12228 Array class creation does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12229 The creation of a primitive class (for example, java.lang.Integer.TYPE)
a61af66fc99e Initial load
duke
parents:
diff changeset
12230 does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12231 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12232 This event is sent at an early stage in loading the class. As
a61af66fc99e Initial load
duke
parents:
diff changeset
12233 a result the class should be used carefully. Note, for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
12234 that methods and fields are not yet loaded, so queries for methods,
a61af66fc99e Initial load
duke
parents:
diff changeset
12235 fields, subclasses, and so on will not give correct results.
a61af66fc99e Initial load
duke
parents:
diff changeset
12236 See "Loading of Classes and Interfaces" in the <i>Java Language
a61af66fc99e Initial load
duke
parents:
diff changeset
12237 Specification</i>. For most
a61af66fc99e Initial load
duke
parents:
diff changeset
12238 purposes the <eventlink id="ClassPrepare"></eventlink> event will
a61af66fc99e Initial load
duke
parents:
diff changeset
12239 be more useful.
a61af66fc99e Initial load
duke
parents:
diff changeset
12240 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12241 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12242 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12243 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12244 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12245 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12246 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12247 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12248 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12249 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12250 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12251 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12252 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12253 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12254 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12255 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12256 Thread loading the class
a61af66fc99e Initial load
duke
parents:
diff changeset
12257 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12258 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12259 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12260 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12261 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12262 Class being loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12263 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12264 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12265 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12266 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12267
a61af66fc99e Initial load
duke
parents:
diff changeset
12268 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
12269 <event label="Class Unload"
a61af66fc99e Initial load
duke
parents:
diff changeset
12270 id="ClassUnload" const="JVMTI_EVENT_CLASS_UNLOAD" num="57">
a61af66fc99e Initial load
duke
parents:
diff changeset
12271 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12272 A class unload event is generated when the class is about to be unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12273 Class unload events take place during garbage collection and must be
a61af66fc99e Initial load
duke
parents:
diff changeset
12274 handled extremely carefully. The garbage collector holds many locks
a61af66fc99e Initial load
duke
parents:
diff changeset
12275 and has suspended all other threads, so the event handler cannot depend
a61af66fc99e Initial load
duke
parents:
diff changeset
12276 on the ability to acquire any locks. The class unload event handler should
a61af66fc99e Initial load
duke
parents:
diff changeset
12277 do as little as possible, perhaps by queuing information to be processed
a61af66fc99e Initial load
duke
parents:
diff changeset
12278 later. In particular, the <code>jclass</code> should be used only in
a61af66fc99e Initial load
duke
parents:
diff changeset
12279 the JNI function <code>isSameObject</code> or in the following <jvmti/> functions:
a61af66fc99e Initial load
duke
parents:
diff changeset
12280 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12281 <li><functionlink id="GetClassSignature"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12282 <li><functionlink id="GetSourceFileName"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12283 <li><functionlink id="IsInterface"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12284 <li><functionlink id="IsArrayClass"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12285 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12286 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12287 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12288 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12289 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12290 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12291 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12292 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12293 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12294 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12295 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12296 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12297 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12298 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12299 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12300 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12301 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12302 Thread generating the class unload
a61af66fc99e Initial load
duke
parents:
diff changeset
12303 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12304 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12305 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12306 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12307 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12308 Class being unloaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12309 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12310 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12311 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12312 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12313 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
12314
a61af66fc99e Initial load
duke
parents:
diff changeset
12315 <event label="Class Prepare"
a61af66fc99e Initial load
duke
parents:
diff changeset
12316 id="ClassPrepare" const="JVMTI_EVENT_CLASS_PREPARE" filtered="thread" phase="start" num="56">
a61af66fc99e Initial load
duke
parents:
diff changeset
12317 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12318 A class prepare event is generated when class preparation is complete.
a61af66fc99e Initial load
duke
parents:
diff changeset
12319 At this point, class fields, methods, and implemented interfaces are
a61af66fc99e Initial load
duke
parents:
diff changeset
12320 available, and no code from the class has been executed. Since array
a61af66fc99e Initial load
duke
parents:
diff changeset
12321 classes never have fields or methods, class prepare events are not
a61af66fc99e Initial load
duke
parents:
diff changeset
12322 generated for them. Class prepare events are not generated for
a61af66fc99e Initial load
duke
parents:
diff changeset
12323 primitive classes (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
12324 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12325 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12326 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12327 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12328 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12329 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12330 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12331 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12332 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12333 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12334 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12335 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12336 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12337 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12338 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12339 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12340 Thread generating the class prepare
a61af66fc99e Initial load
duke
parents:
diff changeset
12341 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12342 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12343 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12344 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12345 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12346 Class being prepared
a61af66fc99e Initial load
duke
parents:
diff changeset
12347 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12348 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12349 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12350 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12351
a61af66fc99e Initial load
duke
parents:
diff changeset
12352 <event label="Class File Load Hook" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
12353 id="ClassFileLoadHook" const="JVMTI_EVENT_CLASS_FILE_LOAD_HOOK" num="54">
a61af66fc99e Initial load
duke
parents:
diff changeset
12354 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12355 This event is sent when the VM obtains class file data,
a61af66fc99e Initial load
duke
parents:
diff changeset
12356 but before it constructs
a61af66fc99e Initial load
duke
parents:
diff changeset
12357 the in-memory representation for that class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12358 This event is also sent when the class is being modified by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12359 <functionlink id="RetransformClasses"/> function or
a61af66fc99e Initial load
duke
parents:
diff changeset
12360 the <functionlink id="RedefineClasses"/> function,
a61af66fc99e Initial load
duke
parents:
diff changeset
12361 called in any <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
12362 The agent can instrument
a61af66fc99e Initial load
duke
parents:
diff changeset
12363 the existing class file data sent by the VM to include profiling/debugging hooks.
a61af66fc99e Initial load
duke
parents:
diff changeset
12364 See the description of
a61af66fc99e Initial load
duke
parents:
diff changeset
12365 <internallink id="bci">bytecode instrumentation</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12366 for usage information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12367 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12368 This event may be sent before the VM is initialized (the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
12369 <functionlink id="GetPhase">phase</functionlink>). During this time
a61af66fc99e Initial load
duke
parents:
diff changeset
12370 no VM resources should be created. Some classes might not be compatible
a61af66fc99e Initial load
duke
parents:
diff changeset
12371 with the function (eg. ROMized classes) and this event will not be
a61af66fc99e Initial load
duke
parents:
diff changeset
12372 generated for these classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
12373 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12374 The agent must allocate the space for the modified
a61af66fc99e Initial load
duke
parents:
diff changeset
12375 class file data buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
12376 using the memory allocation function
a61af66fc99e Initial load
duke
parents:
diff changeset
12377 <functionlink id="Allocate"></functionlink> because the
a61af66fc99e Initial load
duke
parents:
diff changeset
12378 VM is responsible for freeing the new class file data buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
12379 using <functionlink id="Deallocate"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12380 Note that <functionlink id="Allocate"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12381 is permitted during the primordial phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
12382 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12383 If the agent wishes to modify the class file, it must set
a61af66fc99e Initial load
duke
parents:
diff changeset
12384 <code>new_class_data</code> to point
a61af66fc99e Initial load
duke
parents:
diff changeset
12385 to the newly instrumented class file data buffer and set
a61af66fc99e Initial load
duke
parents:
diff changeset
12386 <code>new_class_data_len</code> to the length of that
a61af66fc99e Initial load
duke
parents:
diff changeset
12387 buffer before returning
a61af66fc99e Initial load
duke
parents:
diff changeset
12388 from this call. If no modification is desired, the agent simply
a61af66fc99e Initial load
duke
parents:
diff changeset
12389 does not set <code>new_class_data</code>. If multiple agents
a61af66fc99e Initial load
duke
parents:
diff changeset
12390 have enabled this event the results are chained. That is, if
a61af66fc99e Initial load
duke
parents:
diff changeset
12391 <code>new_class_data</code> has been set, it becomes the
a61af66fc99e Initial load
duke
parents:
diff changeset
12392 <code>class_data</code> for the next agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12393 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12394 The order that this event is sent to each environment differs
a61af66fc99e Initial load
duke
parents:
diff changeset
12395 from other events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12396 This event is sent to environments in the following order:
a61af66fc99e Initial load
duke
parents:
diff changeset
12397 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12398 <li><fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12399 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12400 incapable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12401 environments, in the
a61af66fc99e Initial load
duke
parents:
diff changeset
12402 order in which they were created
a61af66fc99e Initial load
duke
parents:
diff changeset
12403 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12404 <li><fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12405 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12406 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12407 environments, in the
a61af66fc99e Initial load
duke
parents:
diff changeset
12408 order in which they were created
a61af66fc99e Initial load
duke
parents:
diff changeset
12409 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12410 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12411 When triggered by <functionlink id="RetransformClasses"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
12412 this event is sent only to <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12413 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12414 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12415 environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
12416 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12417 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12418 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12419 <capability id="can_generate_all_class_hook_events"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12420 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12421 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12422 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12423 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12424 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12425 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12426 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12427 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12428 Will be <code>NULL</code> if sent during the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
12429 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12430 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12431 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12432 <param id="class_being_redefined">
a61af66fc99e Initial load
duke
parents:
diff changeset
12433 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12434 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12435 The class being
a61af66fc99e Initial load
duke
parents:
diff changeset
12436 <functionlink id="RedefineClasses">redefined</functionlink> or
a61af66fc99e Initial load
duke
parents:
diff changeset
12437 <functionlink id="RetransformClasses">retransformed</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12438 <code>NULL</code> if sent by class load.
a61af66fc99e Initial load
duke
parents:
diff changeset
12439 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12440 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12441 <param id="loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
12442 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12443 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12444 The class loader loading the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12445 <code>NULL</code> if the bootstrap class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
12446 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12447 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12448 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
12449 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12450 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12451 Name of class being loaded as a VM internal qualified name
a61af66fc99e Initial load
duke
parents:
diff changeset
12452 (for example, "java/util/List"), encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12453 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12454 Note: if the class is defined with a <code>NULL</code> name or
a61af66fc99e Initial load
duke
parents:
diff changeset
12455 without a name specified, <code>name</code> will be <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12456 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12457 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12458 <param id="protection_domain">
a61af66fc99e Initial load
duke
parents:
diff changeset
12459 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12460 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12461 The <code>ProtectionDomain</code> of the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12462 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12463 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12464 <param id="class_data_len">
a61af66fc99e Initial load
duke
parents:
diff changeset
12465 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12466 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12467 Length of current class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12468 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12469 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12470 <param id="class_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
12471 <vmbuf><uchar/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12472 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12473 Pointer to the current class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12474 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12475 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12476 <param id="new_class_data_len">
a61af66fc99e Initial load
duke
parents:
diff changeset
12477 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12478 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12479 Pointer to the length of the new class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12480 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12481 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12482 <param id="new_class_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
12483 <agentbuf incount="new_class_data_len"><uchar/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12484 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12485 Pointer to the pointer to the instrumented class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12486 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12487 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12488 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12489 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12490
a61af66fc99e Initial load
duke
parents:
diff changeset
12491 <event label="VM Start Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12492 id="VMStart" const="JVMTI_EVENT_VM_START" num="57" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12493 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12494 The VM initialization event signals the start of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12495 At this time JNI is live but the VM is not yet fully initialized.
a61af66fc99e Initial load
duke
parents:
diff changeset
12496 Once this event is generated, the agent is free to call any JNI function.
a61af66fc99e Initial load
duke
parents:
diff changeset
12497 This event signals the beginning of the start phase,
a61af66fc99e Initial load
duke
parents:
diff changeset
12498 <jvmti/> functions permitted in the start phase may be called.
a61af66fc99e Initial load
duke
parents:
diff changeset
12499 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12500 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12501 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12502 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12503 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12504 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12505 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12506 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12507 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12508 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12509 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12510 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12511 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12512 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12513 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12514 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12515 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12516
a61af66fc99e Initial load
duke
parents:
diff changeset
12517 <event label="VM Initialization Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12518 id="VMInit" const="JVMTI_EVENT_VM_INIT" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
12519 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12520 The VM initialization event signals the completion of VM initialization. Once
a61af66fc99e Initial load
duke
parents:
diff changeset
12521 this event is generated, the agent is free to call any JNI or <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12522 function. The VM initialization event can be preceded by or can be concurrent
a61af66fc99e Initial load
duke
parents:
diff changeset
12523 with other events, but
a61af66fc99e Initial load
duke
parents:
diff changeset
12524 the preceding events should be handled carefully, if at all, because the
a61af66fc99e Initial load
duke
parents:
diff changeset
12525 VM has not completed its initialization. The thread start event for the
a61af66fc99e Initial load
duke
parents:
diff changeset
12526 main application thread is guaranteed not to occur until after the
a61af66fc99e Initial load
duke
parents:
diff changeset
12527 handler for the VM initialization event returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
12528 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12529 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12530 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12531 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12532 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12533 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12534 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12535 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12536 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12537 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12538 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12539 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12540 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12541 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12542 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12543 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12544 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12545 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12546 The initial thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12547 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12548 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12549 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12550 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12551
a61af66fc99e Initial load
duke
parents:
diff changeset
12552 <event label="VM Death Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12553 id="VMDeath" const="JVMTI_EVENT_VM_DEATH" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
12554 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12555 The VM death event notifies the agent of the termination of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12556 No events will occur after the VMDeath event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12557 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12558 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12559 Note that <internallink id="onunload">Agent_OnUnload</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12560 will still be called in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
12561 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12562 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12563 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12564 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12565 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12566 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12567 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12568 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12569 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12570 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12571 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12572 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12573 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12574 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12575 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12576
a61af66fc99e Initial load
duke
parents:
diff changeset
12577 <event label="Compiled Method Load"
a61af66fc99e Initial load
duke
parents:
diff changeset
12578 id="CompiledMethodLoad" const="JVMTI_EVENT_COMPILED_METHOD_LOAD" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
12579 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12580 Sent when a method is compiled and loaded into memory by the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12581 If it is unloaded, the <eventlink id="CompiledMethodUnload"/> event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12582 If it is moved, the <eventlink id="CompiledMethodUnload"/> event is sent,
a61af66fc99e Initial load
duke
parents:
diff changeset
12583 followed by a new <code>CompiledMethodLoad</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12584 Note that a single method may have multiple compiled forms, and that
a61af66fc99e Initial load
duke
parents:
diff changeset
12585 this event will be sent for each form.
a61af66fc99e Initial load
duke
parents:
diff changeset
12586 Note also that several methods may be inlined into a single
a61af66fc99e Initial load
duke
parents:
diff changeset
12587 address range, and that this event will be sent for each method.
a61af66fc99e Initial load
duke
parents:
diff changeset
12588 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12589 These events can be sent after their initial occurrence with
a61af66fc99e Initial load
duke
parents:
diff changeset
12590 <functionlink id="GenerateEvents"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12591 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12592 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12593 <typedef id="jvmtiAddrLocationMap" label="Native address to location entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
12594 <field id="start_address">
a61af66fc99e Initial load
duke
parents:
diff changeset
12595 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12596 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12597 Starting native address of code corresponding to a location
a61af66fc99e Initial load
duke
parents:
diff changeset
12598 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12599 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
12600 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12601 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12602 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12603 Corresponding location. See
a61af66fc99e Initial load
duke
parents:
diff changeset
12604 <functionlink id="GetJLocationFormat"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12605 for the meaning of location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12606 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12607 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
12608 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
12609 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12610 <required id="can_generate_compiled_method_load_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12611 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12612 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12613 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12614 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12615 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12616 Class of the method being compiled and loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12617 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12618 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12619 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12620 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12621 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12622 Method being compiled and loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12623 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12624 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12625 <param id="code_size">
a61af66fc99e Initial load
duke
parents:
diff changeset
12626 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12627 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12628 Size of compiled code
a61af66fc99e Initial load
duke
parents:
diff changeset
12629 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12630 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12631 <param id="code_addr">
a61af66fc99e Initial load
duke
parents:
diff changeset
12632 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12633 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12634 Address where compiled method code is loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12635 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12636 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12637 <param id="map_length">
a61af66fc99e Initial load
duke
parents:
diff changeset
12638 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12639 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12640 Number of <typelink id="jvmtiAddrLocationMap"></typelink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12641 entries in the address map.
a61af66fc99e Initial load
duke
parents:
diff changeset
12642 Zero if mapping information cannot be supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
12643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12644 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12645 <param id="map">
a61af66fc99e Initial load
duke
parents:
diff changeset
12646 <vmbuf><struct>jvmtiAddrLocationMap</struct></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12647 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12648 Map from native addresses to location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12649 The native address range of each entry is from
a61af66fc99e Initial load
duke
parents:
diff changeset
12650 <fieldlink id="start_address" struct="jvmtiAddrLocationMap"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12651 to <code>start_address-1</code> of the next entry.
a61af66fc99e Initial load
duke
parents:
diff changeset
12652 <code>NULL</code> if mapping information cannot be supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
12653 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12654 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12655 <param id="compile_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
12656 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12657 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12658 VM-specific compilation information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12659 The referenced compile information is managed by the VM
a61af66fc99e Initial load
duke
parents:
diff changeset
12660 and must not depend on the agent for collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
12661 A VM implementation defines the content and lifetime
a61af66fc99e Initial load
duke
parents:
diff changeset
12662 of the information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12663 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12664 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12665 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12666 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12667
a61af66fc99e Initial load
duke
parents:
diff changeset
12668 <event label="Compiled Method Unload"
a61af66fc99e Initial load
duke
parents:
diff changeset
12669 id="CompiledMethodUnload" const="JVMTI_EVENT_COMPILED_METHOD_UNLOAD" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
12670 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12671 Sent when a compiled method is unloaded from memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
12672 This event might not be sent on the thread which performed the unload.
a61af66fc99e Initial load
duke
parents:
diff changeset
12673 This event may be sent sometime after the unload occurs, but
a61af66fc99e Initial load
duke
parents:
diff changeset
12674 will be sent before the memory is reused
a61af66fc99e Initial load
duke
parents:
diff changeset
12675 by a newly generated compiled method. This event may be sent after
a61af66fc99e Initial load
duke
parents:
diff changeset
12676 the class is unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12677 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12678 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12679 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12680 <required id="can_generate_compiled_method_load_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12681 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12682 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12683 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12684 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12685 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12686 Class of the compiled method being unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12687 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12688 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12689 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12690 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12691 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12692 Compiled method being unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12693 For identification of the compiled method only -- the class
a61af66fc99e Initial load
duke
parents:
diff changeset
12694 may be unloaded and therefore the method should not be used
a61af66fc99e Initial load
duke
parents:
diff changeset
12695 as an argument to further JNI or <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
12696 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12697 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12698 <param id="code_addr">
a61af66fc99e Initial load
duke
parents:
diff changeset
12699 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12700 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12701 Address where compiled method code was loaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12702 For identification of the compiled method only --
a61af66fc99e Initial load
duke
parents:
diff changeset
12703 the space may have been reclaimed.
a61af66fc99e Initial load
duke
parents:
diff changeset
12704 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12705 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12706 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12707 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12708
a61af66fc99e Initial load
duke
parents:
diff changeset
12709 <event label="Dynamic Code Generated" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
12710 id="DynamicCodeGenerated" const="JVMTI_EVENT_DYNAMIC_CODE_GENERATED" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
12711 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12712 Sent when a component of the virtual machine is generated dynamically.
a61af66fc99e Initial load
duke
parents:
diff changeset
12713 This does not correspond to Java programming language code that is
a61af66fc99e Initial load
duke
parents:
diff changeset
12714 compiled--see <eventlink id="CompiledMethodLoad"></eventlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12715 This is for native code--for example, an interpreter that is generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12716 differently depending on command-line options.
a61af66fc99e Initial load
duke
parents:
diff changeset
12717 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12718 Note that this event has no controlling capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
12719 If a VM cannot generate these events, it simply does not send any.
a61af66fc99e Initial load
duke
parents:
diff changeset
12720 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12721 These events can be sent after their initial occurrence with
a61af66fc99e Initial load
duke
parents:
diff changeset
12722 <functionlink id="GenerateEvents"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12723 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12724 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12725 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12726 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12727 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12728 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
12729 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12730 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12731 Name of the code, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12732 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12733 Intended for display to an end-user.
a61af66fc99e Initial load
duke
parents:
diff changeset
12734 The name might not be unique.
a61af66fc99e Initial load
duke
parents:
diff changeset
12735 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12736 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12737 <param id="address">
a61af66fc99e Initial load
duke
parents:
diff changeset
12738 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12739 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12740 Native address of the code
a61af66fc99e Initial load
duke
parents:
diff changeset
12741 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12742 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12743 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
12744 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12745 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12746 Length in bytes of the code
a61af66fc99e Initial load
duke
parents:
diff changeset
12747 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12748 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12749 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12750 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12751
a61af66fc99e Initial load
duke
parents:
diff changeset
12752 <event label="Data Dump Request"
a61af66fc99e Initial load
duke
parents:
diff changeset
12753 id="DataDumpRequest" const="JVMTI_EVENT_DATA_DUMP_REQUEST" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
12754 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12755 Sent by the VM to request the agent to dump its data. This
a61af66fc99e Initial load
duke
parents:
diff changeset
12756 is just a hint and the agent need not react to this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12757 This is useful for processing command-line signals from users. For
a61af66fc99e Initial load
duke
parents:
diff changeset
12758 example, in the Java 2 SDK a CTRL-Break on Win32 and a CTRL-\ on Solaris
a61af66fc99e Initial load
duke
parents:
diff changeset
12759 causes the VM to send this event to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12760 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12761 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12762 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12763 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12764 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12765 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12766 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12767
a61af66fc99e Initial load
duke
parents:
diff changeset
12768 <event label="Monitor Contended Enter"
a61af66fc99e Initial load
duke
parents:
diff changeset
12769 id="MonitorContendedEnter" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTER" filtered="thread" num="75">
a61af66fc99e Initial load
duke
parents:
diff changeset
12770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12771 Sent when a thread is attempting to enter a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12772 monitor already acquired by another thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12773 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12774 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12775 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12776 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12777 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12778 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12779 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12780 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12781 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12782 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12783 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12784 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12785 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12786 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12787 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12788 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12789 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12790 JNI local reference to the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12791 attempting to enter the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12792 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12793 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12794 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12795 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12796 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12797 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12798 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12799 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12800 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12801 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12802
a61af66fc99e Initial load
duke
parents:
diff changeset
12803 <event label="Monitor Contended Entered"
a61af66fc99e Initial load
duke
parents:
diff changeset
12804 id="MonitorContendedEntered" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTERED" filtered="thread" num="76">
a61af66fc99e Initial load
duke
parents:
diff changeset
12805 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12806 Sent when a thread enters a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12807 monitor after waiting for it to be released by another thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12808 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12809 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12810 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12811 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12812 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12813 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12814 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12815 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12816 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12817 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12818 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12819 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12820 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12821 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12822 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12823 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12824 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12825 JNI local reference to the thread entering
a61af66fc99e Initial load
duke
parents:
diff changeset
12826 the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12827 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12828 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12829 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12830 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12831 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12832 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12833 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12834 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12835 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12836 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12837
a61af66fc99e Initial load
duke
parents:
diff changeset
12838 <event label="Monitor Wait"
a61af66fc99e Initial load
duke
parents:
diff changeset
12839 id="MonitorWait" const="JVMTI_EVENT_MONITOR_WAIT" filtered="thread" num="73">
a61af66fc99e Initial load
duke
parents:
diff changeset
12840 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12841 Sent when a thread is about to wait on an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12842 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12843 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12844 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12845 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12846 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12847 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12848 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12849 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12850 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12851 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12852 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12853 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12854 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12855 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12856 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12857 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12858 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12859 JNI local reference to the thread about to wait
a61af66fc99e Initial load
duke
parents:
diff changeset
12860 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12861 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12862 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12863 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12864 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12865 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12866 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12867 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12868 <param id="timeout">
a61af66fc99e Initial load
duke
parents:
diff changeset
12869 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12870 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12871 The number of milliseconds the thread will wait
a61af66fc99e Initial load
duke
parents:
diff changeset
12872 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12873 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12874 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12875 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12876
a61af66fc99e Initial load
duke
parents:
diff changeset
12877 <event label="Monitor Waited"
a61af66fc99e Initial load
duke
parents:
diff changeset
12878 id="MonitorWaited" const="JVMTI_EVENT_MONITOR_WAITED" filtered="thread" num="74">
a61af66fc99e Initial load
duke
parents:
diff changeset
12879 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12880 Sent when a thread finishes waiting on an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12881 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12882 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12883 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12884 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12885 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12886 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12887 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12888 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12889 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12890 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12891 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12892 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12893 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12894 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12895 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12896 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12897 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12898 JNI local reference to the thread that was finished waiting
a61af66fc99e Initial load
duke
parents:
diff changeset
12899 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12900 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12901 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12902 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12903 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12904 JNI local reference to the monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
12905 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12906 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12907 <param id="timed_out">
a61af66fc99e Initial load
duke
parents:
diff changeset
12908 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12909 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12910 True if the monitor timed out
a61af66fc99e Initial load
duke
parents:
diff changeset
12911 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12912 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12913 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12914 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12915
a61af66fc99e Initial load
duke
parents:
diff changeset
12916 <event label="Resource Exhausted"
a61af66fc99e Initial load
duke
parents:
diff changeset
12917 id="ResourceExhausted" const="JVMTI_EVENT_RESOURCE_EXHAUSTED" num="80"
a61af66fc99e Initial load
duke
parents:
diff changeset
12918 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
12919 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12920 Sent when a VM resource needed by a running application has been exhausted.
a61af66fc99e Initial load
duke
parents:
diff changeset
12921 Except as required by the optional capabilities, the set of resources
a61af66fc99e Initial load
duke
parents:
diff changeset
12922 which report exhaustion is implementation dependent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12923 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12924 The following bit flags define the properties of the resource exhaustion:
a61af66fc99e Initial load
duke
parents:
diff changeset
12925 <constants id="jvmtiResourceExhaustionFlags"
a61af66fc99e Initial load
duke
parents:
diff changeset
12926 label="Resource Exhaustion Flags"
a61af66fc99e Initial load
duke
parents:
diff changeset
12927 kind="bits"
a61af66fc99e Initial load
duke
parents:
diff changeset
12928 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
12929 <constant id="JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR" num="0x0001">
a61af66fc99e Initial load
duke
parents:
diff changeset
12930 After this event returns, the VM will throw a
a61af66fc99e Initial load
duke
parents:
diff changeset
12931 <code>java.lang.OutOfMemoryError</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12932 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12933 <constant id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP" num="0x0002">
a61af66fc99e Initial load
duke
parents:
diff changeset
12934 The VM was unable to allocate memory from the <tm>Java</tm>
a61af66fc99e Initial load
duke
parents:
diff changeset
12935 platform <i>heap</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12936 The <i>heap</i> is the runtime
a61af66fc99e Initial load
duke
parents:
diff changeset
12937 data area from which memory for all class instances and
a61af66fc99e Initial load
duke
parents:
diff changeset
12938 arrays are allocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12939 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12940 <constant id="JVMTI_RESOURCE_EXHAUSTED_THREADS" num="0x0004">
a61af66fc99e Initial load
duke
parents:
diff changeset
12941 The VM was unable to create a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12942 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12943 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
12944 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12945 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12946 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12947 <capability id="can_generate_resource_exhaustion_heap_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
12948 Can generate events when the VM is unable to allocate memory from the
a61af66fc99e Initial load
duke
parents:
diff changeset
12949 <internallink id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP">heap</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12950 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12951 <capability id="can_generate_resource_exhaustion_threads_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
12952 Can generate events when the VM is unable to
a61af66fc99e Initial load
duke
parents:
diff changeset
12953 <internallink id="JVMTI_RESOURCE_EXHAUSTED_THREADS">create
a61af66fc99e Initial load
duke
parents:
diff changeset
12954 a thread</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12955 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12956 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12957 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12958 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12959 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12960 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12961 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12962 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12963 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12964 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12965 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12966 <param id="flags">
a61af66fc99e Initial load
duke
parents:
diff changeset
12967 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12968 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12969 Flags defining the properties of the of resource exhaustion
a61af66fc99e Initial load
duke
parents:
diff changeset
12970 as specified by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12971 <internallink id="jvmtiResourceExhaustionFlags">Resource
a61af66fc99e Initial load
duke
parents:
diff changeset
12972 Exhaustion Flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12973 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12974 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12975 <param id="reserved">
a61af66fc99e Initial load
duke
parents:
diff changeset
12976 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12977 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12978 Reserved.
a61af66fc99e Initial load
duke
parents:
diff changeset
12979 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12980 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12981 <param id="description">
a61af66fc99e Initial load
duke
parents:
diff changeset
12982 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12983 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12984 Description of the resource exhaustion, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12985 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12986 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12987 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12988 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12989 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12990
a61af66fc99e Initial load
duke
parents:
diff changeset
12991 <event label="VM Object Allocation"
a61af66fc99e Initial load
duke
parents:
diff changeset
12992 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
a61af66fc99e Initial load
duke
parents:
diff changeset
12993 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12994 Sent when a method causes the virtual machine to allocate an
a61af66fc99e Initial load
duke
parents:
diff changeset
12995 Object visible to Java programming language code and the
a61af66fc99e Initial load
duke
parents:
diff changeset
12996 allocation is not detectable by other intrumentation mechanisms.
a61af66fc99e Initial load
duke
parents:
diff changeset
12997 Generally object allocation should be detected by instrumenting
a61af66fc99e Initial load
duke
parents:
diff changeset
12998 the bytecodes of allocating methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
12999 Object allocation generated in native code by JNI function
a61af66fc99e Initial load
duke
parents:
diff changeset
13000 calls should be detected using
a61af66fc99e Initial load
duke
parents:
diff changeset
13001 <internallink id="jniIntercept">JNI function interception</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13002 Some methods might not have associated bytecodes and are not
a61af66fc99e Initial load
duke
parents:
diff changeset
13003 native methods, they instead are executed directly by the
a61af66fc99e Initial load
duke
parents:
diff changeset
13004 VM. These methods should send this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13005 Virtual machines which are incapable of bytecode instrumentation
a61af66fc99e Initial load
duke
parents:
diff changeset
13006 for some or all of their methods can send this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13007 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13008 Typical examples where this event might be sent:
a61af66fc99e Initial load
duke
parents:
diff changeset
13009 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13010 <li>Reflection -- for example, <code>java.lang.Class.newInstance()</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13011 <li>Methods not represented by bytecodes -- for example, VM intrinsics and
a61af66fc99e Initial load
duke
parents:
diff changeset
13012 J2ME preloaded classes</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13013 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13014 Cases where this event would not be generated:
a61af66fc99e Initial load
duke
parents:
diff changeset
13015 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13016 <li>Allocation due to bytecodes -- for example, the <code>new</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
13017 and <code>newarray</code> VM instructions</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13018 <li>Allocation due to JNI function calls -- for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
13019 <code>AllocObject</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13020 <li>Allocations during VM initialization</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13021 <li>VM internal objects</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13022 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13023 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13024 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13025 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13026 <required id="can_generate_vm_object_alloc_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13027 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13028 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13029 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
13030 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
13031 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
13032 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
13033 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13034 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
13035 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13036 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13037 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
13038 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13039 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13040 Thread allocating the object.
a61af66fc99e Initial load
duke
parents:
diff changeset
13041 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13042 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13043 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
13044 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13045 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13046 JNI local reference to the object that was allocated
a61af66fc99e Initial load
duke
parents:
diff changeset
13047 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13048 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13049 <param id="object_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
13050 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13051 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13052 JNI local reference to the class of the object
a61af66fc99e Initial load
duke
parents:
diff changeset
13053 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13054 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13055 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
13056 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13057 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13058 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13059 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13060 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13061 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13062 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13063
a61af66fc99e Initial load
duke
parents:
diff changeset
13064 <event label="Object Free"
a61af66fc99e Initial load
duke
parents:
diff changeset
13065 id="ObjectFree" const="JVMTI_EVENT_OBJECT_FREE" num="83">
a61af66fc99e Initial load
duke
parents:
diff changeset
13066 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13067 An Object Free event is sent when the garbage collector frees an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
13068 Events are only sent for tagged objects--see
a61af66fc99e Initial load
duke
parents:
diff changeset
13069 <internallink id="Heap">heap functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13070 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13071 The event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13072 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13073 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13074 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13075 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13076 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13077 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13078 <required id="can_generate_object_free_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13079 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13080 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13081 <param id="tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
13082 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13083 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13084 The freed object's tag
a61af66fc99e Initial load
duke
parents:
diff changeset
13085 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13086 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13087 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13088 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13089
a61af66fc99e Initial load
duke
parents:
diff changeset
13090 <event label="Garbage Collection Start"
a61af66fc99e Initial load
duke
parents:
diff changeset
13091 id="GarbageCollectionStart" const="JVMTI_EVENT_GARBAGE_COLLECTION_START" num="81">
a61af66fc99e Initial load
duke
parents:
diff changeset
13092 <description>
2125
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13093 A Garbage Collection Start event is sent when a
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13094 garbage collection pause begins.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13095 Only stop-the-world collections are reported--that is, collections during
a61af66fc99e Initial load
duke
parents:
diff changeset
13096 which all threads cease to modify the state of the Java virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
13097 This means that some collectors will never generate these events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13098 This event is sent while the VM is still stopped, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
13099 the event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13100 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13101 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13102 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13103 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13104 This event is always sent as a matched pair with
a61af66fc99e Initial load
duke
parents:
diff changeset
13105 <eventlink id="GarbageCollectionFinish"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13106 (assuming both events are enabled) and no garbage collection
a61af66fc99e Initial load
duke
parents:
diff changeset
13107 events will occur between them.
a61af66fc99e Initial load
duke
parents:
diff changeset
13108 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13109 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13110 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13111 <required id="can_generate_garbage_collection_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13112 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13113 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13114 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13115 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13116
a61af66fc99e Initial load
duke
parents:
diff changeset
13117 <event label="Garbage Collection Finish"
a61af66fc99e Initial load
duke
parents:
diff changeset
13118 id="GarbageCollectionFinish" const="JVMTI_EVENT_GARBAGE_COLLECTION_FINISH" num="82">
a61af66fc99e Initial load
duke
parents:
diff changeset
13119 <description>
2125
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13120 A Garbage Collection Finish event is sent when a
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13121 garbage collection pause ends.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13122 This event is sent while the VM is still stopped, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
13123 the event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13124 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13125 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13126 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13127 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13128 Some agents may need to do post garbage collection operations that
a61af66fc99e Initial load
duke
parents:
diff changeset
13129 require the use of the disallowed <jvmti/> or JNI functions. For these
a61af66fc99e Initial load
duke
parents:
diff changeset
13130 cases an agent thread can be created which waits on a raw monitor,
a61af66fc99e Initial load
duke
parents:
diff changeset
13131 and the handler for the Garbage Collection Finish event simply
a61af66fc99e Initial load
duke
parents:
diff changeset
13132 notifies the raw monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13133 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13134 This event is always sent as a matched pair with
a61af66fc99e Initial load
duke
parents:
diff changeset
13135 <eventlink id="GarbageCollectionStart"/> (assuming both events are enabled).
a61af66fc99e Initial load
duke
parents:
diff changeset
13136 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13137 The most important use of this event is to provide timing information,
a61af66fc99e Initial load
duke
parents:
diff changeset
13138 and thus additional information is not required. However,
a61af66fc99e Initial load
duke
parents:
diff changeset
13139 information about the collection which is "free" should be included -
a61af66fc99e Initial load
duke
parents:
diff changeset
13140 what that information is needs to be determined.
a61af66fc99e Initial load
duke
parents:
diff changeset
13141 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13142 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13143 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13144 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13145 <required id="can_generate_garbage_collection_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13146 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13147 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13148 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13149 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13150
a61af66fc99e Initial load
duke
parents:
diff changeset
13151 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
13152 <event label="Verbose Output" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
13153 id="VerboseOutput" const="JVMTI_EVENT_VERBOSE_OUTPUT" num="85">
a61af66fc99e Initial load
duke
parents:
diff changeset
13154 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13155 Send verbose messages as strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
13156 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13157 This format is extremely fragile, as it can change with each
a61af66fc99e Initial load
duke
parents:
diff changeset
13158 platform, collector and version. Alternatives include:
a61af66fc99e Initial load
duke
parents:
diff changeset
13159 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13160 <li>building off Java programming language M and M APIs</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13161 <li>XML</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13162 <li>key/value pairs</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13163 <li>removing it</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13164 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13165 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13166 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13167 Though this seemed trivial to implement.
a61af66fc99e Initial load
duke
parents:
diff changeset
13168 In the RI it appears this will be quite complex.
a61af66fc99e Initial load
duke
parents:
diff changeset
13169 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13170 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13171 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13172 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13173 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13174 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13175 <param id="flag">
a61af66fc99e Initial load
duke
parents:
diff changeset
13176 <enum>jvmtiVerboseFlag</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
13177 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13178 Which verbose output is being sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13179 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13180 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13181 <param id="message">
a61af66fc99e Initial load
duke
parents:
diff changeset
13182 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
13183 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13184 Message text, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
13185 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
13186 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13187 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13188 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13189 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13190 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
13191
a61af66fc99e Initial load
duke
parents:
diff changeset
13192 </eventsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13193
a61af66fc99e Initial load
duke
parents:
diff changeset
13194 <datasection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13195 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13196 <jvmti/> extends the data types defined by JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
13197 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13198 <basetypes id="jniTypes" label="JNI Types Used in the JVM Tool Interface">
a61af66fc99e Initial load
duke
parents:
diff changeset
13199 <basetype id="jboolean">
a61af66fc99e Initial load
duke
parents:
diff changeset
13200 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13201 Holds a Java programming language <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13202 Unsigned 8 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13203 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13204 </basetype>
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13205 <basetype id="jchar">
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13206 <description>
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13207 Holds a Java programming language <code>char</code>.
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13208 Unsigned 16 bits.
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13209 </description>
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13210 </basetype>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13211 <basetype id="jint">
a61af66fc99e Initial load
duke
parents:
diff changeset
13212 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13213 Holds a Java programming language <code>int</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13214 Signed 32 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13215 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13216 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13217 <basetype id="jlong">
a61af66fc99e Initial load
duke
parents:
diff changeset
13218 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13219 Holds a Java programming language <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13220 Signed 64 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13221 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13222 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13223 <basetype id="jfloat">
a61af66fc99e Initial load
duke
parents:
diff changeset
13224 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13225 Holds a Java programming language <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13226 32 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13227 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13228 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13229 <basetype id="jdouble">
a61af66fc99e Initial load
duke
parents:
diff changeset
13230 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13231 Holds a Java programming language <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13232 64 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13233 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13234 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13235 <basetype id="jobject">
a61af66fc99e Initial load
duke
parents:
diff changeset
13236 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13237 Holds a Java programming language object.
a61af66fc99e Initial load
duke
parents:
diff changeset
13238 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13239 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13240 <basetype id="jclass">
a61af66fc99e Initial load
duke
parents:
diff changeset
13241 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13242 Holds a Java programming language class.
a61af66fc99e Initial load
duke
parents:
diff changeset
13243 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13244 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13245 <basetype id="jvalue">
a61af66fc99e Initial load
duke
parents:
diff changeset
13246 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13247 Is a union of all primitive types and <code>jobject</code>. Thus, holds any Java
a61af66fc99e Initial load
duke
parents:
diff changeset
13248 programming language value.
a61af66fc99e Initial load
duke
parents:
diff changeset
13249 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13250 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13251 <basetype id="jfieldID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13252 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13253 Identifies a Java programming language field.
a61af66fc99e Initial load
duke
parents:
diff changeset
13254 <code>jfieldID</code>s returned by <jvmti/> functions and events may be
a61af66fc99e Initial load
duke
parents:
diff changeset
13255 safely stored.
a61af66fc99e Initial load
duke
parents:
diff changeset
13256 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13257 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13258 <basetype id="jmethodID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13259 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13260 Identifies a Java programming language method, initializer, or constructor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13261 <code>jmethodID</code>s returned by <jvmti/> functions and events may be
a61af66fc99e Initial load
duke
parents:
diff changeset
13262 safely stored. However, if the class is unloaded, they become invalid
a61af66fc99e Initial load
duke
parents:
diff changeset
13263 and must not be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
13264 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13265 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13266 <basetype id="JNIEnv">
a61af66fc99e Initial load
duke
parents:
diff changeset
13267 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13268 Pointer to the JNI function table. Pointer to this (<code>JNIEnv *</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
13269 is a JNI environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
13270 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13271 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13272 </basetypes>
a61af66fc99e Initial load
duke
parents:
diff changeset
13273
a61af66fc99e Initial load
duke
parents:
diff changeset
13274 <basetypes id="jvmtiTypes" label="JVM Tool Interface Base Types">
a61af66fc99e Initial load
duke
parents:
diff changeset
13275 <basetype id="jvmtiEnv">
a61af66fc99e Initial load
duke
parents:
diff changeset
13276 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13277 The <jvmti/> <internallink id="environments">environment</internallink> pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13278 See the <internallink id="FunctionSection">Function Section</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13279 <code>jvmtiEnv</code> points to the
a61af66fc99e Initial load
duke
parents:
diff changeset
13280 <internallink id="FunctionTable">function table</internallink> pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13281 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13282 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13283 <basetype id="jthread">
a61af66fc99e Initial load
duke
parents:
diff changeset
13284 <definition>typedef jobject jthread;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13285 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13286 Subtype of <datalink id="jobject"></datalink> that holds a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13287 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13288 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13289 <basetype id="jthreadGroup">
a61af66fc99e Initial load
duke
parents:
diff changeset
13290 <definition>typedef jobject jthreadGroup;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13291 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13292 Subtype of <datalink id="jobject"></datalink> that holds a thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
13293 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13294 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13295 <basetype id="jlocation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13296 <definition>typedef jlong jlocation;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13297 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13298 A 64 bit value, representing a monotonically increasing
a61af66fc99e Initial load
duke
parents:
diff changeset
13299 executable position within a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13300 <code>-1</code> indicates a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13301 See <functionlink id="GetJLocationFormat"></functionlink> for the format on a
a61af66fc99e Initial load
duke
parents:
diff changeset
13302 given VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
13303 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13304 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13305 <basetype id="jrawMonitorID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13306 <definition>struct _jrawMonitorID;
a61af66fc99e Initial load
duke
parents:
diff changeset
13307 typedef struct _jrawMonitorID *jrawMonitorID;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13308 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13309 A raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13310 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13311 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13312 <basetype id="jvmtiError">
a61af66fc99e Initial load
duke
parents:
diff changeset
13313 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13314 Holds an error return code.
a61af66fc99e Initial load
duke
parents:
diff changeset
13315 See the <internallink id="ErrorSection">Error section</internallink> for possible values.
a61af66fc99e Initial load
duke
parents:
diff changeset
13316 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13317 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
13318 JVMTI_ERROR_NONE = 0,
a61af66fc99e Initial load
duke
parents:
diff changeset
13319 JVMTI_ERROR_INVALID_THREAD = 10,
a61af66fc99e Initial load
duke
parents:
diff changeset
13320 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13321 } jvmtiError;
a61af66fc99e Initial load
duke
parents:
diff changeset
13322 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13323 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13324 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13325 <basetype id="jvmtiEvent">
a61af66fc99e Initial load
duke
parents:
diff changeset
13326 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13327 An identifier for an event type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13328 See the <internallink id="EventSection">Event section</internallink> for possible values.
a61af66fc99e Initial load
duke
parents:
diff changeset
13329 It is guaranteed that future versions of this specification will
a61af66fc99e Initial load
duke
parents:
diff changeset
13330 never assign zero as an event type identifier.
a61af66fc99e Initial load
duke
parents:
diff changeset
13331 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13332 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
13333 JVMTI_EVENT_SINGLE_STEP = 1,
a61af66fc99e Initial load
duke
parents:
diff changeset
13334 JVMTI_EVENT_BREAKPOINT = 2,
a61af66fc99e Initial load
duke
parents:
diff changeset
13335 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13336 } jvmtiEvent;
a61af66fc99e Initial load
duke
parents:
diff changeset
13337 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13338 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13339 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13340 <basetype id="jvmtiEventCallbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
13341 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13342 The callbacks used for events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13343 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13344 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
13345 jvmtiEventVMInit VMInit;
a61af66fc99e Initial load
duke
parents:
diff changeset
13346 jvmtiEventVMDeath VMDeath;
a61af66fc99e Initial load
duke
parents:
diff changeset
13347 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13348 } jvmtiEventCallbacks;
a61af66fc99e Initial load
duke
parents:
diff changeset
13349 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13350 See <internallink id="jvmtiEventCallbacks">event callbacks</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13351 for the complete structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
13352 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13353 Where, for example, the VM initialization callback is defined:
a61af66fc99e Initial load
duke
parents:
diff changeset
13354 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13355 typedef void (JNICALL *jvmtiEventVMInit)
a61af66fc99e Initial load
duke
parents:
diff changeset
13356 (jvmtiEnv *jvmti_env,
a61af66fc99e Initial load
duke
parents:
diff changeset
13357 JNIEnv* jni_env,
a61af66fc99e Initial load
duke
parents:
diff changeset
13358 jthread thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
13359 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13360 See the individual events for the callback function definition.
a61af66fc99e Initial load
duke
parents:
diff changeset
13361 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13362 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13363 <basetype id="jniNativeInterface">
a61af66fc99e Initial load
duke
parents:
diff changeset
13364 <definition>typedef struct JNINativeInterface_ jniNativeInterface;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13365 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13366 Typedef for the JNI function table <code>JNINativeInterface</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
13367 defined in the
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13368 <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
13369 The JNI reference implementation defines this with an underscore.
a61af66fc99e Initial load
duke
parents:
diff changeset
13370 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13371 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13372 </basetypes>
a61af66fc99e Initial load
duke
parents:
diff changeset
13373
a61af66fc99e Initial load
duke
parents:
diff changeset
13374 </datasection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13375
a61af66fc99e Initial load
duke
parents:
diff changeset
13376 <issuessection label="Issues">
a61af66fc99e Initial load
duke
parents:
diff changeset
13377 <intro id="suspendRequired" label="Resolved Issue: Suspend - Required or Automatic">
a61af66fc99e Initial load
duke
parents:
diff changeset
13378 JVMDI requires that the agent suspend threads before calling
a61af66fc99e Initial load
duke
parents:
diff changeset
13379 certain sensitive functions. JVMPI requires garbage collection to be
a61af66fc99e Initial load
duke
parents:
diff changeset
13380 disabled before calling certain sensitive functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13381 It was suggested that rather than have this requirement, that
a61af66fc99e Initial load
duke
parents:
diff changeset
13382 VM place itself in a suitable state before performing an
a61af66fc99e Initial load
duke
parents:
diff changeset
13383 operation. This makes considerable sense since each VM
a61af66fc99e Initial load
duke
parents:
diff changeset
13384 knows its requirements and can most easily arrange a
a61af66fc99e Initial load
duke
parents:
diff changeset
13385 safe state.
a61af66fc99e Initial load
duke
parents:
diff changeset
13386 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13387 The ability to externally suspend/resume threads will, of
a61af66fc99e Initial load
duke
parents:
diff changeset
13388 course, remain. The ability to enable/disable garbage collection will not.
a61af66fc99e Initial load
duke
parents:
diff changeset
13389 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13390 This issue is resolved--suspend will not
a61af66fc99e Initial load
duke
parents:
diff changeset
13391 be required. The spec has been updated to reflect this.
a61af66fc99e Initial load
duke
parents:
diff changeset
13392 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13393
a61af66fc99e Initial load
duke
parents:
diff changeset
13394 <intro id="stackSampling" label="Resolved Issue: Call Stack Sampling">
a61af66fc99e Initial load
duke
parents:
diff changeset
13395 There are a variety of approaches to sampling call stacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13396 The biggest bifurcation is between VM controlled and agent
a61af66fc99e Initial load
duke
parents:
diff changeset
13397 controlled.
a61af66fc99e Initial load
duke
parents:
diff changeset
13398 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13399 This issue is resolved--agent controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
13400 sampling will be the approach.
a61af66fc99e Initial load
duke
parents:
diff changeset
13401 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13402
a61af66fc99e Initial load
duke
parents:
diff changeset
13403 <intro id="threadRepresentation" label="Resolved Issue: Thread Representation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13404 JVMDI represents threads as jthread. JVMPI primarily
a61af66fc99e Initial load
duke
parents:
diff changeset
13405 uses JNIEnv* to represent threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13406 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13407 The Expert Group has chosen jthread as the representation
a61af66fc99e Initial load
duke
parents:
diff changeset
13408 for threads in <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13409 JNIEnv* is sent by
a61af66fc99e Initial load
duke
parents:
diff changeset
13410 events since it is needed to JNI functions. JNIEnv, per the
a61af66fc99e Initial load
duke
parents:
diff changeset
13411 JNI spec, are not supposed to be used outside their thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13412 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13413
a61af66fc99e Initial load
duke
parents:
diff changeset
13414 <intro id="design" label="Resolved Issue: Method Representation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13415 The JNI spec allows an implementation to depend on jclass/jmethodID
a61af66fc99e Initial load
duke
parents:
diff changeset
13416 pairs, rather than simply a jmethodID, to reference a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13417 JVMDI, for consistency, choose the same representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13418 JVMPI, however, specifies that a jmethodID alone maps to a
a61af66fc99e Initial load
duke
parents:
diff changeset
13419 method. Both of the Sun <tm>J2SE</tm> virtual machines (Classic and <tm>HotSpot</tm>) store
a61af66fc99e Initial load
duke
parents:
diff changeset
13420 pointers in jmethodIDs, and as a result, a jmethodID is sufficient.
a61af66fc99e Initial load
duke
parents:
diff changeset
13421 In fact, any JVM implementation that supports JVMPI must have
a61af66fc99e Initial load
duke
parents:
diff changeset
13422 such a representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13423 <jvmti/> will use jmethodID as a unique representation of a method
a61af66fc99e Initial load
duke
parents:
diff changeset
13424 (no jclass is used).
a61af66fc99e Initial load
duke
parents:
diff changeset
13425 There should be efficiency gains, particularly in
a61af66fc99e Initial load
duke
parents:
diff changeset
13426 functionality like stack dumping, to this representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13427 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13428 Note that fields were not used in JVMPI and that the access profile
a61af66fc99e Initial load
duke
parents:
diff changeset
13429 of fields differs from methods--for implementation efficiency
a61af66fc99e Initial load
duke
parents:
diff changeset
13430 reasons, a jclass/jfieldID pair will still be needed for field
a61af66fc99e Initial load
duke
parents:
diff changeset
13431 reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
13432 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13433
a61af66fc99e Initial load
duke
parents:
diff changeset
13434 <intro id="localReferenceIssue" label="Resolved Issue: Local References">
a61af66fc99e Initial load
duke
parents:
diff changeset
13435 Functions return local references.
a61af66fc99e Initial load
duke
parents:
diff changeset
13436 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13437
a61af66fc99e Initial load
duke
parents:
diff changeset
13438 <intro id="frameRep" label="Resolved Issue: Representation of frames">
a61af66fc99e Initial load
duke
parents:
diff changeset
13439 In JVMDI, a frame ID is used to represent a frame. Problem with this
a61af66fc99e Initial load
duke
parents:
diff changeset
13440 is that a VM must track when a frame becomes invalid, a far better
a61af66fc99e Initial load
duke
parents:
diff changeset
13441 approach, and the one used in <jvmti/>, is to reference frames by depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
13442 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13443
a61af66fc99e Initial load
duke
parents:
diff changeset
13444 <intro id="requiredCapabilities" label="Issue: Required Capabilities">
a61af66fc99e Initial load
duke
parents:
diff changeset
13445 Currently, having a required capabilities means that the functionality
a61af66fc99e Initial load
duke
parents:
diff changeset
13446 is optional. Capabilities are useful even for required functionality
a61af66fc99e Initial load
duke
parents:
diff changeset
13447 since they can inform the VM is needed set-up. Thus, there should be
a61af66fc99e Initial load
duke
parents:
diff changeset
13448 a set of capabilities that a conformant implementation must provide
a61af66fc99e Initial load
duke
parents:
diff changeset
13449 (if requested during Agent_OnLoad).
a61af66fc99e Initial load
duke
parents:
diff changeset
13450 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13451
a61af66fc99e Initial load
duke
parents:
diff changeset
13452 <intro id="taghint" label="Proposal: add tag hint function">
a61af66fc99e Initial load
duke
parents:
diff changeset
13453 A hint of the percentage of objects that will be tagged would
a61af66fc99e Initial load
duke
parents:
diff changeset
13454 help the VM pick a good implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13455 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13456
a61af66fc99e Initial load
duke
parents:
diff changeset
13457 <intro id="moreMonitorQueries" label="Request: More Monitor Quires">
a61af66fc99e Initial load
duke
parents:
diff changeset
13458 How difficult or easy would be to extend the monitor_info category to include
a61af66fc99e Initial load
duke
parents:
diff changeset
13459 <pre>
a61af66fc99e Initial load
duke
parents:
diff changeset
13460 - current number of monitors
a61af66fc99e Initial load
duke
parents:
diff changeset
13461 - enumeration of monitors
a61af66fc99e Initial load
duke
parents:
diff changeset
13462 - enumeration of threads waiting on a given monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13463 </pre>
a61af66fc99e Initial load
duke
parents:
diff changeset
13464 The reason for my question is the fact that current get_monitor_info support
a61af66fc99e Initial load
duke
parents:
diff changeset
13465 requires the agent to specify a given thread to get the info which is probably
a61af66fc99e Initial load
duke
parents:
diff changeset
13466 OK in the profiling/debugging space, while in the monitoring space the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
13467 could be watching the monitor list and then decide which thread to ask for
a61af66fc99e Initial load
duke
parents:
diff changeset
13468 the info. You might ask why is this important for monitoring .... I think it
a61af66fc99e Initial load
duke
parents:
diff changeset
13469 can aid in the detection/prediction of application contention caused by hot-locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13470 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13471 </issuessection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13472
a61af66fc99e Initial load
duke
parents:
diff changeset
13473 <changehistory id="ChangeHistory" update="09/05/07">
a61af66fc99e Initial load
duke
parents:
diff changeset
13474 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13475 The <jvmti/> specification is an evolving document with major, minor,
a61af66fc99e Initial load
duke
parents:
diff changeset
13476 and micro version numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13477 A released version of the specification is uniquely identified
a61af66fc99e Initial load
duke
parents:
diff changeset
13478 by its major and minor version.
a61af66fc99e Initial load
duke
parents:
diff changeset
13479 The functions, events, and capabilities in this specification
a61af66fc99e Initial load
duke
parents:
diff changeset
13480 indicate a "Since" value which is the major and minor version in
a61af66fc99e Initial load
duke
parents:
diff changeset
13481 which it was introduced.
a61af66fc99e Initial load
duke
parents:
diff changeset
13482 The version of the specification implemented by the VM can
a61af66fc99e Initial load
duke
parents:
diff changeset
13483 be retrieved at runtime with the <functionlink id="GetVersionNumber"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13484 function.
a61af66fc99e Initial load
duke
parents:
diff changeset
13485 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13486 <change date="14 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13487 Converted to XML document.
a61af66fc99e Initial load
duke
parents:
diff changeset
13488 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13489 <change date="14 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13490 Elided heap dump functions (for now) since what was there
a61af66fc99e Initial load
duke
parents:
diff changeset
13491 was wrong.
a61af66fc99e Initial load
duke
parents:
diff changeset
13492 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13493 <change date="18 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13494 Added detail throughout.
a61af66fc99e Initial load
duke
parents:
diff changeset
13495 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13496 <change date="18 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13497 Changed JVMTI_THREAD_STATUS_RUNNING to JVMTI_THREAD_STATUS_RUNNABLE.
a61af66fc99e Initial load
duke
parents:
diff changeset
13498 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13499 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13500 Added AsyncGetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13501 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13502 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13503 Added jframeID return to GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13504 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13505 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13506 Elided GetCurrentFrame and GetCallingFrame functions (for now) since what was there
a61af66fc99e Initial load
duke
parents:
diff changeset
13507 since they are redundant with GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13508 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13509 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13510 Elided ClearAllBreakpoints since it has always been redundant.
a61af66fc99e Initial load
duke
parents:
diff changeset
13511 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13512 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13513 Added GetSystemProperties.
a61af66fc99e Initial load
duke
parents:
diff changeset
13514 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13515 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13516 Changed the thread local storage functions to use jthread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13517 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13518 <change date="20 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13519 Added GetJLocationFormat.
a61af66fc99e Initial load
duke
parents:
diff changeset
13520 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13521 <change date="22 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13522 Added events and introductory text.
a61af66fc99e Initial load
duke
parents:
diff changeset
13523 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13524 <change date="22 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13525 Cross reference type and constant definitions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13526 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13527 <change date="24 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13528 Added DTD.
a61af66fc99e Initial load
duke
parents:
diff changeset
13529 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13530 <change date="24 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13531 Added capabilities function section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13532 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13533 <change date="29 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13534 Assign capabilities to each function and event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13535 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13536 <change date="29 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13537 Add <internallink id="jniIntercept">JNI interception functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13538 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13539 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13540 Auto generate SetEventNotificationMode capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13541 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13542 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13543 Add <eventlink id="VMObjectAlloc"></eventlink> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13544 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13545 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13546 Add <eventlink id="DynamicCodeGenerated"></eventlink> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13547 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13548 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13549 Add const to declarations.
a61af66fc99e Initial load
duke
parents:
diff changeset
13550 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13551 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13552 Change method exit and frame pop to send on exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
13553 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13554 <change date="1 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13555 Add ForceGarbageCollection.
a61af66fc99e Initial load
duke
parents:
diff changeset
13556 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13557 <change date="2 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13558 Redo Xrun section; clarify GetStackTrace and add example;
a61af66fc99e Initial load
duke
parents:
diff changeset
13559 Fix width problems; use "agent" consistently.
a61af66fc99e Initial load
duke
parents:
diff changeset
13560 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13561 <change date="8 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13562 Remove previous start-up intro.
a61af66fc99e Initial load
duke
parents:
diff changeset
13563 Add <internallink id="environments"><jvmti/> Environments</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13564 section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13565 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13566 <change date="8 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13567 Add <functionlink id="DisposeEnvironment"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13568 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13569 <change date="9 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13570 Numerous minor updates.
a61af66fc99e Initial load
duke
parents:
diff changeset
13571 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13572 <change date="15 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13573 Add heap profiling functions added:
a61af66fc99e Initial load
duke
parents:
diff changeset
13574 get/set annotation, iterate live objects/heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
13575 Add heap profiling functions place holder added:
a61af66fc99e Initial load
duke
parents:
diff changeset
13576 heap roots.
a61af66fc99e Initial load
duke
parents:
diff changeset
13577 Heap profiling event added: object free.
a61af66fc99e Initial load
duke
parents:
diff changeset
13578 Heap profiling event redesigned: vm object allocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13579 Heap profiling event placeholders added: garbage collection start/finish.
a61af66fc99e Initial load
duke
parents:
diff changeset
13580 Native method bind event added.
a61af66fc99e Initial load
duke
parents:
diff changeset
13581 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13582 <change date="19 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13583 Revamp suspend/resume functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13584 Add origin information with jvmdi tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
13585 Misc fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13586 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13587 <change date="24 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13588 Add semantics to types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13589 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13590 <change date="27 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13591 Add local reference section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13592 Autogenerate parameter descriptions from types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13593 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13594 <change date="28 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13595 Document that RunAgentThread sends threadStart.
a61af66fc99e Initial load
duke
parents:
diff changeset
13596 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13597 <change date="29 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13598 Remove redundant local ref and dealloc warning.
a61af66fc99e Initial load
duke
parents:
diff changeset
13599 Convert GetRawMonitorName to allocated buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13600 Add GenerateEvents.
a61af66fc99e Initial load
duke
parents:
diff changeset
13601 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13602 <change date="30 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13603 Make raw monitors a type and rename to "jrawMonitorID".
a61af66fc99e Initial load
duke
parents:
diff changeset
13604 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13605 <change date="1 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13606 Include origin information.
a61af66fc99e Initial load
duke
parents:
diff changeset
13607 Clean-up JVMDI issue references.
a61af66fc99e Initial load
duke
parents:
diff changeset
13608 Remove Deallocate warnings which are now automatically generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
13609 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13610 <change date="2 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13611 Fix representation issues for jthread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13612 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13613 <change date="3 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13614 Make capabilities buffered out to 64 bits - and do it automatically.
a61af66fc99e Initial load
duke
parents:
diff changeset
13615 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13616 <change date="4 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13617 Make constants which are enumeration into enum types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13618 Parameters now of enum type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13619 Clean-up and index type section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13620 Replace remaining datadef entities with callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
13621 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13622 <change date="7 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13623 Correct GenerateEvents description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13624 More internal semantics work.
a61af66fc99e Initial load
duke
parents:
diff changeset
13625 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13626 <change date="9 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13627 Replace previous GetSystemProperties with two functions
a61af66fc99e Initial load
duke
parents:
diff changeset
13628 which use allocated information instead fixed.
a61af66fc99e Initial load
duke
parents:
diff changeset
13629 Add SetSystemProperty.
a61af66fc99e Initial load
duke
parents:
diff changeset
13630 More internal semantics work.
a61af66fc99e Initial load
duke
parents:
diff changeset
13631 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13632 <change date="12 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13633 Add varargs to end of SetEventNotificationMode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13634 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13635 <change date="20 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13636 Finish fixing spec to reflect that alloc sizes are jlong.
a61af66fc99e Initial load
duke
parents:
diff changeset
13637 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13638 <change date="22 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13639 Allow NULL as RunAgentThread arg.
a61af66fc99e Initial load
duke
parents:
diff changeset
13640 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13641 <change date="22 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13642 Fixed names to standardized naming convention
a61af66fc99e Initial load
duke
parents:
diff changeset
13643 Removed AsyncGetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13644 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13645 <change date="29 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13646 Since we are using jthread, removed GetThread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13647 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13648 <change date="31 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13649 Change GetFieldName to allow NULLs like GetMethodName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13650 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13651 <change date="29 Feb 2003" version="v40">
a61af66fc99e Initial load
duke
parents:
diff changeset
13652 Rewrite the introductory text, adding sections on
a61af66fc99e Initial load
duke
parents:
diff changeset
13653 start-up, environments and bytecode instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13654 Change the command line arguments per EG discussions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13655 Add an introduction to the capabilities section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13656 Add the extension mechanism category and functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13657 Mark for deletion, but clarified anyhow, SuspendAllThreads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13658 Rename IterateOverLiveObjects to IterateOverReachableObjects and
a61af66fc99e Initial load
duke
parents:
diff changeset
13659 change the text accordingly.
a61af66fc99e Initial load
duke
parents:
diff changeset
13660 Clarify IterateOverHeap.
a61af66fc99e Initial load
duke
parents:
diff changeset
13661 Clarify CompiledMethodLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13662 Discuss prerequisite state for Calling Functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13663 Clarify SetAllocationHooks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13664 Added issues ("To be resolved:") through-out.
a61af66fc99e Initial load
duke
parents:
diff changeset
13665 And so on...
a61af66fc99e Initial load
duke
parents:
diff changeset
13666 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13667 <change date="6 Mar 2003" version="v41">
a61af66fc99e Initial load
duke
parents:
diff changeset
13668 Remove struct from the call to GetOwnedMonitorInfo.
a61af66fc99e Initial load
duke
parents:
diff changeset
13669 Automatically generate most error documentation, remove
a61af66fc99e Initial load
duke
parents:
diff changeset
13670 (rather broken) hand written error doc.
a61af66fc99e Initial load
duke
parents:
diff changeset
13671 Better describe capability use (empty initial set).
a61af66fc99e Initial load
duke
parents:
diff changeset
13672 Add min value to jint params.
a61af66fc99e Initial load
duke
parents:
diff changeset
13673 Remove the capability can_access_thread_local_storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
13674 Rename error JVMTI_ERROR_NOT_IMPLEMENTED to JVMTI_ERROR_MUST_POSSESS_CAPABILITY;
a61af66fc99e Initial load
duke
parents:
diff changeset
13675 same for *NOT_IMPLEMENTED.
a61af66fc99e Initial load
duke
parents:
diff changeset
13676 Description fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13677 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13678 <change date="8 Mar 2003" version="v42">
a61af66fc99e Initial load
duke
parents:
diff changeset
13679 Rename GetClassSignature to GetClassName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13680 Rename IterateOverClassObjects to IterateOverInstancesOfClass.
a61af66fc99e Initial load
duke
parents:
diff changeset
13681 Remove GetMaxStack (operand stack isn't used in <jvmti/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
13682 Description fixes: define launch-time, remove native frame pop
a61af66fc99e Initial load
duke
parents:
diff changeset
13683 from PopFrame, and assorted clarifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
13684 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13685 <change date="8 Mar 2003" version="v43">
a61af66fc99e Initial load
duke
parents:
diff changeset
13686 Fix minor editing problem.
a61af66fc99e Initial load
duke
parents:
diff changeset
13687 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13688 <change date="10 Mar 2003" version="v44">
a61af66fc99e Initial load
duke
parents:
diff changeset
13689 Add phase information.
a61af66fc99e Initial load
duke
parents:
diff changeset
13690 Remap (compact) event numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13691 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13692 <change date="11 Mar 2003" version="v45">
a61af66fc99e Initial load
duke
parents:
diff changeset
13693 More phase information - allow "any".
a61af66fc99e Initial load
duke
parents:
diff changeset
13694 Elide raw monitor queries and events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13695 Minor description fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13696 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13697 <change date="12 Mar 2003" version="v46">
a61af66fc99e Initial load
duke
parents:
diff changeset
13698 Add GetPhase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13699 Use "phase" through document.
a61af66fc99e Initial load
duke
parents:
diff changeset
13700 Elide GetRawMonitorName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13701 Elide GetObjectMonitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13702 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13703 <change date="12 Mar 2003" version="v47">
a61af66fc99e Initial load
duke
parents:
diff changeset
13704 Fixes from link, XML, and spell checking.
a61af66fc99e Initial load
duke
parents:
diff changeset
13705 Auto-generate the callback structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
13706 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13707 <change date="13 Mar 2003" version="v48">
a61af66fc99e Initial load
duke
parents:
diff changeset
13708 One character XML fix.
a61af66fc99e Initial load
duke
parents:
diff changeset
13709 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13710 <change date="13 Mar 2003" version="v49">
a61af66fc99e Initial load
duke
parents:
diff changeset
13711 Change function parameter names to be consistent with
a61af66fc99e Initial load
duke
parents:
diff changeset
13712 event parameters (fooBarBaz becomes foo_bar_baz).
a61af66fc99e Initial load
duke
parents:
diff changeset
13713 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13714 <change date="14 Mar 2003" version="v50">
a61af66fc99e Initial load
duke
parents:
diff changeset
13715 Fix broken link. Fix thread markers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13716 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13717 <change date="14 Mar 2003" version="v51">
a61af66fc99e Initial load
duke
parents:
diff changeset
13718 Change constants so they are under 128 to workaround
a61af66fc99e Initial load
duke
parents:
diff changeset
13719 compiler problems.
a61af66fc99e Initial load
duke
parents:
diff changeset
13720 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13721 <change date="23 Mar 2003" version="v52">
a61af66fc99e Initial load
duke
parents:
diff changeset
13722 Overhaul capabilities. Separate GetStackTrace into
a61af66fc99e Initial load
duke
parents:
diff changeset
13723 GetStackTrace and GetStackFrames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13724 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13725 <change date="8 Apr 2003" version="v54">
a61af66fc99e Initial load
duke
parents:
diff changeset
13726 Use depth instead of jframeID to reference frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13727 Remove the now irrelevant GetCurrentFrame, GetCallerFrame and GetStackFrames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13728 Remove frame arg from events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13729 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13730 <change date="9 Apr 2003" version="v55">
a61af66fc99e Initial load
duke
parents:
diff changeset
13731 Remove GetObjectWithAnnotation since tests show bufferred approach more efficient.
a61af66fc99e Initial load
duke
parents:
diff changeset
13732 Add missing annotation_count to GetObjectsWithAnnotations
a61af66fc99e Initial load
duke
parents:
diff changeset
13733 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13734 <change date="10 Apr 2003" version="v56">
a61af66fc99e Initial load
duke
parents:
diff changeset
13735 Remove confusing parenthetical statement in GetObjectsWithAnnotations
a61af66fc99e Initial load
duke
parents:
diff changeset
13736 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13737 <change date="13 Apr 2003" version="v58">
a61af66fc99e Initial load
duke
parents:
diff changeset
13738 Replace jclass/jmethodID representation of method with simply jmethodID;
a61af66fc99e Initial load
duke
parents:
diff changeset
13739 Pass JvmtiEnv* as first arg of every event; remove JNIEnv* where inappropriate.
a61af66fc99e Initial load
duke
parents:
diff changeset
13740 Replace can_access_frames with can_access_local_variables; remove from purely stack access.
a61af66fc99e Initial load
duke
parents:
diff changeset
13741 Use can_get_synthetic_attribute; fix description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13742 Clarify that zero length arrays must be deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
13743 Clarify RelinquishCapabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13744 Generalize JVMTI_ERROR_VM_DEAD to JVMTI_ERROR_WRONG_PHASE.
a61af66fc99e Initial load
duke
parents:
diff changeset
13745 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13746 <change date="27 Apr 2003" version="v59">
a61af66fc99e Initial load
duke
parents:
diff changeset
13747 Remove lingering indirect references to OBSOLETE_METHOD_ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
13748 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13749 <change date="4 May 2003" version="v60">
a61af66fc99e Initial load
duke
parents:
diff changeset
13750 Allow DestroyRawMonitor during OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13751 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13752 <change date="7 May 2003" version="v61">
a61af66fc99e Initial load
duke
parents:
diff changeset
13753 Added not monitor owner error return to DestroyRawMonitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13754 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13755 <change date="13 May 2003" version="v62">
a61af66fc99e Initial load
duke
parents:
diff changeset
13756 Clarify semantics of raw monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13757 Change flags on <code>GetThreadStatus</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13758 <code>GetClassLoader</code> return NULL for the bootstrap class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
13759 Add <code>GetClassName</code> issue.
a61af66fc99e Initial load
duke
parents:
diff changeset
13760 Define local variable signature.
a61af66fc99e Initial load
duke
parents:
diff changeset
13761 Disallow zero in annotations array of <code>GetObjectsWithAnnotations</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13762 Remove over specification in <code>GetObjectsWithAnnotations</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13763 Elide <code>SetAllocationHooks</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13764 Elide <code>SuspendAllThreads</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13765 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13766 <change date="14 May 2003" version="v63">
a61af66fc99e Initial load
duke
parents:
diff changeset
13767 Define the data type <code>jvmtiEventCallbacks</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13768 Zero length allocations return NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13769 Keep SetAllocationHooks in JVMDI, but remove from <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13770 Add JVMTI_THREAD_STATUS_FLAG_INTERRUPTED.
a61af66fc99e Initial load
duke
parents:
diff changeset
13771 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13772 <change date="15 May 2003" version="v64">
a61af66fc99e Initial load
duke
parents:
diff changeset
13773 Better wording, per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13774 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13775 <change date="15 May 2003" version="v65">
a61af66fc99e Initial load
duke
parents:
diff changeset
13776 First Alpha.
a61af66fc99e Initial load
duke
parents:
diff changeset
13777 Make jmethodID and jfieldID unique, jclass not used.
a61af66fc99e Initial load
duke
parents:
diff changeset
13778 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13779 <change date="27 May 2003" version="v66">
a61af66fc99e Initial load
duke
parents:
diff changeset
13780 Fix minor XSLT errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13781 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13782 <change date="13 June 2003" version="v67">
a61af66fc99e Initial load
duke
parents:
diff changeset
13783 Undo making jfieldID unique (jmethodID still is).
a61af66fc99e Initial load
duke
parents:
diff changeset
13784 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13785 <change date="17 June 2003" version="v68">
a61af66fc99e Initial load
duke
parents:
diff changeset
13786 Changes per June 11th Expert Group meeting --
a61af66fc99e Initial load
duke
parents:
diff changeset
13787 Overhaul Heap functionality: single callback,
a61af66fc99e Initial load
duke
parents:
diff changeset
13788 remove GetHeapRoots, add reachable iterators,
a61af66fc99e Initial load
duke
parents:
diff changeset
13789 and rename "annotation" to "tag".
a61af66fc99e Initial load
duke
parents:
diff changeset
13790 NULL thread parameter on most functions is current
a61af66fc99e Initial load
duke
parents:
diff changeset
13791 thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13792 Add timers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13793 Remove ForceExit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13794 Add GetEnvironmentLocalStorage.
a61af66fc99e Initial load
duke
parents:
diff changeset
13795 Add verbose flag and event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13796 Add AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13797 Update ClassFileLoadHook.
a61af66fc99e Initial load
duke
parents:
diff changeset
13798 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13799 <change date="18 June 2003" version="v69">
a61af66fc99e Initial load
duke
parents:
diff changeset
13800 Clean up issues sections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13801 Rename GetClassName back to GetClassSignature and
a61af66fc99e Initial load
duke
parents:
diff changeset
13802 fix description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13803 Add generic signature to GetClassSignature,
a61af66fc99e Initial load
duke
parents:
diff changeset
13804 GetFieldSignature, GetMethodSignature, and
a61af66fc99e Initial load
duke
parents:
diff changeset
13805 GetLocalVariableTable.
a61af66fc99e Initial load
duke
parents:
diff changeset
13806 Elide EstimateCostOfCapabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13807 Clarify that the system property functions operate
a61af66fc99e Initial load
duke
parents:
diff changeset
13808 on the VM view of system properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
13809 Clarify Agent_OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13810 Remove "const" from JNIEnv* in events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13811 Add metadata accessors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13812 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13813 <change date="18 June 2003" version="v70">
a61af66fc99e Initial load
duke
parents:
diff changeset
13814 Add start_depth to GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13815 Move system properties to a new category.
a61af66fc99e Initial load
duke
parents:
diff changeset
13816 Add GetObjectSize.
a61af66fc99e Initial load
duke
parents:
diff changeset
13817 Remove "X" from command line flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
13818 XML, HTML, and spell check corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13819 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13820 <change date="19 June 2003" version="v71">
a61af66fc99e Initial load
duke
parents:
diff changeset
13821 Fix JVMTI_HEAP_ROOT_THREAD to be 6.
a61af66fc99e Initial load
duke
parents:
diff changeset
13822 Make each synopsis match the function name.
a61af66fc99e Initial load
duke
parents:
diff changeset
13823 Fix unclear wording.
a61af66fc99e Initial load
duke
parents:
diff changeset
13824 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13825 <change date="26 June 2003" version="v72">
a61af66fc99e Initial load
duke
parents:
diff changeset
13826 SetThreadLocalStorage and SetEnvironmentLocalStorage should allow value
a61af66fc99e Initial load
duke
parents:
diff changeset
13827 to be set to NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13828 NotifyFramePop, GetFrameLocationm and all the local variable operations
a61af66fc99e Initial load
duke
parents:
diff changeset
13829 needed to have their wording about frames fixed.
a61af66fc99e Initial load
duke
parents:
diff changeset
13830 Grammar and clarity need to be fixed throughout.
a61af66fc99e Initial load
duke
parents:
diff changeset
13831 Capitalization and puntuation need to be consistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13832 Need micro version number and masks for accessing major, minor, and micro.
a61af66fc99e Initial load
duke
parents:
diff changeset
13833 The error code lists should indicate which must be returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
13834 an implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13835 The command line properties should be visible in the properties functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13836 Disallow popping from the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13837 Allow implementations to return opaque frame error when they cannot pop.
a61af66fc99e Initial load
duke
parents:
diff changeset
13838 The NativeMethodBind event should be sent during any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13839 The DynamicCodeGenerated event should be sent during any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13840 The following functions should be allowed to operate before VMInit:
a61af66fc99e Initial load
duke
parents:
diff changeset
13841 Set/GetEnvironmentLocalStorage
a61af66fc99e Initial load
duke
parents:
diff changeset
13842 GetMethodDeclaringClass
a61af66fc99e Initial load
duke
parents:
diff changeset
13843 GetClassSignature
a61af66fc99e Initial load
duke
parents:
diff changeset
13844 GetClassModifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
13845 IsInterface
a61af66fc99e Initial load
duke
parents:
diff changeset
13846 IsArrayClass
a61af66fc99e Initial load
duke
parents:
diff changeset
13847 GetMethodName
a61af66fc99e Initial load
duke
parents:
diff changeset
13848 GetMethodModifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
13849 GetMaxLocals
a61af66fc99e Initial load
duke
parents:
diff changeset
13850 GetArgumentsSize
a61af66fc99e Initial load
duke
parents:
diff changeset
13851 GetLineNumberTable
a61af66fc99e Initial load
duke
parents:
diff changeset
13852 GetMethodLocation
a61af66fc99e Initial load
duke
parents:
diff changeset
13853 IsMethodNative
a61af66fc99e Initial load
duke
parents:
diff changeset
13854 IsMethodSynthetic.
a61af66fc99e Initial load
duke
parents:
diff changeset
13855 Other changes (to XSL):
a61af66fc99e Initial load
duke
parents:
diff changeset
13856 Argument description should show asterisk after not before pointers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13857 NotifyFramePop, GetFrameLocationm and all the local variable operations
a61af66fc99e Initial load
duke
parents:
diff changeset
13858 should hsve the NO_MORE_FRAMES error added.
a61af66fc99e Initial load
duke
parents:
diff changeset
13859 Not alive threads should have a different error return than invalid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13860 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13861 <change date="7 July 2003" version="v73">
a61af66fc99e Initial load
duke
parents:
diff changeset
13862 VerboseOutput event was missing message parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13863 Minor fix-ups.
a61af66fc99e Initial load
duke
parents:
diff changeset
13864 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13865 <change date="14 July 2003" version="v74">
a61af66fc99e Initial load
duke
parents:
diff changeset
13866 Technical Publications Department corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13867 Allow thread and environment local storage to be set to NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13868 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13869 <change date="23 July 2003" version="v75">
a61af66fc99e Initial load
duke
parents:
diff changeset
13870 Use new Agent_OnLoad rather than overloaded JVM_OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13871 Add JNICALL to callbacks (XSL).
a61af66fc99e Initial load
duke
parents:
diff changeset
13872 Document JNICALL requirement for both events and callbacks (XSL).
a61af66fc99e Initial load
duke
parents:
diff changeset
13873 Restrict RedefineClasses to methods and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13874 Elide the VerboseOutput event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13875 VMObjectAlloc: restrict when event is sent and remove method parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13876 Finish loose ends from Tech Pubs edit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13877 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13878 <change date="24 July 2003" version="v76">
a61af66fc99e Initial load
duke
parents:
diff changeset
13879 Change ClassFileLoadHook event to send the class instead of a boolean of redefine.
a61af66fc99e Initial load
duke
parents:
diff changeset
13880 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13881 <change date="24 July 2003" version="v77">
a61af66fc99e Initial load
duke
parents:
diff changeset
13882 XML fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13883 Minor text clarifications and corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13884 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13885 <change date="24 July 2003" version="v78">
a61af66fc99e Initial load
duke
parents:
diff changeset
13886 Remove GetExceptionHandlerTable and GetThrownExceptions from <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13887 Clarify that stack frames are JVM Spec frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13888 Split can_get_source_info into can_get_source_file_name, can_get_line_numbers,
a61af66fc99e Initial load
duke
parents:
diff changeset
13889 and can_get_source_debug_extension.
a61af66fc99e Initial load
duke
parents:
diff changeset
13890 PopFrame cannot have a native calling method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13891 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
13892 (see <vmspec chapter="4.4"/>).
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13893 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13894 <change date="24 July 2003" version="v79">
a61af66fc99e Initial load
duke
parents:
diff changeset
13895 XML and text fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13896 Move stack frame description into Stack Frame category.
a61af66fc99e Initial load
duke
parents:
diff changeset
13897 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13898 <change date="26 July 2003" version="v80">
a61af66fc99e Initial load
duke
parents:
diff changeset
13899 Allow NULL (means bootstrap loader) for GetClassloaderClasses.
a61af66fc99e Initial load
duke
parents:
diff changeset
13900 Add new heap reference kinds for references from classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13901 Add timer information struct and query functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13902 Add AvailableProcessors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13903 Rename GetOtherThreadCpuTime to GetThreadCpuTime.
a61af66fc99e Initial load
duke
parents:
diff changeset
13904 Explicitly add JVMTI_ERROR_INVALID_THREAD and JVMTI_ERROR_THREAD_NOT_ALIVE
a61af66fc99e Initial load
duke
parents:
diff changeset
13905 to SetEventNotification mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13906 Add initial thread to the VM_INIT event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13907 Remove platform assumptions from AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13908 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13909 <change date="26 July 2003" version="v81">
a61af66fc99e Initial load
duke
parents:
diff changeset
13910 Grammar and clarity changes per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13911 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13912 <change date="27 July 2003" version="v82">
a61af66fc99e Initial load
duke
parents:
diff changeset
13913 More grammar and clarity changes per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13914 Add Agent_OnUnload.
a61af66fc99e Initial load
duke
parents:
diff changeset
13915 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13916 <change date="28 July 2003" version="v83">
a61af66fc99e Initial load
duke
parents:
diff changeset
13917 Change return type of Agent_OnUnload to void.
a61af66fc99e Initial load
duke
parents:
diff changeset
13918 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13919 <change date="28 July 2003" version="v84">
a61af66fc99e Initial load
duke
parents:
diff changeset
13920 Rename JVMTI_REFERENCE_ARRAY to JVMTI_REFERENCE_ARRAY_ELEMENT.
a61af66fc99e Initial load
duke
parents:
diff changeset
13921 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13922 <change date="28 July 2003" version="v85">
a61af66fc99e Initial load
duke
parents:
diff changeset
13923 Steal java.lang.Runtime.availableProcessors() wording for
a61af66fc99e Initial load
duke
parents:
diff changeset
13924 AvailableProcessors().
a61af66fc99e Initial load
duke
parents:
diff changeset
13925 Guarantee that zero will never be an event ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
13926 Remove some issues which are no longer issues.
a61af66fc99e Initial load
duke
parents:
diff changeset
13927 Per review, rename and more completely document the timer
a61af66fc99e Initial load
duke
parents:
diff changeset
13928 information functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13929 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13930 <change date="29 July 2003" version="v86">
a61af66fc99e Initial load
duke
parents:
diff changeset
13931 Non-spec visible change to XML controlled implementation:
a61af66fc99e Initial load
duke
parents:
diff changeset
13932 SetThreadLocalStorage must run in VM mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13933 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13934 <change date="5 August 2003" version="0.1.87">
a61af66fc99e Initial load
duke
parents:
diff changeset
13935 Add GetErrorName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13936 Add varargs warning to jvmtiExtensionEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13937 Remove "const" on the jvmtiEnv* of jvmtiExtensionEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13938 Remove unused can_get_exception_info capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
13939 Pass jvmtiEnv* and JNIEnv* to the jvmtiStartFunction.
a61af66fc99e Initial load
duke
parents:
diff changeset
13940 Fix jvmtiExtensionFunctionInfo.func declared type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13941 Extension function returns error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
13942 Use new version numbering.
a61af66fc99e Initial load
duke
parents:
diff changeset
13943 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13944 <change date="5 August 2003" version="0.2.88">
a61af66fc99e Initial load
duke
parents:
diff changeset
13945 Remove the ClassUnload event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13946 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13947 <change date="8 August 2003" version="0.2.89">
a61af66fc99e Initial load
duke
parents:
diff changeset
13948 Heap reference iterator callbacks return an enum that
a61af66fc99e Initial load
duke
parents:
diff changeset
13949 allows outgoing object references to be ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
13950 Allow JNIEnv as a param type to extension events/functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13951 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13952 <change date="15 August 2003" version="0.2.90">
a61af66fc99e Initial load
duke
parents:
diff changeset
13953 Fix a typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
13954 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13955 <change date="2 September 2003" version="0.2.91">
a61af66fc99e Initial load
duke
parents:
diff changeset
13956 Remove all metadata functions: GetClassMetadata,
a61af66fc99e Initial load
duke
parents:
diff changeset
13957 GetFieldMetadata, and GetMethodMetadata.
a61af66fc99e Initial load
duke
parents:
diff changeset
13958 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13959 <change date="1 October 2003" version="0.2.92">
a61af66fc99e Initial load
duke
parents:
diff changeset
13960 Mark the functions Allocate. Deallocate, RawMonitor*,
a61af66fc99e Initial load
duke
parents:
diff changeset
13961 SetEnvironmentLocalStorage, and GetEnvironmentLocalStorage
a61af66fc99e Initial load
duke
parents:
diff changeset
13962 as safe for use in heap callbacks and GC events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13963 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13964 <change date="24 November 2003" version="0.2.93">
a61af66fc99e Initial load
duke
parents:
diff changeset
13965 Add pass through opaque user data pointer to heap iterate
a61af66fc99e Initial load
duke
parents:
diff changeset
13966 functions and callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13967 In the CompiledMethodUnload event, send the code address.
a61af66fc99e Initial load
duke
parents:
diff changeset
13968 Add GarbageCollectionOccurred event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13969 Add constant pool reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
13970 Mark the functions CreateRawMonitor and DestroyRawMonitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13971 as safe for use in heap callbacks and GC events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13972 Clarify: VMDeath, GetCurrentThreadCpuTimerInfo,
a61af66fc99e Initial load
duke
parents:
diff changeset
13973 GetThreadCpuTimerInfo, IterateOverReachableObjects,
a61af66fc99e Initial load
duke
parents:
diff changeset
13974 IterateOverObjectsReachableFromObject, GetTime and
a61af66fc99e Initial load
duke
parents:
diff changeset
13975 JVMTI_ERROR_NULL_POINTER.
a61af66fc99e Initial load
duke
parents:
diff changeset
13976 Add missing errors to: GenerateEvents and
a61af66fc99e Initial load
duke
parents:
diff changeset
13977 AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13978 Fix description of ClassFileLoadHook name parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13979 In heap callbacks and GC/ObjectFree events, specify
a61af66fc99e Initial load
duke
parents:
diff changeset
13980 that only explicitly allowed functions can be called.
a61af66fc99e Initial load
duke
parents:
diff changeset
13981 Allow GetCurrentThreadCpuTimerInfo, GetCurrentThreadCpuTime,
a61af66fc99e Initial load
duke
parents:
diff changeset
13982 GetTimerInfo, and GetTime during callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
13983 Allow calling SetTag/GetTag during the onload phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13984 SetEventNotificationMode, add: error attempted inappropriate
a61af66fc99e Initial load
duke
parents:
diff changeset
13985 thread level control.
a61af66fc99e Initial load
duke
parents:
diff changeset
13986 Remove jvmtiExceptionHandlerEntry.
a61af66fc99e Initial load
duke
parents:
diff changeset
13987 Fix handling of native methods on the stack --
a61af66fc99e Initial load
duke
parents:
diff changeset
13988 location_ptr param of GetFrameLocation, remove
a61af66fc99e Initial load
duke
parents:
diff changeset
13989 JVMTI_ERROR_OPAQUE_FRAME from GetFrameLocation,
a61af66fc99e Initial load
duke
parents:
diff changeset
13990 jvmtiFrameInfo.location, and jlocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13991 Remove typo (from JVMPI) implying that the MonitorWaited
a61af66fc99e Initial load
duke
parents:
diff changeset
13992 event is sent on sleep.
a61af66fc99e Initial load
duke
parents:
diff changeset
13993 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13994 <change date="25 November 2003" version="0.2.94">
a61af66fc99e Initial load
duke
parents:
diff changeset
13995 Clarifications and typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
13996 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13997 <change date="3 December 2003" version="0.2.95">
a61af66fc99e Initial load
duke
parents:
diff changeset
13998 Allow NULL user_data in heap iterators.
a61af66fc99e Initial load
duke
parents:
diff changeset
13999 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14000 <change date="28 January 2004" version="0.2.97">
a61af66fc99e Initial load
duke
parents:
diff changeset
14001 Add GetThreadState, deprecate GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
14002 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14003 <change date="29 January 2004" version="0.2.98">
a61af66fc99e Initial load
duke
parents:
diff changeset
14004 INVALID_SLOT and TYPE_MISMATCH errors should be optional.
a61af66fc99e Initial load
duke
parents:
diff changeset
14005 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14006 <change date="12 February 2004" version="0.2.102">
a61af66fc99e Initial load
duke
parents:
diff changeset
14007 Remove MonitorContendedExit.
a61af66fc99e Initial load
duke
parents:
diff changeset
14008 Added JNIEnv parameter to VMObjectAlloc.
a61af66fc99e Initial load
duke
parents:
diff changeset
14009 Clarified definition of class_tag and referrer_index
a61af66fc99e Initial load
duke
parents:
diff changeset
14010 parameters to heap callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14011 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14012 <change date="16 Febuary 2004" version="0.2.103">
a61af66fc99e Initial load
duke
parents:
diff changeset
14013 Document JAVA_TOOL_OPTIONS.
a61af66fc99e Initial load
duke
parents:
diff changeset
14014 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14015 <change date="17 Febuary 2004" version="0.2.105">
a61af66fc99e Initial load
duke
parents:
diff changeset
14016 Divide start phase into primordial and start.
a61af66fc99e Initial load
duke
parents:
diff changeset
14017 Add VMStart event
a61af66fc99e Initial load
duke
parents:
diff changeset
14018 Change phase associations of functions and events.
a61af66fc99e Initial load
duke
parents:
diff changeset
14019 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14020 <change date="18 Febuary 2004" version="0.3.6">
a61af66fc99e Initial load
duke
parents:
diff changeset
14021 Elide deprecated GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
14022 Bump minor version, subtract 100 from micro version
a61af66fc99e Initial load
duke
parents:
diff changeset
14023 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14024 <change date="18 Febuary 2004" version="0.3.7">
a61af66fc99e Initial load
duke
parents:
diff changeset
14025 Document that timer nanosecond values are unsigned.
a61af66fc99e Initial load
duke
parents:
diff changeset
14026 Clarify text having to do with native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
14027 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14028 <change date="19 Febuary 2004" version="0.3.8">
a61af66fc99e Initial load
duke
parents:
diff changeset
14029 Fix typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14030 Remove elided deprecated GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
14031 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14032 <change date="23 Febuary 2004" version="0.3.9">
a61af66fc99e Initial load
duke
parents:
diff changeset
14033 Require NotifyFramePop to act on suspended threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
14034 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14035 <change date="24 Febuary 2004" version="0.3.10">
a61af66fc99e Initial load
duke
parents:
diff changeset
14036 Add capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
14037 (<internallink id="jvmtiCapabilities.can_redefine_any_class"
a61af66fc99e Initial load
duke
parents:
diff changeset
14038 ><code>can_redefine_any_class</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
14039 and
a61af66fc99e Initial load
duke
parents:
diff changeset
14040 <internallink id="jvmtiCapabilities.can_generate_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
14041 ><code>can_generate_all_class_hook_events</code></internallink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
14042 and an error (<errorlink id="JVMTI_ERROR_UNMODIFIABLE_CLASS"></errorlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
14043 which allow some classes to be unmodifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
14044 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14045 <change date="28 Febuary 2004" version="0.3.11">
a61af66fc99e Initial load
duke
parents:
diff changeset
14046 Add JVMTI_ERROR_MUST_POSSESS_CAPABILITY to SetEventNotificationMode.
a61af66fc99e Initial load
duke
parents:
diff changeset
14047 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14048 <change date="8 March 2004" version="0.3.12">
a61af66fc99e Initial load
duke
parents:
diff changeset
14049 Clarified CompiledMethodUnload so that it is clear the event
a61af66fc99e Initial load
duke
parents:
diff changeset
14050 may be posted after the class has been unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
14051 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14052 <change date="5 March 2004" version="0.3.13">
a61af66fc99e Initial load
duke
parents:
diff changeset
14053 Change the size parameter of VMObjectAlloc to jlong to match GetObjectSize.
a61af66fc99e Initial load
duke
parents:
diff changeset
14054 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14055 <change date="13 March 2004" version="0.3.14">
a61af66fc99e Initial load
duke
parents:
diff changeset
14056 Added guideline for the use of the JNI FindClass function in event
a61af66fc99e Initial load
duke
parents:
diff changeset
14057 callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14058 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14059 <change date="15 March 2004" version="0.3.15">
a61af66fc99e Initial load
duke
parents:
diff changeset
14060 Add GetAllStackTraces and GetThreadListStackTraces.
a61af66fc99e Initial load
duke
parents:
diff changeset
14061 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14062 <change date="19 March 2004" version="0.3.16">
a61af66fc99e Initial load
duke
parents:
diff changeset
14063 ClassLoad and ClassPrepare events can be posted during start phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14064 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14065 <change date="25 March 2004" version="0.3.17">
a61af66fc99e Initial load
duke
parents:
diff changeset
14066 Add JVMTI_ERROR_NATIVE_METHOD to GetLineNumberTable, GetLocalVariableTable,
a61af66fc99e Initial load
duke
parents:
diff changeset
14067 GetMaxLocals, GetArgumentsSize, GetMethodLocation, GetBytecodes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14068 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14069 <change date="29 March 2004" version="0.3.18">
a61af66fc99e Initial load
duke
parents:
diff changeset
14070 Return the timer kind in the timer information structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
14071 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14072 <change date="31 March 2004" version="0.3.19">
a61af66fc99e Initial load
duke
parents:
diff changeset
14073 Spec clarifications:
a61af66fc99e Initial load
duke
parents:
diff changeset
14074 JVMTI_THREAD_STATE_IN_NATIVE might not include JNI or <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
14075 ForceGarbageCollection does not run finalizers.
a61af66fc99e Initial load
duke
parents:
diff changeset
14076 The context of the specification is the Java platform.
a61af66fc99e Initial load
duke
parents:
diff changeset
14077 Warn about early instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14078 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14079 <change date="1 April 2004" version="0.3.20">
a61af66fc99e Initial load
duke
parents:
diff changeset
14080 Refinements to the above clarifications and
a61af66fc99e Initial load
duke
parents:
diff changeset
14081 Clarify that an error returned by Agent_OnLoad terminates the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
14082 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14083 <change date="1 April 2004" version="0.3.21">
a61af66fc99e Initial load
duke
parents:
diff changeset
14084 Array class creation does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14085 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14086 <change date="7 April 2004" version="0.3.22">
a61af66fc99e Initial load
duke
parents:
diff changeset
14087 Align thread state hierarchy more closely with java.lang.Thread.State.
a61af66fc99e Initial load
duke
parents:
diff changeset
14088 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14089 <change date="12 April 2004" version="0.3.23">
a61af66fc99e Initial load
duke
parents:
diff changeset
14090 Clarify the documentation of thread state.
a61af66fc99e Initial load
duke
parents:
diff changeset
14091 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14092 <change date="19 April 2004" version="0.3.24">
a61af66fc99e Initial load
duke
parents:
diff changeset
14093 Remove GarbageCollectionOccurred event -- can be done by agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14094 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14095 <change date="22 April 2004" version="0.3.25">
a61af66fc99e Initial load
duke
parents:
diff changeset
14096 Define "command-line option".
a61af66fc99e Initial load
duke
parents:
diff changeset
14097 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14098 <change date="29 April 2004" version="0.3.26">
a61af66fc99e Initial load
duke
parents:
diff changeset
14099 Describe the intended use of bytecode instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14100 Fix description of extension event first parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
14101 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14102 <change date="30 April 2004" version="0.3.27">
a61af66fc99e Initial load
duke
parents:
diff changeset
14103 Clarification and typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14104 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14105 <change date="18 May 2004" version="0.3.28">
a61af66fc99e Initial load
duke
parents:
diff changeset
14106 Remove DataDumpRequest event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14107 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14108 <change date="18 May 2004" version="0.3.29">
a61af66fc99e Initial load
duke
parents:
diff changeset
14109 Clarify RawMonitorWait with zero timeout.
a61af66fc99e Initial load
duke
parents:
diff changeset
14110 Clarify thread state after RunAgentThread.
a61af66fc99e Initial load
duke
parents:
diff changeset
14111 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14112 <change date="24 May 2004" version="0.3.30">
a61af66fc99e Initial load
duke
parents:
diff changeset
14113 Clean-up: fix bad/old links, etc.
a61af66fc99e Initial load
duke
parents:
diff changeset
14114 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14115 <change date="30 May 2004" version="0.3.31">
a61af66fc99e Initial load
duke
parents:
diff changeset
14116 Clarifications including:
a61af66fc99e Initial load
duke
parents:
diff changeset
14117 All character strings are modified UTF-8.
a61af66fc99e Initial load
duke
parents:
diff changeset
14118 Agent thread visibiity.
a61af66fc99e Initial load
duke
parents:
diff changeset
14119 Meaning of obsolete method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
14120 Thread invoking heap callbacks,
a61af66fc99e Initial load
duke
parents:
diff changeset
14121 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14122 <change date="1 June 2004" version="1.0.32">
a61af66fc99e Initial load
duke
parents:
diff changeset
14123 Bump major.minor version numbers to "1.0".
a61af66fc99e Initial load
duke
parents:
diff changeset
14124 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14125 <change date="2 June 2004" version="1.0.33">
a61af66fc99e Initial load
duke
parents:
diff changeset
14126 Clarify interaction between ForceGarbageCollection
a61af66fc99e Initial load
duke
parents:
diff changeset
14127 and ObjectFree.
a61af66fc99e Initial load
duke
parents:
diff changeset
14128 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14129 <change date="6 June 2004" version="1.0.34">
a61af66fc99e Initial load
duke
parents:
diff changeset
14130 Restrict AddToBootstrapClassLoaderSearch and
a61af66fc99e Initial load
duke
parents:
diff changeset
14131 SetSystemProperty to the OnLoad phase only.
a61af66fc99e Initial load
duke
parents:
diff changeset
14132 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14133 <change date="11 June 2004" version="1.0.35">
a61af66fc99e Initial load
duke
parents:
diff changeset
14134 Fix typo in SetTag.
a61af66fc99e Initial load
duke
parents:
diff changeset
14135 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14136 <change date="18 June 2004" version="1.0.36">
a61af66fc99e Initial load
duke
parents:
diff changeset
14137 Fix trademarks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14138 Add missing parameter in example GetThreadState usage.
a61af66fc99e Initial load
duke
parents:
diff changeset
14139 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14140 <change date="4 August 2004" version="1.0.37">
a61af66fc99e Initial load
duke
parents:
diff changeset
14141 Copyright updates.
a61af66fc99e Initial load
duke
parents:
diff changeset
14142 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14143 <change date="5 November 2004" version="1.0.38">
a61af66fc99e Initial load
duke
parents:
diff changeset
14144 Add missing function table layout.
a61af66fc99e Initial load
duke
parents:
diff changeset
14145 Add missing description of C++ member function format of functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14146 Clarify that name in CFLH can be NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
14147 Released as part of <tm>J2SE</tm> 5.0.
a61af66fc99e Initial load
duke
parents:
diff changeset
14148 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14149 <change date="24 April 2005" version="1.1.47">
a61af66fc99e Initial load
duke
parents:
diff changeset
14150 Bump major.minor version numbers to "1.1".
a61af66fc99e Initial load
duke
parents:
diff changeset
14151 Add ForceEarlyReturn* functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14152 Add GetOwnedMonitorStackDepthInfo function.
a61af66fc99e Initial load
duke
parents:
diff changeset
14153 Add GetCurrentThread function.
a61af66fc99e Initial load
duke
parents:
diff changeset
14154 Add "since" version marker.
a61af66fc99e Initial load
duke
parents:
diff changeset
14155 Add AddToSystemClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
14156 Allow AddToBootstrapClassLoaderSearch be used in live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14157 Fix historic rubbish in the descriptions of the heap_object_callback
a61af66fc99e Initial load
duke
parents:
diff changeset
14158 parameter of IterateOverHeap and IterateOverInstancesOfClass functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
14159 disallow NULL for this parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
14160 Clarify, correct and make consistent: wording about current thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
14161 opaque frames and insufficient number of frames in PopFrame.
a61af66fc99e Initial load
duke
parents:
diff changeset
14162 Consistently use "current frame" rather than "topmost".
a61af66fc99e Initial load
duke
parents:
diff changeset
14163 Clarify the JVMTI_ERROR_TYPE_MISMATCH errors in GetLocal* and SetLocal*
a61af66fc99e Initial load
duke
parents:
diff changeset
14164 by making them compatible with those in ForceEarlyReturn*.
a61af66fc99e Initial load
duke
parents:
diff changeset
14165 Many other clarifications and wording clean ups.
a61af66fc99e Initial load
duke
parents:
diff changeset
14166 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14167 <change date="25 April 2005" version="1.1.48">
a61af66fc99e Initial load
duke
parents:
diff changeset
14168 Add GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14169 Switch references to the first edition of the VM Spec, to the seconds edition.
a61af66fc99e Initial load
duke
parents:
diff changeset
14170 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14171 <change date="26 April 2005" version="1.1.49">
a61af66fc99e Initial load
duke
parents:
diff changeset
14172 Clarify minor/major version order in GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14173 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14174 <change date="26 April 2005" version="1.1.50">
a61af66fc99e Initial load
duke
parents:
diff changeset
14175 Add SetNativeMethodPrefix and SetNativeMethodPrefixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14176 Reassign GetOwnedMonitorStackDepthInfo to position 153.
a61af66fc99e Initial load
duke
parents:
diff changeset
14177 Break out Class Loader Search in its own documentation category.
a61af66fc99e Initial load
duke
parents:
diff changeset
14178 Deal with overly long lines in XML source.
a61af66fc99e Initial load
duke
parents:
diff changeset
14179 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14180 <change date="29 April 2005" version="1.1.51">
a61af66fc99e Initial load
duke
parents:
diff changeset
14181 Allow agents be started in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14182 Added paragraph about deploying agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
14183 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14184 <change date="30 April 2005" version="1.1.52">
a61af66fc99e Initial load
duke
parents:
diff changeset
14185 Add specification description to SetNativeMethodPrefix(es).
a61af66fc99e Initial load
duke
parents:
diff changeset
14186 Better define the conditions on GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14187 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14188 <change date="30 April 2005" version="1.1.53">
a61af66fc99e Initial load
duke
parents:
diff changeset
14189 Break out the GetClassVersionNumber function from GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14190 Clean-up the references to the VM Spec.
a61af66fc99e Initial load
duke
parents:
diff changeset
14191 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14192 <change date="1 May 2005" version="1.1.54">
a61af66fc99e Initial load
duke
parents:
diff changeset
14193 Allow SetNativeMethodPrefix(es) in any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14194 Add clarifications about the impact of redefinition on GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14195 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14196 <change date="2 May 2005" version="1.1.56">
a61af66fc99e Initial load
duke
parents:
diff changeset
14197 Various clarifications to SetNativeMethodPrefix(es).
a61af66fc99e Initial load
duke
parents:
diff changeset
14198 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14199 <change date="2 May 2005" version="1.1.57">
a61af66fc99e Initial load
duke
parents:
diff changeset
14200 Add missing performance warning to the method entry event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14201 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14202 <change date="5 May 2005" version="1.1.58">
a61af66fc99e Initial load
duke
parents:
diff changeset
14203 Remove internal JVMDI support.
a61af66fc99e Initial load
duke
parents:
diff changeset
14204 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14205 <change date="8 May 2005" version="1.1.59">
a61af66fc99e Initial load
duke
parents:
diff changeset
14206 Add <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
14207 Revamp the bytecode instrumentation documentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14208 Change <functionlink id="IsMethodObsolete"/> to no longer
a61af66fc99e Initial load
duke
parents:
diff changeset
14209 require the can_redefine_classes capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
14210 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14211 <change date="11 May 2005" version="1.1.63">
a61af66fc99e Initial load
duke
parents:
diff changeset
14212 Clarifications for retransformation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14213 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14214 <change date="11 May 2005" version="1.1.64">
a61af66fc99e Initial load
duke
parents:
diff changeset
14215 Clarifications for retransformation, per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
14216 Lock "retransformation (in)capable" at class load enable time.
a61af66fc99e Initial load
duke
parents:
diff changeset
14217 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14218 <change date="4 June 2005" version="1.1.67">
a61af66fc99e Initial load
duke
parents:
diff changeset
14219 Add new heap functionity which supports reporting primitive values,
a61af66fc99e Initial load
duke
parents:
diff changeset
14220 allows setting the referrer tag, and has more powerful filtering:
a61af66fc99e Initial load
duke
parents:
diff changeset
14221 FollowReferences, IterateThroughHeap, and their associated
a61af66fc99e Initial load
duke
parents:
diff changeset
14222 callbacks, structs, enums, and constants.
a61af66fc99e Initial load
duke
parents:
diff changeset
14223 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14224 <change date="4 June 2005" version="1.1.68">
a61af66fc99e Initial load
duke
parents:
diff changeset
14225 Clarification.
a61af66fc99e Initial load
duke
parents:
diff changeset
14226 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14227 <change date="6 June 2005" version="1.1.69">
a61af66fc99e Initial load
duke
parents:
diff changeset
14228 FollowReferences, IterateThroughHeap: Put callbacks in a struct;
a61af66fc99e Initial load
duke
parents:
diff changeset
14229 Add missing error codes; reduce bits in the visit control flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
14230 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14231 <change date="14 June 2005" version="1.1.70">
a61af66fc99e Initial load
duke
parents:
diff changeset
14232 More on new heap functionity: spec clean-up per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
14233 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14234 <change date="15 June 2005" version="1.1.71">
a61af66fc99e Initial load
duke
parents:
diff changeset
14235 More on new heap functionity: Rename old heap section to Heap (1.0).
a61af66fc99e Initial load
duke
parents:
diff changeset
14236 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14237 <change date="21 June 2005" version="1.1.72">
a61af66fc99e Initial load
duke
parents:
diff changeset
14238 Fix typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14239 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14240 <change date="27 June 2005" version="1.1.73">
a61af66fc99e Initial load
duke
parents:
diff changeset
14241 Make referrer info structure a union.
a61af66fc99e Initial load
duke
parents:
diff changeset
14242 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14243 <change date="9 September 2005" version="1.1.74">
a61af66fc99e Initial load
duke
parents:
diff changeset
14244 In new heap functions:
a61af66fc99e Initial load
duke
parents:
diff changeset
14245 Add missing superclass reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
14246 Use a single scheme for computing field indexes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14247 Remove outdated references to struct based referrer info.
a61af66fc99e Initial load
duke
parents:
diff changeset
14248 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14249 <change date="12 September 2005" version="1.1.75">
a61af66fc99e Initial load
duke
parents:
diff changeset
14250 Don't callback during FollowReferences on frivolous java.lang.Object superclass.
a61af66fc99e Initial load
duke
parents:
diff changeset
14251 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14252 <change date="13 September 2005" version="1.1.76">
a61af66fc99e Initial load
duke
parents:
diff changeset
14253 In string primitive callback, length now Unicode length.
a61af66fc99e Initial load
duke
parents:
diff changeset
14254 In array and string primitive callbacks, value now "const".
a61af66fc99e Initial load
duke
parents:
diff changeset
14255 Note possible compiler impacts on setting JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
14256 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14257 <change date="13 September 2005" version="1.1.77">
a61af66fc99e Initial load
duke
parents:
diff changeset
14258 GetClassVersionNumbers() and GetConstantPool() should return
a61af66fc99e Initial load
duke
parents:
diff changeset
14259 error on array or primitive class.
a61af66fc99e Initial load
duke
parents:
diff changeset
14260 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14261 <change date="14 September 2005" version="1.1.78">
a61af66fc99e Initial load
duke
parents:
diff changeset
14262 Grammar fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14263 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14264 <change date="26 September 2005" version="1.1.79">
a61af66fc99e Initial load
duke
parents:
diff changeset
14265 Add IsModifiableClass query.
a61af66fc99e Initial load
duke
parents:
diff changeset
14266 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14267 <change date="9 February 2006" version="1.1.81">
a61af66fc99e Initial load
duke
parents:
diff changeset
14268 Add referrer_class_tag parameter to jvmtiHeapReferenceCallback.
a61af66fc99e Initial load
duke
parents:
diff changeset
14269 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14270 <change date="13 February 2006" version="1.1.82">
a61af66fc99e Initial load
duke
parents:
diff changeset
14271 Doc fixes: update can_redefine_any_class to include retransform.
a61af66fc99e Initial load
duke
parents:
diff changeset
14272 Clarify that exception events cover all Throwables.
a61af66fc99e Initial load
duke
parents:
diff changeset
14273 In GetStackTrace, no test is done for start_depth too big if start_depth is zero,
a61af66fc99e Initial load
duke
parents:
diff changeset
14274 Clarify fields reported in Primitive Field Callback -- static vs instance.
a61af66fc99e Initial load
duke
parents:
diff changeset
14275 Repair confusing names of heap types, including callback names.
a61af66fc99e Initial load
duke
parents:
diff changeset
14276 Require consistent usage of stack depth in the face of thread launch methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
14277 Note incompatibility of <jvmti/> memory management with other systems.
a61af66fc99e Initial load
duke
parents:
diff changeset
14278 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14279 <change date="14 February 2006" version="1.1.85">
a61af66fc99e Initial load
duke
parents:
diff changeset
14280 Fix typos and missing renames.
a61af66fc99e Initial load
duke
parents:
diff changeset
14281 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14282 <change date="13 March 2006" version="1.1.86">
a61af66fc99e Initial load
duke
parents:
diff changeset
14283 Clarify that jmethodIDs and jfieldIDs can be saved.
a61af66fc99e Initial load
duke
parents:
diff changeset
14284 Clarify that Iterate Over Instances Of Class includes subclasses.
a61af66fc99e Initial load
duke
parents:
diff changeset
14285 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14286 <change date="14 March 2006" version="1.1.87">
a61af66fc99e Initial load
duke
parents:
diff changeset
14287 Better phrasing.
a61af66fc99e Initial load
duke
parents:
diff changeset
14288 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14289 <change date="16 March 2006" version="1.1.88">
a61af66fc99e Initial load
duke
parents:
diff changeset
14290 Match the referrer_index for static fields in Object Reference Callback
a61af66fc99e Initial load
duke
parents:
diff changeset
14291 with the Reference Implementation (and all other known implementations);
a61af66fc99e Initial load
duke
parents:
diff changeset
14292 that is, make it match the definition for instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
14293 In GetThreadListStackTraces, add JVMTI_ERROR_INVALID_THREAD to cover
a61af66fc99e Initial load
duke
parents:
diff changeset
14294 an invalid thread in the list; and specify that not started threads
a61af66fc99e Initial load
duke
parents:
diff changeset
14295 return empty stacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14296 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14297 <change date="17 March 2006" version="1.1.89">
a61af66fc99e Initial load
duke
parents:
diff changeset
14298 Typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
14299 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14300 <change date="25 March 2006" version="1.1.90">
a61af66fc99e Initial load
duke
parents:
diff changeset
14301 Typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
14302 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14303 <change date="6 April 2006" version="1.1.91">
a61af66fc99e Initial load
duke
parents:
diff changeset
14304 Remove restrictions on AddToBootstrapClassLoaderSearch and
a61af66fc99e Initial load
duke
parents:
diff changeset
14305 AddToSystemClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
14306 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14307 <change date="1 May 2006" version="1.1.93">
a61af66fc99e Initial load
duke
parents:
diff changeset
14308 Changed spec to return -1 for monitor stack depth for the
a61af66fc99e Initial load
duke
parents:
diff changeset
14309 implementation which can not determine stack depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
14310 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14311 <change date="3 May 2006" version="1.1.94">
a61af66fc99e Initial load
duke
parents:
diff changeset
14312 Corrections for readability and accuracy courtesy of Alan Pratt of IBM.
a61af66fc99e Initial load
duke
parents:
diff changeset
14313 List the object relationships reported in FollowReferences.
a61af66fc99e Initial load
duke
parents:
diff changeset
14314 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14315 <change date="5 May 2006" version="1.1.95">
a61af66fc99e Initial load
duke
parents:
diff changeset
14316 Clarify the object relationships reported in FollowReferences.
a61af66fc99e Initial load
duke
parents:
diff changeset
14317 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14318 <change date="28 June 2006" version="1.1.98">
a61af66fc99e Initial load
duke
parents:
diff changeset
14319 Clarify DisposeEnvironment; add warning.
a61af66fc99e Initial load
duke
parents:
diff changeset
14320 Fix typos in SetLocalXXX "retrieve" => "set".
a61af66fc99e Initial load
duke
parents:
diff changeset
14321 Clarify that native method prefixes must remain set while used.
a61af66fc99e Initial load
duke
parents:
diff changeset
14322 Clarify that exactly one Agent_OnXXX is called per agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14323 Clarify that library loading is independent from start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
14324 Remove ambiguous reference to Agent_OnLoad in the Agent_OnUnload spec.
a61af66fc99e Initial load
duke
parents:
diff changeset
14325 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14326 <change date="31 July 2006" version="1.1.99">
a61af66fc99e Initial load
duke
parents:
diff changeset
14327 Clarify the interaction between functions and exceptions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14328 Clarify and give examples of field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
14329 Remove confusing "That is" sentence from MonitorWait and MonitorWaited events.
a61af66fc99e Initial load
duke
parents:
diff changeset
14330 Update links to point to Java 6.
a61af66fc99e Initial load
duke
parents:
diff changeset
14331 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14332 <change date="6 August 2006" version="1.1.102">
a61af66fc99e Initial load
duke
parents:
diff changeset
14333 Add ResourceExhaustedEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14334 </change>
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
14335 <change date="11 October 2012" version="1.2.2">
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
14336 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
14337 </change>
12117
f92b82d454fa 8014135: The JVMTI specification does not conform to recent changes in JNI specification
bpittore
parents: 10981
diff changeset
14338 <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
14339 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
14340 </change>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
14341 </changehistory>
a61af66fc99e Initial load
duke
parents:
diff changeset
14342
a61af66fc99e Initial load
duke
parents:
diff changeset
14343 </specification>
a61af66fc99e Initial load
duke
parents:
diff changeset
14344 <!-- Keep this comment at the end of the file
a61af66fc99e Initial load
duke
parents:
diff changeset
14345 Local variables:
a61af66fc99e Initial load
duke
parents:
diff changeset
14346 mode: sgml
a61af66fc99e Initial load
duke
parents:
diff changeset
14347 sgml-omittag:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14348 sgml-shorttag:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14349 sgml-namecase-general:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14350 sgml-general-insert-case:lower
a61af66fc99e Initial load
duke
parents:
diff changeset
14351 sgml-minimize-attributes:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14352 sgml-always-quote-attributes:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14353 sgml-indent-step:2
a61af66fc99e Initial load
duke
parents:
diff changeset
14354 sgml-indent-data:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14355 sgml-parent-document:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14356 sgml-exposed-tags:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14357 sgml-local-catalogs:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14358 sgml-local-ecat-files:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14359 End:
a61af66fc99e Initial load
duke
parents:
diff changeset
14360 -->