annotate src/share/vm/prims/jvmti.xml @ 10981:5c89346f2bdd

6493116: JVMTI Doc: GetOwnedMonitorStackDepthInfo has a typo in monitor_info_ptr parameter description Summary: A typo in the parameter spelling, a bound update missed when the parameter was renamed Reviewed-by: sla, minqi Contributed-by: serguei.spitsyn@oracle.com
author sspitsyn
date Fri, 14 Jun 2013 15:17:10 -0700
parents 73e64867adb7
children f92b82d454fa
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 <!--
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4 Copyright (c) 2002, 2012, 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"
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
361 microversion="2">
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/>
a61af66fc99e Initial load
duke
parents:
diff changeset
434 An agent may be started at VM startup by specifying the agent library
a61af66fc99e Initial load
duke
parents:
diff changeset
435 name using a <internallink id="starting">command line option</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
436 Some implementations may support a mechanism to <internallink id="onattach">
a61af66fc99e Initial load
duke
parents:
diff changeset
437 start agents</internallink> in the live <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
438 The details of how this is initiated are implementation specific.
a61af66fc99e Initial load
duke
parents:
diff changeset
439 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
440
a61af66fc99e Initial load
duke
parents:
diff changeset
441 <intro id="starting" label="Agent Command Line Options">
a61af66fc99e Initial load
duke
parents:
diff changeset
442 The term "command-line option" is used below to
a61af66fc99e Initial load
duke
parents:
diff changeset
443 mean options supplied in the <code>JavaVMInitArgs</code> argument
a61af66fc99e Initial load
duke
parents:
diff changeset
444 to the <code>JNI_CreateJavaVM</code> function of the JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
445 Invocation API.
a61af66fc99e Initial load
duke
parents:
diff changeset
446 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
447 One of the two following
a61af66fc99e Initial load
duke
parents:
diff changeset
448 command-line options is used on VM startup to
a61af66fc99e Initial load
duke
parents:
diff changeset
449 properly load and run agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
450 These arguments identify the library containing
a61af66fc99e Initial load
duke
parents:
diff changeset
451 the agent as well as an options
a61af66fc99e Initial load
duke
parents:
diff changeset
452 string to be passed in at startup.
a61af66fc99e Initial load
duke
parents:
diff changeset
453 <dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
454 <dt><code>-agentlib:</code><i>&lt;agent-lib-name&gt;</i><code>=</code><i>&lt;options&gt;</i></dt>
a61af66fc99e Initial load
duke
parents:
diff changeset
455 <dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
456 The name following <code>-agentlib:</code> is the name of the
a61af66fc99e Initial load
duke
parents:
diff changeset
457 library to load. Lookup of the library, both its full name and location,
a61af66fc99e Initial load
duke
parents:
diff changeset
458 proceeds in a platform-specific manner.
a61af66fc99e Initial load
duke
parents:
diff changeset
459 Typically, the <i>&lt;agent-lib-name&gt;</i> is expanded to an
a61af66fc99e Initial load
duke
parents:
diff changeset
460 operating system specific file name.
a61af66fc99e Initial load
duke
parents:
diff changeset
461 The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
462 For example, if the option
a61af66fc99e Initial load
duke
parents:
diff changeset
463 <code>-agentlib:foo=opt1,opt2</code> is specified, the VM will attempt to
a61af66fc99e Initial load
duke
parents:
diff changeset
464 load the shared library <code>foo.dll</code> from the system <code>PATH</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
465 under <tm>Windows</tm> or <code>libfoo.so</code> from the
a61af66fc99e Initial load
duke
parents:
diff changeset
466 <code>LD_LIBRARY_PATH</code> under the <tm>Solaris</tm> operating environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
467 </dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
468 <dt><code>-agentpath:</code><i>&lt;path-to-agent&gt;</i><code>=</code><i>&lt;options&gt;</i></dt>
a61af66fc99e Initial load
duke
parents:
diff changeset
469 <dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
470 The path following <code>-agentpath:</code> is the absolute path from which
a61af66fc99e Initial load
duke
parents:
diff changeset
471 to load the library.
a61af66fc99e Initial load
duke
parents:
diff changeset
472 No library name expansion will occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
473 The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
474 For example, if the option
a61af66fc99e Initial load
duke
parents:
diff changeset
475 <code>-agentpath:c:\myLibs\foo.dll=opt1,opt2</code> is specified, the VM will attempt to
a61af66fc99e Initial load
duke
parents:
diff changeset
476 load the shared library <code>c:\myLibs\foo.dll</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
477 </dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
478 </dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
479 The start-up routine <internallink id="onload"><code>Agent_OnLoad</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
480 in the library will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
481 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
482 Libraries loaded with <code>-agentlib:</code> or <code>-agentpath:</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
483 will be searched for JNI native method implementations to facilitate the
a61af66fc99e Initial load
duke
parents:
diff changeset
484 use of Java programming language code in tools, as is needed for
a61af66fc99e Initial load
duke
parents:
diff changeset
485 <internallink id="bci">bytecode instrumentation</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
486 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
487 The agent libraries will be searched after all other libraries have been
a61af66fc99e Initial load
duke
parents:
diff changeset
488 searched (agents wishing to override or intercept the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
489 implementations of non-agent methods can use the
a61af66fc99e Initial load
duke
parents:
diff changeset
490 <eventlink id="NativeMethodBind">NativeMethodBind event</eventlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
491 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
492 These switches do the above and nothing more - they do not change the
a61af66fc99e Initial load
duke
parents:
diff changeset
493 state of the VM or <jvmti/>. No command line options are needed
a61af66fc99e Initial load
duke
parents:
diff changeset
494 to enable <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
495 or aspects of <jvmti/>, this is handled programmatically
a61af66fc99e Initial load
duke
parents:
diff changeset
496 by the use of
a61af66fc99e Initial load
duke
parents:
diff changeset
497 <internallink id="capability">capabilities</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
498 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
499
a61af66fc99e Initial load
duke
parents:
diff changeset
500 <intro id="startup" label="Agent Start-Up">
a61af66fc99e Initial load
duke
parents:
diff changeset
501 The VM starts each agent by invoking a start-up function.
a61af66fc99e Initial load
duke
parents:
diff changeset
502 If the agent is started in the <code>OnLoad</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
503 <functionlink id="GetPhase">phase</functionlink> the function
a61af66fc99e Initial load
duke
parents:
diff changeset
504 <internallink id="onload"><code>Agent_OnLoad</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
505 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
506 If the agent is started in the live
a61af66fc99e Initial load
duke
parents:
diff changeset
507 <functionlink id="GetPhase">phase</functionlink> the function
a61af66fc99e Initial load
duke
parents:
diff changeset
508 <internallink id="onattach"><code>Agent_OnAttach</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
509 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
510 Exactly one call to a start-up function is made per agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
511 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
512
a61af66fc99e Initial load
duke
parents:
diff changeset
513 <intro id="onload" label="Agent Start-Up (OnLoad phase)">
a61af66fc99e Initial load
duke
parents:
diff changeset
514 If an agent is started during the <code>OnLoad</code> phase then its
a61af66fc99e Initial load
duke
parents:
diff changeset
515 agent library must export a start-up function with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
516 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
517 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
518 Agent_OnLoad(JavaVM *vm, char *options, void *reserved)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
519 The VM will start the agent by calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
520 It will be called early enough in VM initialization that:
a61af66fc99e Initial load
duke
parents:
diff changeset
521 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
522 <li><functionlink id="SetSystemProperty">system properties</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
523 may be set before they have been used in the start-up of the VM</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
524 <li>the full set of
a61af66fc99e Initial load
duke
parents:
diff changeset
525 <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
526 is still available (note that capabilities that configure the VM
a61af66fc99e Initial load
duke
parents:
diff changeset
527 may only be available at this time--see the
a61af66fc99e Initial load
duke
parents:
diff changeset
528 <internallink id="capability">Capability function section</internallink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
529 <li>no bytecodes have executed</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
530 <li>no classes have been loaded</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
531 <li>no objects have been created</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
532 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
533 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
534 The VM will call the <code>Agent_OnLoad</code> function with
a61af66fc99e Initial load
duke
parents:
diff changeset
535 <i>&lt;options&gt;</i> as the second argument -
a61af66fc99e Initial load
duke
parents:
diff changeset
536 that is, using the command-line option examples,
a61af66fc99e Initial load
duke
parents:
diff changeset
537 <code>"opt1,opt2"</code> will be passed to the <code>char *options</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
538 argument of <code>Agent_OnLoad</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
539 The <code>options</code> argument is encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
540 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
541 If <i>=&lt;options&gt;</i> is not specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
542 a zero length string is passed to <code>options</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
543 The lifespan of the <code>options</code> string is the <code>Agent_OnLoad</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
544 call. If needed beyond this time the string or parts of the string must
a61af66fc99e Initial load
duke
parents:
diff changeset
545 be copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
546 The period between when <code>Agent_OnLoad</code> is called and when it
a61af66fc99e Initial load
duke
parents:
diff changeset
547 returns is called the <i>OnLoad phase</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
548 Since the VM is not initialized during the OnLoad
a61af66fc99e Initial load
duke
parents:
diff changeset
549 <functionlink id="GetPhase">phase</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
550 the set of allowed operations
a61af66fc99e Initial load
duke
parents:
diff changeset
551 inside <code>Agent_OnLoad</code> is restricted (see the function descriptions for the
a61af66fc99e Initial load
duke
parents:
diff changeset
552 functionality available at this time).
a61af66fc99e Initial load
duke
parents:
diff changeset
553 The agent can safely process the options and set
a61af66fc99e Initial load
duke
parents:
diff changeset
554 event callbacks with <functionlink id="SetEventCallbacks"></functionlink>. Once
a61af66fc99e Initial load
duke
parents:
diff changeset
555 the VM initialization event is received
a61af66fc99e Initial load
duke
parents:
diff changeset
556 (that is, the <eventlink id="VMInit">VMInit</eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
557 callback is invoked), the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
558 can complete its initialization.
a61af66fc99e Initial load
duke
parents:
diff changeset
559 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
560 Early startup is required so that agents can set the desired capabilities,
a61af66fc99e Initial load
duke
parents:
diff changeset
561 many of which must be set before the VM is initialized.
a61af66fc99e Initial load
duke
parents:
diff changeset
562 In JVMDI, the -Xdebug command-line option provided
a61af66fc99e Initial load
duke
parents:
diff changeset
563 very coarse-grain control of capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
564 JVMPI implementations use various tricks to provide a single "JVMPI on" switch.
a61af66fc99e Initial load
duke
parents:
diff changeset
565 No reasonable command-line
a61af66fc99e Initial load
duke
parents:
diff changeset
566 option could provide the fine-grain of control required to balance needed capabilities vs
a61af66fc99e Initial load
duke
parents:
diff changeset
567 performance impact.
a61af66fc99e Initial load
duke
parents:
diff changeset
568 Early startup is also needed so that agents can control the execution
a61af66fc99e Initial load
duke
parents:
diff changeset
569 environment - modifying the file system and system properties to install
a61af66fc99e Initial load
duke
parents:
diff changeset
570 their functionality.
a61af66fc99e Initial load
duke
parents:
diff changeset
571 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
572 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
573 The return value from <code>Agent_OnLoad</code> is used to indicate an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
574 Any value other than zero indicates an error and causes termination of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
575 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
576
a61af66fc99e Initial load
duke
parents:
diff changeset
577 <intro id="onattach" label="Agent Start-Up (Live phase)">
a61af66fc99e Initial load
duke
parents:
diff changeset
578 A VM may support a mechanism that allows agents to be started in the VM during the live
a61af66fc99e Initial load
duke
parents:
diff changeset
579 <functionlink id="GetPhase">phase</functionlink>. The details of how this is supported,
a61af66fc99e Initial load
duke
parents:
diff changeset
580 are implementation specific. For example, a tool may use some platform specific mechanism,
a61af66fc99e Initial load
duke
parents:
diff changeset
581 or implementation specific API, to attach to the running VM, and request it start a given
a61af66fc99e Initial load
duke
parents:
diff changeset
582 agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
583 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
584 If an agent is started during the live phase then its agent library
a61af66fc99e Initial load
duke
parents:
diff changeset
585 must export a start-up function
a61af66fc99e Initial load
duke
parents:
diff changeset
586 with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
587 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
588 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
589 Agent_OnAttach(JavaVM* vm, char *options, void *reserved)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
590 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
591 The VM will start the agent by calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
592 It will be called in the context of a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
593 that is attached to the VM. The first argument <i>&lt;vm&gt;</i> is the Java VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
594 The <i>&lt;options&gt;</i> argument is the startup options provided to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
595 <i>&lt;options&gt;</i> is encoded as a <internallink id="mUTF">modified UTF-8
a61af66fc99e Initial load
duke
parents:
diff changeset
596 </internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
597 If startup options were not provided, a zero length string is passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
598 <code>options</code>. The lifespan of the <code>options</code> string is the
a61af66fc99e Initial load
duke
parents:
diff changeset
599 <code>Agent_OnAttach</code> call. If needed beyond this time the string or parts of
a61af66fc99e Initial load
duke
parents:
diff changeset
600 the string must be copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
601 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
602 Note that some <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
603 may not be available in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
604 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
605 The <code>Agent_OnAttach</code> function initializes the agent and returns a value
a61af66fc99e Initial load
duke
parents:
diff changeset
606 to the VM to indicate if an error occurred. Any value other than zero indicates an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
607 An error does not cause the VM to terminate. Instead the VM ignores the error, or takes
a61af66fc99e Initial load
duke
parents:
diff changeset
608 some implementation specific action -- for example it might print an error to standard error,
a61af66fc99e Initial load
duke
parents:
diff changeset
609 or record the error in a system log.
a61af66fc99e Initial load
duke
parents:
diff changeset
610 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
611
a61af66fc99e Initial load
duke
parents:
diff changeset
612 <intro id="onunload" label="Agent Shutdown">
a61af66fc99e Initial load
duke
parents:
diff changeset
613 The library may optionally export a
a61af66fc99e Initial load
duke
parents:
diff changeset
614 shutdown function with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
615 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
616 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
617 Agent_OnUnload(JavaVM *vm)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
618 This function will be called by the VM when the library is about to be unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
619 The library will be unloaded and this function will be called if some platform specific
a61af66fc99e Initial load
duke
parents:
diff changeset
620 mechanism causes the unload (an unload mechanism is not specified in this document)
a61af66fc99e Initial load
duke
parents:
diff changeset
621 or the library is (in effect) unloaded by the termination of the VM whether through
a61af66fc99e Initial load
duke
parents:
diff changeset
622 normal termination or VM failure, including start-up failure.
a61af66fc99e Initial load
duke
parents:
diff changeset
623 Uncontrolled shutdown is, of couse, an exception to this rule.
a61af66fc99e Initial load
duke
parents:
diff changeset
624 Note the distinction between this function and the
a61af66fc99e Initial load
duke
parents:
diff changeset
625 <eventlink id="VMDeath">VM Death event</eventlink>: for the VM Death event
a61af66fc99e Initial load
duke
parents:
diff changeset
626 to be sent, the VM must have run at least to the point of initialization and a valid
a61af66fc99e Initial load
duke
parents:
diff changeset
627 <jvmti/> environment must exist which has set a callback for VMDeath
a61af66fc99e Initial load
duke
parents:
diff changeset
628 and enabled the event
a61af66fc99e Initial load
duke
parents:
diff changeset
629 None of these are required for <code>Agent_OnUnload</code> and this function
a61af66fc99e Initial load
duke
parents:
diff changeset
630 is also called if the library is unloaded for other reasons.
a61af66fc99e Initial load
duke
parents:
diff changeset
631 In the case that a VM Death event is sent, it will be sent before this
a61af66fc99e Initial load
duke
parents:
diff changeset
632 function is called (assuming this function is called due to VM termination).
a61af66fc99e Initial load
duke
parents:
diff changeset
633 This function can be used to clean-up resources allocated by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
634 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
635
a61af66fc99e Initial load
duke
parents:
diff changeset
636 <intro id="tooloptions" label="JAVA_TOOL_OPTIONS">
a61af66fc99e Initial load
duke
parents:
diff changeset
637 Since the command-line cannot always be accessed or modified, for example in embedded VMs
a61af66fc99e Initial load
duke
parents:
diff changeset
638 or simply VMs launched deep within scripts, a <code>JAVA_TOOL_OPTIONS</code> variable is
a61af66fc99e Initial load
duke
parents:
diff changeset
639 provided so that agents may be launched in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
640 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
641 Platforms which support environment variables or other named strings, may support the
a61af66fc99e Initial load
duke
parents:
diff changeset
642 <code>JAVA_TOOL_OPTIONS</code> variable. This variable will be broken into options at white-space
a61af66fc99e Initial load
duke
parents:
diff changeset
643 boundaries. White-space characters include space, tab, carriage-return, new-line,
a61af66fc99e Initial load
duke
parents:
diff changeset
644 vertical-tab, and form-feed. Sequences of white-space characters are considered
a61af66fc99e Initial load
duke
parents:
diff changeset
645 equivalent to a single white-space character. No white-space is included in the options
a61af66fc99e Initial load
duke
parents:
diff changeset
646 unless quoted. Quoting is as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
647 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
648 <li>All characters enclosed between a pair of single quote marks (''), except a single
a61af66fc99e Initial load
duke
parents:
diff changeset
649 quote, are quoted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
650 <li>Double quote characters have no special meaning inside a pair of single quote marks.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
651 <li>All characters enclosed between a pair of double quote marks (""), except a double
a61af66fc99e Initial load
duke
parents:
diff changeset
652 quote, are quoted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
653 <li>Single quote characters have no special meaning inside a pair of double quote marks.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
654 <li>A quoted part can start or end anywhere in the variable.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
655 <li>White-space characters have no special meaning when quoted -- they are included in
a61af66fc99e Initial load
duke
parents:
diff changeset
656 the option like any other character and do not mark white-space boundaries.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
657 <li>The pair of quote marks is not included in the option.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
658 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
659 <code>JNI_CreateJavaVM</code> (in the JNI Invocation API) will prepend these options to the options supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
660 in its <code>JavaVMInitArgs</code> argument. Platforms may disable this feature in cases where security is
a61af66fc99e Initial load
duke
parents:
diff changeset
661 a concern; for example, the Reference Implementation disables this feature on Unix systems when
a61af66fc99e Initial load
duke
parents:
diff changeset
662 the effective user or group ID differs from the real ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
663 This feature is intended to support the initialization of tools -- specifically including the
a61af66fc99e Initial load
duke
parents:
diff changeset
664 launching of native or Java programming language agents. Multiple tools may wish to use this
a61af66fc99e Initial load
duke
parents:
diff changeset
665 feature, so the variable should not be overwritten, instead, options should be appended to
a61af66fc99e Initial load
duke
parents:
diff changeset
666 the variable. Note that since the variable is processed at the time of the JNI Invocation
a61af66fc99e Initial load
duke
parents:
diff changeset
667 API create VM call, options processed by a launcher (e.g., VM selection options) will not be handled.
a61af66fc99e Initial load
duke
parents:
diff changeset
668 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
669
a61af66fc99e Initial load
duke
parents:
diff changeset
670 <intro id="environments" label="Environments">
a61af66fc99e Initial load
duke
parents:
diff changeset
671 The <jvmti/> specification supports the use of multiple simultaneous
a61af66fc99e Initial load
duke
parents:
diff changeset
672 <jvmti/> agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
673 Each agent has its own <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
674 That is, the <jvmti/> state is
a61af66fc99e Initial load
duke
parents:
diff changeset
675 separate for each agent - changes to one environment do not affect the
a61af66fc99e Initial load
duke
parents:
diff changeset
676 others. The state of a <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
677 environment includes:
a61af66fc99e Initial load
duke
parents:
diff changeset
678 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
679 <li><functionlink id="SetEventCallbacks">the event callbacks</functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
680 <li><functionlink id="SetEventNotificationMode">the set of events which are enabled</functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
681 <li><internallink id="capability">the capabilities</internallink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
682 <li><internallink id="memory">the memory allocation/deallocation hooks</internallink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
683 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
684 Although their <jvmti/> state
a61af66fc99e Initial load
duke
parents:
diff changeset
685 is separate, agents inspect and modify the shared state
a61af66fc99e Initial load
duke
parents:
diff changeset
686 of the VM, they also share the native environment in which they execute.
a61af66fc99e Initial load
duke
parents:
diff changeset
687 As such, an agent can perturb the results of other agents or cause them
a61af66fc99e Initial load
duke
parents:
diff changeset
688 to fail. It is the responsibility of the agent writer to specify the level
a61af66fc99e Initial load
duke
parents:
diff changeset
689 of compatibility with other agents. <jvmti/> implementations are not capable
a61af66fc99e Initial load
duke
parents:
diff changeset
690 of preventing destructive interactions between agents. Techniques to reduce
a61af66fc99e Initial load
duke
parents:
diff changeset
691 the likelihood of these occurrences are beyond the scope of this document.
a61af66fc99e Initial load
duke
parents:
diff changeset
692 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
693 An agent creates a <jvmti/> environment
a61af66fc99e Initial load
duke
parents:
diff changeset
694 by passing a <jvmti/> version
a61af66fc99e Initial load
duke
parents:
diff changeset
695 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
696 <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
697 See <internallink id="jvmtiEnvAccess">Accessing <jvmti/> Functions</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
698 for more details on the creation and use of
a61af66fc99e Initial load
duke
parents:
diff changeset
699 <jvmti/> environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
700 Typically, <jvmti/> environments are created by calling <code>GetEnv</code> from
a61af66fc99e Initial load
duke
parents:
diff changeset
701 <internallink id="onload"><code>Agent_OnLoad</code></internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
702 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
703
a61af66fc99e Initial load
duke
parents:
diff changeset
704 <intro id="bci" label="Bytecode Instrumentation">
a61af66fc99e Initial load
duke
parents:
diff changeset
705 This interface does not include some events that one might expect in an interface with
a61af66fc99e Initial load
duke
parents:
diff changeset
706 profiling support. Some examples include object allocation events and full speed
a61af66fc99e Initial load
duke
parents:
diff changeset
707 method enter and exit events. The interface instead provides support for
a61af66fc99e Initial load
duke
parents:
diff changeset
708 <i>bytecode instrumentation</i>, the ability to alter the Java virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
709 bytecode instructions which comprise the target program. Typically, these alterations
a61af66fc99e Initial load
duke
parents:
diff changeset
710 are to add "events" to the code of a method - for example, to add, at the beginning of a method,
a61af66fc99e Initial load
duke
parents:
diff changeset
711 a call to <code>MyProfiler.methodEntered()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
712 Since the changes are purely additive, they do not modify application
a61af66fc99e Initial load
duke
parents:
diff changeset
713 state or behavior.
a61af66fc99e Initial load
duke
parents:
diff changeset
714 Because the inserted agent code is standard bytecodes, the VM can run at full speed,
a61af66fc99e Initial load
duke
parents:
diff changeset
715 optimizing not only the target program but also the instrumentation. If the
a61af66fc99e Initial load
duke
parents:
diff changeset
716 instrumentation does not involve switching from bytecode execution, no expensive
a61af66fc99e Initial load
duke
parents:
diff changeset
717 state transitions are needed. The result is high performance events.
a61af66fc99e Initial load
duke
parents:
diff changeset
718 This approach also provides complete control to the agent: instrumentation can be
a61af66fc99e Initial load
duke
parents:
diff changeset
719 restricted to "interesting" portions of the code (e.g., the end user's code) and
a61af66fc99e Initial load
duke
parents:
diff changeset
720 can be conditional. Instrumentation can run entirely in Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
721 code or can call into the native agent. Instrumentation can simply maintain
a61af66fc99e Initial load
duke
parents:
diff changeset
722 counters or can statistically sample events.
a61af66fc99e Initial load
duke
parents:
diff changeset
723 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
724 Instrumentation can be inserted in one of three ways:
a61af66fc99e Initial load
duke
parents:
diff changeset
725 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
726 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
727 Static Instrumentation: The class file is instrumented before it
a61af66fc99e Initial load
duke
parents:
diff changeset
728 is loaded into the VM - for example, by creating a duplicate directory of
a61af66fc99e Initial load
duke
parents:
diff changeset
729 <code>*.class</code> files which have been modified to add the instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
730 This method is extremely awkward and, in general, an agent cannot know
a61af66fc99e Initial load
duke
parents:
diff changeset
731 the origin of the class files which will be loaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
732 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
733 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
734 Load-Time Instrumentation: When a class file is loaded by the VM, the raw
a61af66fc99e Initial load
duke
parents:
diff changeset
735 bytes of the class file are sent for instrumentation to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
736 The <eventlink id="ClassFileLoadHook"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
737 event, triggered by the class load,
a61af66fc99e Initial load
duke
parents:
diff changeset
738 provides this functionality. This mechanism provides efficient
a61af66fc99e Initial load
duke
parents:
diff changeset
739 and complete access to one-time instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
740 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
741 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
742 Dynamic Instrumentation: A class which is already loaded (and possibly
a61af66fc99e Initial load
duke
parents:
diff changeset
743 even running) is modified. This optional feature is provided by the
a61af66fc99e Initial load
duke
parents:
diff changeset
744 <eventlink id="ClassFileLoadHook"/> event, triggered by calling the
a61af66fc99e Initial load
duke
parents:
diff changeset
745 <functionlink id="RetransformClasses"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
746 Classes can be modified multiple times and can be returned to their
a61af66fc99e Initial load
duke
parents:
diff changeset
747 original state.
a61af66fc99e Initial load
duke
parents:
diff changeset
748 The mechanism allows instrumentation which changes during the
a61af66fc99e Initial load
duke
parents:
diff changeset
749 course of execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
750 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
751 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
752 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
753 The class modification functionality provided in this interface
a61af66fc99e Initial load
duke
parents:
diff changeset
754 is intended to provide a mechanism for instrumentation
a61af66fc99e Initial load
duke
parents:
diff changeset
755 (the <eventlink id="ClassFileLoadHook"/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
756 and the <functionlink id="RetransformClasses"/> function)
a61af66fc99e Initial load
duke
parents:
diff changeset
757 and, during development, for fix-and-continue debugging
a61af66fc99e Initial load
duke
parents:
diff changeset
758 (the <functionlink id="RedefineClasses"/> function).
a61af66fc99e Initial load
duke
parents:
diff changeset
759 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
760 Care must be taken to avoid perturbing dependencies, especially when
a61af66fc99e Initial load
duke
parents:
diff changeset
761 instrumenting core classes. For example, an approach to getting notification
a61af66fc99e Initial load
duke
parents:
diff changeset
762 of every object allocation is to instrument the constructor on
a61af66fc99e Initial load
duke
parents:
diff changeset
763 <code>Object</code>. Assuming that the constructor is initially
a61af66fc99e Initial load
duke
parents:
diff changeset
764 empty, the constructor could be changed to:
a61af66fc99e Initial load
duke
parents:
diff changeset
765 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
766 public Object() {
a61af66fc99e Initial load
duke
parents:
diff changeset
767 MyProfiler.allocationTracker(this);
a61af66fc99e Initial load
duke
parents:
diff changeset
768 }
a61af66fc99e Initial load
duke
parents:
diff changeset
769 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
770 However, if this change was made using the
a61af66fc99e Initial load
duke
parents:
diff changeset
771 <eventlink id="ClassFileLoadHook"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
772 event then this might impact a typical VM as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
773 the first created object will call the constructor causing a class load of
a61af66fc99e Initial load
duke
parents:
diff changeset
774 <code>MyProfiler</code>; which will then cause
a61af66fc99e Initial load
duke
parents:
diff changeset
775 object creation, and since <code>MyProfiler</code> isn't loaded yet,
a61af66fc99e Initial load
duke
parents:
diff changeset
776 infinite recursion; resulting in a stack overflow. A refinement of this
a61af66fc99e Initial load
duke
parents:
diff changeset
777 would be to delay invoking the tracking method until a safe time. For
a61af66fc99e Initial load
duke
parents:
diff changeset
778 example, <code>trackAllocations</code> could be set in the
a61af66fc99e Initial load
duke
parents:
diff changeset
779 handler for the <code>VMInit</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
780 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
781 static boolean trackAllocations = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
782
a61af66fc99e Initial load
duke
parents:
diff changeset
783 public Object() {
a61af66fc99e Initial load
duke
parents:
diff changeset
784 if (trackAllocations) {
a61af66fc99e Initial load
duke
parents:
diff changeset
785 MyProfiler.allocationTracker(this);
a61af66fc99e Initial load
duke
parents:
diff changeset
786 }
a61af66fc99e Initial load
duke
parents:
diff changeset
787 }
a61af66fc99e Initial load
duke
parents:
diff changeset
788 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
789 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
790 The <functionlink id="SetNativeMethodPrefix"/> allows native methods
a61af66fc99e Initial load
duke
parents:
diff changeset
791 to be instrumented by the use of wrapper methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
792 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
793
a61af66fc99e Initial load
duke
parents:
diff changeset
794 <intro id="mUTF" label="Modified UTF-8 String Encoding">
a61af66fc99e Initial load
duke
parents:
diff changeset
795 <jvmti/> uses modified UTF-8 to encode character strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
796 This is the same encoding used by JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
797 Modified UTF-8 differs
a61af66fc99e Initial load
duke
parents:
diff changeset
798 from standard UTF-8 in the representation of supplementary characters
a61af66fc99e Initial load
duke
parents:
diff changeset
799 and of the null character. See the
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
800 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp16542">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
801 Modified UTF-8 Strings</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
802 section of the JNI specification for details.
a61af66fc99e Initial load
duke
parents:
diff changeset
803 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
804
a61af66fc99e Initial load
duke
parents:
diff changeset
805 <intro id="context" label="Specification Context">
a61af66fc99e Initial load
duke
parents:
diff changeset
806 Since this interface provides access to the state of applications running in the
a61af66fc99e Initial load
duke
parents:
diff changeset
807 Java virtual machine;
a61af66fc99e Initial load
duke
parents:
diff changeset
808 terminology refers to the Java platform and not the native
a61af66fc99e Initial load
duke
parents:
diff changeset
809 platform (unless stated otherwise). For example:
a61af66fc99e Initial load
duke
parents:
diff changeset
810 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
811 <li>"thread" means Java programming language thread.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
812 <li>"stack frame" means Java virtual machine stack frame.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
813 <li>"class" means Java programming language class.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
814 <li>"heap" means Java virtual machine heap.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
815 <li>"monitor" means Java programming language object monitor.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
816 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
817 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
818 Sun, Sun Microsystems, the Sun logo, Java, and JVM
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
819 are trademarks or registered trademarks of Oracle
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
820 and/or its affiliates, in the U.S. and other countries.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
821 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
822
a61af66fc99e Initial load
duke
parents:
diff changeset
823
a61af66fc99e Initial load
duke
parents:
diff changeset
824 <functionsection label="Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
825 <intro id="jvmtiEnvAccess" label="Accessing Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
826 Native code accesses <jvmti/> features
a61af66fc99e Initial load
duke
parents:
diff changeset
827 by calling <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
828 Access to <jvmti/> functions is by use of an interface pointer
a61af66fc99e Initial load
duke
parents:
diff changeset
829 in the same manner as
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
830 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html">Java
0
a61af66fc99e Initial load
duke
parents:
diff changeset
831 Native Interface (JNI) functions</externallink> are accessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
832 The <jvmti/> interface pointer is called the
a61af66fc99e Initial load
duke
parents:
diff changeset
833 <i>environment pointer</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
834 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
835 An environment pointer is a pointer to an environment and has
a61af66fc99e Initial load
duke
parents:
diff changeset
836 the type <code>jvmtiEnv*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
837 An environment has information about its <jvmti/> connection.
a61af66fc99e Initial load
duke
parents:
diff changeset
838 The first value in the environment is a pointer to the function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
839 The function table is an array of pointers to <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
840 Every function pointer is at a predefined offset inside the
a61af66fc99e Initial load
duke
parents:
diff changeset
841 array.
a61af66fc99e Initial load
duke
parents:
diff changeset
842 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
843 When used from the C language:
a61af66fc99e Initial load
duke
parents:
diff changeset
844 double indirection is used to access the functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
845 the environment pointer provides context and is the first
a61af66fc99e Initial load
duke
parents:
diff changeset
846 parameter of each function call; for example:
a61af66fc99e Initial load
duke
parents:
diff changeset
847 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
848 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
849 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
850 jvmtiError err = (*jvmti)->GetLoadedClasses(jvmti, &amp;class_count, &amp;classes);
a61af66fc99e Initial load
duke
parents:
diff changeset
851 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
852 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
853 When used from the C++ language:
a61af66fc99e Initial load
duke
parents:
diff changeset
854 functions are accessed as member functions of <code>jvmtiEnv</code>;
a61af66fc99e Initial load
duke
parents:
diff changeset
855 the environment pointer is not passed to the function call; for example:
a61af66fc99e Initial load
duke
parents:
diff changeset
856 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
857 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
858 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
859 jvmtiError err = jvmti->GetLoadedClasses(&amp;class_count, &amp;classes);
a61af66fc99e Initial load
duke
parents:
diff changeset
860 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
861 Unless otherwise stated, all examples and declarations in this
a61af66fc99e Initial load
duke
parents:
diff changeset
862 specification use the C language.
a61af66fc99e Initial load
duke
parents:
diff changeset
863 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
864 A <jvmti/> environment can be obtained through the JNI Invocation API
a61af66fc99e Initial load
duke
parents:
diff changeset
865 <code>GetEnv</code> function:
a61af66fc99e Initial load
duke
parents:
diff changeset
866 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
867 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
868 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
869 (*jvm)->GetEnv(jvm, &amp;jvmti, JVMTI_VERSION_1_0);
a61af66fc99e Initial load
duke
parents:
diff changeset
870 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
871 Each call to <code>GetEnv</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
872 creates a new <jvmti/> connection and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
873 a new <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
874 The <code>version</code> argument of <code>GetEnv</code> must be
a61af66fc99e Initial load
duke
parents:
diff changeset
875 a <jvmti/> version.
a61af66fc99e Initial load
duke
parents:
diff changeset
876 The returned environment may have a different version than the
a61af66fc99e Initial load
duke
parents:
diff changeset
877 requested version but the returned environment must be compatible.
a61af66fc99e Initial load
duke
parents:
diff changeset
878 <code>GetEnv</code> will return <code>JNI_EVERSION</code> if a
a61af66fc99e Initial load
duke
parents:
diff changeset
879 compatible version is not available, if <jvmti/> is not supported or
a61af66fc99e Initial load
duke
parents:
diff changeset
880 <jvmti/> is not supported in the current VM configuration.
a61af66fc99e Initial load
duke
parents:
diff changeset
881 Other interfaces may be added for creating <jvmti/> environments
a61af66fc99e Initial load
duke
parents:
diff changeset
882 in specific contexts.
a61af66fc99e Initial load
duke
parents:
diff changeset
883 Each environment has its own state (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
884 <functionlink id="SetEventNotificationMode">desired events</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
885 <functionlink id="SetEventCallbacks">event handling functions</functionlink>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
886 <functionlink id="AddCapabilities">capabilities</functionlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
887 An environment is released with
a61af66fc99e Initial load
duke
parents:
diff changeset
888 <functionlink id="DisposeEnvironment"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
889 Thus, unlike JNI which has one environment per thread, <jvmti/> environments work
a61af66fc99e Initial load
duke
parents:
diff changeset
890 across threads and are created dynamically.
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 <intro id="functionReturn" label="Function Return Values">
a61af66fc99e Initial load
duke
parents:
diff changeset
894 <jvmti/> functions always return an
a61af66fc99e Initial load
duke
parents:
diff changeset
895 <internallink id="ErrorSection">error code</internallink> via the
a61af66fc99e Initial load
duke
parents:
diff changeset
896 <datalink id="jvmtiError"/> function return value.
a61af66fc99e Initial load
duke
parents:
diff changeset
897 Some functions can return additional
a61af66fc99e Initial load
duke
parents:
diff changeset
898 values through pointers provided by the calling function.
a61af66fc99e Initial load
duke
parents:
diff changeset
899 In some cases, <jvmti/> functions allocate memory that your program must
a61af66fc99e Initial load
duke
parents:
diff changeset
900 explicitly deallocate. This is indicated in the individual <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
901 function descriptions. Empty lists, arrays, sequences, etc are
a61af66fc99e Initial load
duke
parents:
diff changeset
902 returned as <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
903 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
904 In the event that the <jvmti/> function encounters
a61af66fc99e Initial load
duke
parents:
diff changeset
905 an error (any return value other than <code>JVMTI_ERROR_NONE</code>) the values
a61af66fc99e Initial load
duke
parents:
diff changeset
906 of memory referenced by argument pointers is undefined, but no memory
a61af66fc99e Initial load
duke
parents:
diff changeset
907 will have been allocated and no global references will have been allocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
908 If the error occurs because of invalid input, no action will have occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
909 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
910
a61af66fc99e Initial load
duke
parents:
diff changeset
911 <intro id="refs" label="Managing JNI Object References">
a61af66fc99e Initial load
duke
parents:
diff changeset
912 <jvmti/> functions identify objects with JNI references
a61af66fc99e Initial load
duke
parents:
diff changeset
913 (<datalink id="jobject"/> and <datalink id="jclass"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
914 and their derivatives
a61af66fc99e Initial load
duke
parents:
diff changeset
915 (<datalink id="jthread"/> and <datalink id="jthreadGroup"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
916 References passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
917 <jvmti/> functions can be either global or local, but they must be
a61af66fc99e Initial load
duke
parents:
diff changeset
918 strong references. All references returned by <jvmti/> functions are
a61af66fc99e Initial load
duke
parents:
diff changeset
919 local references--these local references are created
a61af66fc99e Initial load
duke
parents:
diff changeset
920 during the <jvmti/> call.
a61af66fc99e Initial load
duke
parents:
diff changeset
921 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
922 <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
923 When threads return from native code all local references
a61af66fc99e Initial load
duke
parents:
diff changeset
924 are freed. Note that some threads, including typical
a61af66fc99e Initial load
duke
parents:
diff changeset
925 agent threads, will never return from native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
926 A thread is ensured the ability to create sixteen local
a61af66fc99e Initial load
duke
parents:
diff changeset
927 references without the need for any explicit management.
a61af66fc99e Initial load
duke
parents:
diff changeset
928 For threads executing a limited number of <jvmti/> calls before
a61af66fc99e Initial load
duke
parents:
diff changeset
929 returning from native code
a61af66fc99e Initial load
duke
parents:
diff changeset
930 (for example, threads processing events),
a61af66fc99e Initial load
duke
parents:
diff changeset
931 it may be determined that no explicit management
a61af66fc99e Initial load
duke
parents:
diff changeset
932 is needed.
a61af66fc99e Initial load
duke
parents:
diff changeset
933 However, long running agent threads will need explicit
a61af66fc99e Initial load
duke
parents:
diff changeset
934 local reference management--usually with the JNI functions
a61af66fc99e Initial load
duke
parents:
diff changeset
935 <code>PushLocalFrame</code> and <code>PopLocalFrame</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
936 Conversely, to preserve references beyond the
a61af66fc99e Initial load
duke
parents:
diff changeset
937 return from native code, they must be converted to global references.
a61af66fc99e Initial load
duke
parents:
diff changeset
938 These rules do not apply to <datalink id="jmethodID"/> and <datalink id="jfieldID"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
939 as they are not <datalink id="jobject"/>s.
a61af66fc99e Initial load
duke
parents:
diff changeset
940 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
941
a61af66fc99e Initial load
duke
parents:
diff changeset
942 <intro id="prereqState" label="Prerequisite State for Calling Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
943 Unless the function explicitly states that the agent must bring
a61af66fc99e Initial load
duke
parents:
diff changeset
944 a thread or the VM to a particular state (for example, suspended),
a61af66fc99e Initial load
duke
parents:
diff changeset
945 the <jvmti/> implementation is responsible for bringing the VM to a
a61af66fc99e Initial load
duke
parents:
diff changeset
946 safe and consistent state for performing the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
947 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
948
a61af66fc99e Initial load
duke
parents:
diff changeset
949 <intro id="functionsExceptions" label="Exceptions and Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
950 <jvmti/> functions never throw exceptions; error conditions are
a61af66fc99e Initial load
duke
parents:
diff changeset
951 communicated via the
a61af66fc99e Initial load
duke
parents:
diff changeset
952 <internallink id="functionReturn">function return value</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
953 Any existing exception state is preserved across a call to a
a61af66fc99e Initial load
duke
parents:
diff changeset
954 <jvmti/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
955 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
956 <externallink
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
957 id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html#wp770"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
958 >Java Exceptions</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
959 section of the JNI specification for information on handling exceptions.
a61af66fc99e Initial load
duke
parents:
diff changeset
960 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
961
a61af66fc99e Initial load
duke
parents:
diff changeset
962 <category id="memory" label="Memory Management">
a61af66fc99e Initial load
duke
parents:
diff changeset
963 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
964 These functions provide for the allocation and deallocation of
a61af66fc99e Initial load
duke
parents:
diff changeset
965 memory used by <jvmti/> functionality and can be used to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
966 working memory for agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
967 Memory managed by <jvmti/> is not compatible with other memory
a61af66fc99e Initial load
duke
parents:
diff changeset
968 allocation libraries and mechanisms.
a61af66fc99e Initial load
duke
parents:
diff changeset
969 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
970
a61af66fc99e Initial load
duke
parents:
diff changeset
971 <function id="Allocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="46">
a61af66fc99e Initial load
duke
parents:
diff changeset
972 <synopsis>Allocate</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
973 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
974 Allocate an area of memory through the <jvmti/> allocator.
a61af66fc99e Initial load
duke
parents:
diff changeset
975 The allocated
a61af66fc99e Initial load
duke
parents:
diff changeset
976 memory should be freed with <functionlink id="Deallocate"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
977 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
978 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
979 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
980 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
981 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
982 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
983 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
984 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
985 The number of bytes to allocate.
a61af66fc99e Initial load
duke
parents:
diff changeset
986 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
987 <code>jlong</code> is used for compatibility with JVMDI.
a61af66fc99e Initial load
duke
parents:
diff changeset
988 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
989 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
990 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
991 <param id="mem_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
992 <allocbuf incount="size"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
993 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
994 On return, a pointer to the beginning of the allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
995 If <code>size</code> is zero, <code>NULL</code> is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
996 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
997 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
998 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
999 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1000 <error id="JVMTI_ERROR_OUT_OF_MEMORY">
a61af66fc99e Initial load
duke
parents:
diff changeset
1001 Memory request cannot be honored.
a61af66fc99e Initial load
duke
parents:
diff changeset
1002 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1003 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
1004 <paramlink id="size"></paramlink> is less than zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1005 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1006 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1007 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1008
a61af66fc99e Initial load
duke
parents:
diff changeset
1009 <function id="Deallocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="47">
a61af66fc99e Initial load
duke
parents:
diff changeset
1010 <synopsis>Deallocate</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1011 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1012 Deallocate <code>mem</code> using the <jvmti/> allocator.
a61af66fc99e Initial load
duke
parents:
diff changeset
1013 This function should
a61af66fc99e Initial load
duke
parents:
diff changeset
1014 be used to deallocate any memory allocated and returned
a61af66fc99e Initial load
duke
parents:
diff changeset
1015 by a <jvmti/> function
a61af66fc99e Initial load
duke
parents:
diff changeset
1016 (including memory allocated with <functionlink id="Allocate"></functionlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1017 All allocated memory must be deallocated
a61af66fc99e Initial load
duke
parents:
diff changeset
1018 or the memory cannot be reclaimed.
a61af66fc99e Initial load
duke
parents:
diff changeset
1019 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1020 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1021 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1022 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1023 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1024 <param id="mem">
a61af66fc99e Initial load
duke
parents:
diff changeset
1025 <outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1026 <uchar/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1027 <nullok>the call is ignored</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
1028 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1029 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1030 A pointer to the beginning of the allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
1031 Please ignore "On return, the elements are set."
a61af66fc99e Initial load
duke
parents:
diff changeset
1032 <todo>keep it from generating "On return, the elements are set"</todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
1033 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1034 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1035 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1036 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1037 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1038 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1039 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
1040
a61af66fc99e Initial load
duke
parents:
diff changeset
1041 <category id="threadCategory" label="Thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1042 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1043 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1044
a61af66fc99e Initial load
duke
parents:
diff changeset
1045 <function id="GetThreadState" num="17">
a61af66fc99e Initial load
duke
parents:
diff changeset
1046 <synopsis>Get Thread State</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1047 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1048 Get the state of a thread. The state of the thread is represented by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1049 answers to the hierarchical set of questions below:
a61af66fc99e Initial load
duke
parents:
diff changeset
1050 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1051 <li><i>Alive?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1052 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1053 <li>Not alive.
a61af66fc99e Initial load
duke
parents:
diff changeset
1054 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1055 <li><i>Why not alive?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1056 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1057 <li>New.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1058 <li>Terminated (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1059 id="JVMTI_THREAD_STATE_TERMINATED"><code>JVMTI_THREAD_STATE_TERMINATED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1060 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1061 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1062 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1063 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1064 <li>Alive (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1065 id="JVMTI_THREAD_STATE_ALIVE"><code>JVMTI_THREAD_STATE_ALIVE</code></datalink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1066 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1067 <li><i>Suspended?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1068 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1069 <li>Suspended (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1070 id="JVMTI_THREAD_STATE_SUSPENDED"><code>JVMTI_THREAD_STATE_SUSPENDED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1071 <li>Not suspended</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1072 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1073 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1074 <li><i>Interrupted?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1075 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1076 <li>Interrupted (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1077 id="JVMTI_THREAD_STATE_INTERRUPTED"><code>JVMTI_THREAD_STATE_INTERRUPTED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1078 <li>Not interrupted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1079 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1080 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1081 <li><i>In native?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1082 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1083 <li>In native code (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1084 id="JVMTI_THREAD_STATE_IN_NATIVE"><code>JVMTI_THREAD_STATE_IN_NATIVE</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1085 <li>In Java programming language code</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1086 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1087 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1088 <li><i>What alive state?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1089 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1090 <li>Runnable (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1091 id="JVMTI_THREAD_STATE_RUNNABLE"><code>JVMTI_THREAD_STATE_RUNNABLE</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1092 <li>Blocked (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1093 id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER"><code>JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1094 <li>Waiting (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1095 id="JVMTI_THREAD_STATE_WAITING"><code>JVMTI_THREAD_STATE_WAITING</code></datalink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1096 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1097 <li><i>Timed wait?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1098 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1099 <li>Indefinite (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1100 id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY"><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></datalink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1101 <li>Timed (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1102 id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT"><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1103 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1104 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1105 <li><i>Why waiting?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1106 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1107 <li>Object.wait (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1108 id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT"><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1109 <li>LockSupport.park (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1110 id="JVMTI_THREAD_STATE_PARKED"><code>JVMTI_THREAD_STATE_PARKED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1111 <li>Sleeping (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1112 id="JVMTI_THREAD_STATE_SLEEPING"><code>JVMTI_THREAD_STATE_SLEEPING</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1113 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1114 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1115 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1116 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1117 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1118 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1119 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1120 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1121 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1122 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1123 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1124 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1125 The answers are represented by the following bit vector.
a61af66fc99e Initial load
duke
parents:
diff changeset
1126 <constants id="jvmtiThreadState" label="Thread State Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
1127 <constant id="JVMTI_THREAD_STATE_ALIVE" num="0x0001">
a61af66fc99e Initial load
duke
parents:
diff changeset
1128 Thread is alive. Zero if thread is new (not started) or terminated.
a61af66fc99e Initial load
duke
parents:
diff changeset
1129 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1130 <constant id="JVMTI_THREAD_STATE_TERMINATED" num="0x0002">
a61af66fc99e Initial load
duke
parents:
diff changeset
1131 Thread has completed execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
1132 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1133 <constant id="JVMTI_THREAD_STATE_RUNNABLE" num="0x0004">
a61af66fc99e Initial load
duke
parents:
diff changeset
1134 Thread is runnable.
a61af66fc99e Initial load
duke
parents:
diff changeset
1135 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1136 <constant id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER" num="0x0400">
a61af66fc99e Initial load
duke
parents:
diff changeset
1137 Thread is waiting to enter a synchronization block/method or,
a61af66fc99e Initial load
duke
parents:
diff changeset
1138 after an <code>Object.wait()</code>, waiting to re-enter a
a61af66fc99e Initial load
duke
parents:
diff changeset
1139 synchronization block/method.
a61af66fc99e Initial load
duke
parents:
diff changeset
1140 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1141 <constant id="JVMTI_THREAD_STATE_WAITING" num="0x0080">
a61af66fc99e Initial load
duke
parents:
diff changeset
1142 Thread is waiting.
a61af66fc99e Initial load
duke
parents:
diff changeset
1143 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1144 <constant id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY" num="0x0010">
a61af66fc99e Initial load
duke
parents:
diff changeset
1145 Thread is waiting without a timeout.
a61af66fc99e Initial load
duke
parents:
diff changeset
1146 For example, <code>Object.wait()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1147 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1148 <constant id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT" num="0x0020">
a61af66fc99e Initial load
duke
parents:
diff changeset
1149 Thread is waiting with a maximum time to wait specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
1150 For example, <code>Object.wait(long)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1151 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1152 <constant id="JVMTI_THREAD_STATE_SLEEPING" num="0x0040">
a61af66fc99e Initial load
duke
parents:
diff changeset
1153 Thread is sleeping -- <code>Thread.sleep(long)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1154 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1155 <constant id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT" num="0x0100">
a61af66fc99e Initial load
duke
parents:
diff changeset
1156 Thread is waiting on an object monitor -- <code>Object.wait</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1157 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1158 <constant id="JVMTI_THREAD_STATE_PARKED" num="0x0200">
a61af66fc99e Initial load
duke
parents:
diff changeset
1159 Thread is parked, for example: <code>LockSupport.park</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
1160 <code>LockSupport.parkUtil</code> and <code>LockSupport.parkNanos</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1161 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1162 <constant id="JVMTI_THREAD_STATE_SUSPENDED" num="0x100000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1163 Thread suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1164 <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1165 or a <jvmti/> suspend function
a61af66fc99e Initial load
duke
parents:
diff changeset
1166 (such as <functionlink id="SuspendThread"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1167 has been called on the thread. If this bit
a61af66fc99e Initial load
duke
parents:
diff changeset
1168 is set, the other bits refer to the thread state before suspension.
a61af66fc99e Initial load
duke
parents:
diff changeset
1169 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1170 <constant id="JVMTI_THREAD_STATE_INTERRUPTED" num="0x200000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1171 Thread has been interrupted.
a61af66fc99e Initial load
duke
parents:
diff changeset
1172 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1173 <constant id="JVMTI_THREAD_STATE_IN_NATIVE" num="0x400000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1174 Thread is in native code--that is, a native method is running
a61af66fc99e Initial load
duke
parents:
diff changeset
1175 which has not called back into the VM or Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
1176 language code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1177 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1178 This flag is not set when running VM compiled Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
1179 language code nor is it set when running VM code or
a61af66fc99e Initial load
duke
parents:
diff changeset
1180 VM support code. Native VM interface functions, such as JNI and
a61af66fc99e Initial load
duke
parents:
diff changeset
1181 <jvmti/> functions, may be implemented as VM code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1182 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1183 <constant id="JVMTI_THREAD_STATE_VENDOR_1" num="0x10000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1184 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1185 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1186 <constant id="JVMTI_THREAD_STATE_VENDOR_2" num="0x20000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1187 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1188 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1189 <constant id="JVMTI_THREAD_STATE_VENDOR_3" num="0x40000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1190 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1191 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1192 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
1193 The following definitions are used to convert <jvmti/> thread state
a61af66fc99e Initial load
duke
parents:
diff changeset
1194 to <code>java.lang.Thread.State</code> style states.
a61af66fc99e Initial load
duke
parents:
diff changeset
1195 <constants id="jvmtiJavaLangThreadState" label="java.lang.Thread.State Conversion Masks" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
1196 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_MASK"
a61af66fc99e Initial load
duke
parents:
diff changeset
1197 num="JVMTI_THREAD_STATE_TERMINATED | JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT">
a61af66fc99e Initial load
duke
parents:
diff changeset
1198 Mask the state with this before comparison
a61af66fc99e Initial load
duke
parents:
diff changeset
1199 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1200 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_NEW"
a61af66fc99e Initial load
duke
parents:
diff changeset
1201 num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
1202 <code>java.lang.Thread.State.NEW</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1203 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1204 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED"
a61af66fc99e Initial load
duke
parents:
diff changeset
1205 num="JVMTI_THREAD_STATE_TERMINATED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1206 <code>java.lang.Thread.State.TERMINATED</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1207 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1208 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE"
a61af66fc99e Initial load
duke
parents:
diff changeset
1209 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
1210 <code>java.lang.Thread.State.RUNNABLE</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1211 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1212 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED"
a61af66fc99e Initial load
duke
parents:
diff changeset
1213 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
1214 <code>java.lang.Thread.State.BLOCKED</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1215 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1216 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_WAITING"
a61af66fc99e Initial load
duke
parents:
diff changeset
1217 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY">
a61af66fc99e Initial load
duke
parents:
diff changeset
1218 <code>java.lang.Thread.State.WAITING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1219 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1220 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING"
a61af66fc99e Initial load
duke
parents:
diff changeset
1221 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT">
a61af66fc99e Initial load
duke
parents:
diff changeset
1222 <code>java.lang.Thread.State.TIMED_WAITING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1223 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1224 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
1225 <b>Rules</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1226 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1227 There can be no more than one answer to a question, although there can be no
a61af66fc99e Initial load
duke
parents:
diff changeset
1228 answer (because the answer is unknown, does not apply, or none of the answers is
a61af66fc99e Initial load
duke
parents:
diff changeset
1229 correct). An answer is set only when the enclosing answers match.
a61af66fc99e Initial load
duke
parents:
diff changeset
1230 That is, no more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1231 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1232 <li><code>JVMTI_THREAD_STATE_RUNNABLE</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1233 <li><code>JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1234 <li><code>JVMTI_THREAD_STATE_WAITING</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1235 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1236 can be set (a <tm>J2SE</tm> compliant implementation will always set
a61af66fc99e Initial load
duke
parents:
diff changeset
1237 one of these if <code>JVMTI_THREAD_STATE_ALIVE</code> is set).
a61af66fc99e Initial load
duke
parents:
diff changeset
1238 And if any of these are set, the enclosing answer
a61af66fc99e Initial load
duke
parents:
diff changeset
1239 <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1240 No more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1241 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1242 <li><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1243 <li><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1244 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1245 can be set (a <tm>J2SE</tm> compliant implementation will always set
a61af66fc99e Initial load
duke
parents:
diff changeset
1246 one of these if <code>JVMTI_THREAD_STATE_WAITING</code> is set).
a61af66fc99e Initial load
duke
parents:
diff changeset
1247 And if either is set, the enclosing answers
a61af66fc99e Initial load
duke
parents:
diff changeset
1248 <code>JVMTI_THREAD_STATE_ALIVE</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
1249 <code>JVMTI_THREAD_STATE_WAITING</code> are set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1250 No more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1251 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1252 <li><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1253 <li><code>JVMTI_THREAD_STATE_PARKED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1254 <li><code>JVMTI_THREAD_STATE_SLEEPING</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1255 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1256 can be set. And if any of these is set, the enclosing answers
a61af66fc99e Initial load
duke
parents:
diff changeset
1257 <code>JVMTI_THREAD_STATE_ALIVE</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
1258 <code>JVMTI_THREAD_STATE_WAITING</code> are set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1259 Also, if <code>JVMTI_THREAD_STATE_SLEEPING</code> is set,
a61af66fc99e Initial load
duke
parents:
diff changeset
1260 then <code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1261 If a state <i>A</i> is implemented using the mechanism of
a61af66fc99e Initial load
duke
parents:
diff changeset
1262 state <i>B</i> then it is state <i>A</i> which
a61af66fc99e Initial load
duke
parents:
diff changeset
1263 is returned by this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1264 For example, if <code>Thread.sleep(long)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1265 is implemented using <code>Object.wait(long)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1266 then it is still <code>JVMTI_THREAD_STATE_SLEEPING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1267 which is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1268 More than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1269 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1270 <li><code>JVMTI_THREAD_STATE_SUSPENDED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1271 <li><code>JVMTI_THREAD_STATE_INTERRUPTED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1272 <li><code>JVMTI_THREAD_STATE_IN_NATIVE</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1273 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1274 can be set, but if any is set,
a61af66fc99e Initial load
duke
parents:
diff changeset
1275 <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1276 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1277 And finally,
a61af66fc99e Initial load
duke
parents:
diff changeset
1278 <code>JVMTI_THREAD_STATE_TERMINATED</code> cannot be set unless
a61af66fc99e Initial load
duke
parents:
diff changeset
1279 <code>JVMTI_THREAD_STATE_ALIVE</code> is not set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1280 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1281 The thread state representation is designed for extension in future versions
a61af66fc99e Initial load
duke
parents:
diff changeset
1282 of the specification; thread state values should be used accordingly, that is
a61af66fc99e Initial load
duke
parents:
diff changeset
1283 they should not be used as ordinals.
a61af66fc99e Initial load
duke
parents:
diff changeset
1284 Most queries can be made by testing a single bit, if use in a switch statement is desired,
a61af66fc99e Initial load
duke
parents:
diff changeset
1285 the state bits should be masked with the interesting bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
1286 All bits not defined above are reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
1287 A VM, compliant to the current specification, must set reserved bits to zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1288 An agent should ignore reserved bits --
a61af66fc99e Initial load
duke
parents:
diff changeset
1289 they should not be assumed to be zero and thus should not be included in comparisons.
a61af66fc99e Initial load
duke
parents:
diff changeset
1290 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1291 <b>Examples</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1292 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1293 Note that the values below exclude reserved and vendor bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
1294 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1295 The state of a thread blocked at a <code>synchronized</code>-statement would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1296 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1297 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER
a61af66fc99e Initial load
duke
parents:
diff changeset
1298 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1299 The state of a thread which hasn't started yet would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1300 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1301 0
a61af66fc99e Initial load
duke
parents:
diff changeset
1302 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1303 The state of a thread at a <code>Object.wait(3000)</code> would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1304 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1305 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_WAITING +
a61af66fc99e Initial load
duke
parents:
diff changeset
1306 JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT +
a61af66fc99e Initial load
duke
parents:
diff changeset
1307 JVMTI_THREAD_STATE_MONITOR_WAITING
a61af66fc99e Initial load
duke
parents:
diff changeset
1308 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1309 The state of a thread suspended while runnable would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1310 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1311 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_RUNNABLE + JVMTI_THREAD_STATE_SUSPENDED
a61af66fc99e Initial load
duke
parents:
diff changeset
1312 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1313 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1314 <b>Testing the State</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1315 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1316 In most cases, the thread state can be determined by testing the one bit corresponding
a61af66fc99e Initial load
duke
parents:
diff changeset
1317 to that question. For example, the code to test if a thread is sleeping:
a61af66fc99e Initial load
duke
parents:
diff changeset
1318 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1319 jint state;
a61af66fc99e Initial load
duke
parents:
diff changeset
1320 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
1321
a61af66fc99e Initial load
duke
parents:
diff changeset
1322 err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
a61af66fc99e Initial load
duke
parents:
diff changeset
1323 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1324 if (state &amp; JVMTI_THREAD_STATE_SLEEPING) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1325 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1326 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1327 For waiting (that is, in <code>Object.wait</code>, parked, or sleeping) it would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1328 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1329 if (state &amp; JVMTI_THREAD_STATE_WAITING) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1330 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1331 For some states, more than one bit will need to be tested as is the case
a61af66fc99e Initial load
duke
parents:
diff changeset
1332 when testing if a thread has not yet been started:
a61af66fc99e Initial load
duke
parents:
diff changeset
1333 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1334 if ((state &amp; (JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_TERMINATED)) == 0) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1335 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1336 To distinguish timed from untimed <code>Object.wait</code>:
a61af66fc99e Initial load
duke
parents:
diff changeset
1337 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1338 if (state &amp; JVMTI_THREAD_STATE_IN_OBJECT_WAIT) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1339 if (state &amp; JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1340 printf("in Object.wait(long timeout)\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
1341 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
1342 printf("in Object.wait()\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
1343 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1344 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1345 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1346 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1347 <b>Relationship to <code>java.lang.Thread.State</code></b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1348 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1349 The thread state represented by <code>java.lang.Thread.State</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1350 returned from <code>java.lang.Thread.getState()</code> is a subset of the
a61af66fc99e Initial load
duke
parents:
diff changeset
1351 information returned from this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1352 The corresponding <code>java.lang.Thread.State</code> can be determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1353 by using the provided conversion masks.
a61af66fc99e Initial load
duke
parents:
diff changeset
1354 For example, this returns the name of the <code>java.lang.Thread.State</code> thread state:
a61af66fc99e Initial load
duke
parents:
diff changeset
1355 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1356 err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
a61af66fc99e Initial load
duke
parents:
diff changeset
1357 abortOnError(err);
a61af66fc99e Initial load
duke
parents:
diff changeset
1358 switch (state &amp; JVMTI_JAVA_LANG_THREAD_STATE_MASK) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1359 case JVMTI_JAVA_LANG_THREAD_STATE_NEW:
a61af66fc99e Initial load
duke
parents:
diff changeset
1360 return "NEW";
a61af66fc99e Initial load
duke
parents:
diff changeset
1361 case JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED:
a61af66fc99e Initial load
duke
parents:
diff changeset
1362 return "TERMINATED";
a61af66fc99e Initial load
duke
parents:
diff changeset
1363 case JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE:
a61af66fc99e Initial load
duke
parents:
diff changeset
1364 return "RUNNABLE";
a61af66fc99e Initial load
duke
parents:
diff changeset
1365 case JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED:
a61af66fc99e Initial load
duke
parents:
diff changeset
1366 return "BLOCKED";
a61af66fc99e Initial load
duke
parents:
diff changeset
1367 case JVMTI_JAVA_LANG_THREAD_STATE_WAITING:
a61af66fc99e Initial load
duke
parents:
diff changeset
1368 return "WAITING";
a61af66fc99e Initial load
duke
parents:
diff changeset
1369 case JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING:
a61af66fc99e Initial load
duke
parents:
diff changeset
1370 return "TIMED_WAITING";
a61af66fc99e Initial load
duke
parents:
diff changeset
1371 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1372 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1373 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1374 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1375 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1376 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1377 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1378 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1379 <jthread null="current" started="maybe" impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1380 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1381 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1382 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1383 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1384 <param id="thread_state_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1385 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1386 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1387 On return, points to state flags,
a61af66fc99e Initial load
duke
parents:
diff changeset
1388 as defined by the <internallink id="jvmtiThreadState">Thread State Flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1389 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1390 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1391 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1392 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1393 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1394 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1395
a61af66fc99e Initial load
duke
parents:
diff changeset
1396 <function id="GetCurrentThread" phase="start" num="18" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
1397 <synopsis>Get Current Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1398 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1399 Get the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1400 The current thread is the Java programming language thread which has called the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1401 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1402 Note that most <jvmti/> functions that take a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1403 as an argument will accept <code>NULL</code> to mean
a61af66fc99e Initial load
duke
parents:
diff changeset
1404 the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1405 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1406 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1407 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1408 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1409 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1410 <param id="thread_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1411 <outptr><jthread/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1412 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1413 On return, points to the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1414 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1415 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1416 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1417 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1418 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1419 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1420
a61af66fc99e Initial load
duke
parents:
diff changeset
1421 <function id="GetAllThreads" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
1422 <synopsis>Get All Threads</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1423 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1424 Get all live threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1425 The threads are Java programming language threads;
a61af66fc99e Initial load
duke
parents:
diff changeset
1426 that is, threads that are attached to the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1427 A thread is live if <code>java.lang.Thread.isAlive()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1428 would return <code>true</code>, that is, the thread has
a61af66fc99e Initial load
duke
parents:
diff changeset
1429 been started and has not yet died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1430 The universe of threads is determined by the context of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1431 environment, which typically is all threads attached to the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1432 Note that this includes <jvmti/> agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1433 (see <functionlink id="RunAgentThread"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1434 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1435 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1436 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1437 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1438 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1439 <param id="threads_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1440 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1441 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1442 On return, points to the number of running threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1443 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1444 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1445 <param id="threads_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1446 <allocbuf outcount="threads_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1447 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1448 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
1449 for each running thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1450 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1451 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1452 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1453 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1454 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1455 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1456
a61af66fc99e Initial load
duke
parents:
diff changeset
1457 <function id="SuspendThread" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
1458 <synopsis>Suspend Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1459 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1460 Suspend the specified thread. If the calling thread is specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
1461 this function will not return until some other thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
1462 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1463 If the thread is currently suspended, this function
a61af66fc99e Initial load
duke
parents:
diff changeset
1464 does nothing and returns an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
1465 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1466 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1467 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1468 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1469 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1470 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1471 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1472 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1473 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1474 The thread to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1475 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1476 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1477 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1478 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1479 <error id="JVMTI_ERROR_THREAD_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1480 Thread already suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1481 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1482 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1483 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1484
a61af66fc99e Initial load
duke
parents:
diff changeset
1485 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
1486 <function id="SuspendAllThreads" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
1487 <synopsis>Suspend All Threads</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1488 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1489 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
1490 There has been no explicit call for this function, and it will
a61af66fc99e Initial load
duke
parents:
diff changeset
1491 thus be removed if there is no interest.
a61af66fc99e Initial load
duke
parents:
diff changeset
1492 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
1493 Suspend all live threads except:
a61af66fc99e Initial load
duke
parents:
diff changeset
1494 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1495 <li>already suspended threads</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1496 <li>those listed in <paramlink id="except_list"></paramlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1497 <li>certain system (non application) threads, as determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1498 by the VM implementation</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1499 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1500 The threads are Java programming language threads;
a61af66fc99e Initial load
duke
parents:
diff changeset
1501 native threads which are not attached to the VM are not
a61af66fc99e Initial load
duke
parents:
diff changeset
1502 Java programming language threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1503 A thread is live if <code>java.lang.Thread.isAlive()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1504 would return <code>true</code>, that is, the thread has
a61af66fc99e Initial load
duke
parents:
diff changeset
1505 been started and has not yet died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1506 The universe of threads is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1507 by the context of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1508 environment, which, typically, is all threads attached to the VM,
a61af66fc99e Initial load
duke
parents:
diff changeset
1509 except critical VM internal threads and <jvmti/> agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1510 (see <functionlink id="RunAgentThread"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1511 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1512 If the calling thread is specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
1513 all other threads are suspended first then the caller thread is suspended -
a61af66fc99e Initial load
duke
parents:
diff changeset
1514 this function will not return until some other thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
1515 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1516 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1517 The list of actually
a61af66fc99e Initial load
duke
parents:
diff changeset
1518 suspended threads is returned in
a61af66fc99e Initial load
duke
parents:
diff changeset
1519 <paramlink id="suspended_list_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1520 Suspension is as defined in <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1521 <functionlink id="ResumeThreadList"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1522 can be used to resume the suspended threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1523 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1524 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1525 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1526 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1527 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1528 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1529 <param id="except_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1530 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1531 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1532 The number of threads in the list of threads not to be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1533 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1534 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1535 <param id="except_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1536 <inbuf incount="except_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1537 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1538 <nullok>not an error if <code>except_count == 0</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
1539 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1540 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1541 The list of threads not to be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1542 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1543 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1544 <param id="suspended_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1545 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1546 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1547 On return, points to the number of threads suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1548 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1549 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1550 <param id="suspended_list_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1551 <allocbuf outcount="suspended_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1552 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1553 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
1554 for each thread suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1555 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1556 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1557 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1558 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1559 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
1560 A thread in <paramlink id="except_list"></paramlink> was invalid.
a61af66fc99e Initial load
duke
parents:
diff changeset
1561 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1562 <error id="JVMTI_ERROR_NULL_POINTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
1563 Both <paramlink id="except_list"></paramlink> was <code>NULL</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1564 and <paramlink id="except_count"></paramlink> was non-zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1565 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1566 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1567 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1568 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
1569
a61af66fc99e Initial load
duke
parents:
diff changeset
1570 <function id="SuspendThreadList" num="92">
a61af66fc99e Initial load
duke
parents:
diff changeset
1571 <synopsis>Suspend Thread List</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1572 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1573 Suspend the <paramlink id="request_count"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1574 threads specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1575 <paramlink id="request_list"></paramlink> array.
a61af66fc99e Initial load
duke
parents:
diff changeset
1576 Threads may be resumed with
a61af66fc99e Initial load
duke
parents:
diff changeset
1577 <functionlink id="ResumeThreadList"></functionlink> or
a61af66fc99e Initial load
duke
parents:
diff changeset
1578 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1579 If the calling thread is specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1580 <paramlink id="request_list"></paramlink> array, this function will
a61af66fc99e Initial load
duke
parents:
diff changeset
1581 not return until some other thread resumes it.
a61af66fc99e Initial load
duke
parents:
diff changeset
1582 Errors encountered in the suspension of a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1583 are returned in the <paramlink id="results"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1584 array, <b>not</b> in the return value of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1585 Threads that are currently suspended do not change state.
a61af66fc99e Initial load
duke
parents:
diff changeset
1586 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1587 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1588 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1589 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1590 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1591 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1592 <param id="request_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1593 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1594 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1595 The number of threads to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1596 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1597 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1598 <param id="request_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1599 <inbuf incount="request_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1600 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1601 The list of threads to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1602 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1603 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1604 <param id="results">
a61af66fc99e Initial load
duke
parents:
diff changeset
1605 <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1606 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1607 An agent supplied array of
a61af66fc99e Initial load
duke
parents:
diff changeset
1608 <paramlink id="request_count"></paramlink> elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
1609 On return, filled with the error code for
a61af66fc99e Initial load
duke
parents:
diff changeset
1610 the suspend of the corresponding thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1611 The error code will be
a61af66fc99e Initial load
duke
parents:
diff changeset
1612 <errorlink id="JVMTI_ERROR_NONE"></errorlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1613 if the thread was suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1614 Possible error codes are those specified
a61af66fc99e Initial load
duke
parents:
diff changeset
1615 for <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1616 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1617 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1618 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1619 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1620 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1621 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1622
a61af66fc99e Initial load
duke
parents:
diff changeset
1623 <function id="ResumeThread" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
1624 <synopsis>Resume Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1625 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1626 Resume a suspended thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1627 Any threads currently suspended through
a61af66fc99e Initial load
duke
parents:
diff changeset
1628 a <jvmti/> suspend function (eg.
a61af66fc99e Initial load
duke
parents:
diff changeset
1629 <functionlink id="SuspendThread"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1630 or <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1631 will resume execution;
a61af66fc99e Initial load
duke
parents:
diff changeset
1632 all other threads are unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
1633 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1634 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1635 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1636 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1637 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1638 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1639 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1640 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1641 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1642 The thread to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1644 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1645 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1646 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1647 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1648 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1649 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1650 <error id="JVMTI_ERROR_INVALID_TYPESTATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
1651 The state of the thread has been modified, and is now inconsistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
1652 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1653 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1654 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1655
a61af66fc99e Initial load
duke
parents:
diff changeset
1656 <function id="ResumeThreadList" num="93">
a61af66fc99e Initial load
duke
parents:
diff changeset
1657 <synopsis>Resume Thread List</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1658 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1659 Resume the <paramlink id="request_count"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1660 threads specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1661 <paramlink id="request_list"></paramlink> array.
a61af66fc99e Initial load
duke
parents:
diff changeset
1662 Any thread suspended through
a61af66fc99e Initial load
duke
parents:
diff changeset
1663 a <jvmti/> suspend function (eg.
a61af66fc99e Initial load
duke
parents:
diff changeset
1664 <functionlink id="SuspendThreadList"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1665 or <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1666 will resume execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
1667 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1668 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1669 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1670 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1671 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1672 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1673 <param id="request_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1674 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1675 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1676 The number of threads to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1677 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1678 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1679 <param id="request_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1680 <inbuf incount="request_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1681 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1682 The threads to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1683 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1684 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1685 <param id="results">
a61af66fc99e Initial load
duke
parents:
diff changeset
1686 <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1687 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1688 An agent supplied array of
a61af66fc99e Initial load
duke
parents:
diff changeset
1689 <paramlink id="request_count"></paramlink> elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
1690 On return, filled with the error code for
a61af66fc99e Initial load
duke
parents:
diff changeset
1691 the resume of the corresponding thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1692 The error code will be
a61af66fc99e Initial load
duke
parents:
diff changeset
1693 <errorlink id="JVMTI_ERROR_NONE"></errorlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1694 if the thread was suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1695 Possible error codes are those specified
a61af66fc99e Initial load
duke
parents:
diff changeset
1696 for <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1697 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1698 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1699 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1700 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1701 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1702 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1703
a61af66fc99e Initial load
duke
parents:
diff changeset
1704 <function id="StopThread" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
1705 <synopsis>Stop Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1706 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1707 Send the specified asynchronous exception to the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1708 (similar to <code>java.lang.Thread.stop</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1709 Normally, this function is used to kill the specified thread with an
a61af66fc99e Initial load
duke
parents:
diff changeset
1710 instance of the exception <code>ThreadDeath</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1711 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1712 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1713 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1714 <required id="can_signal_thread"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1715 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1716 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1717 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1718 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1719 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1720 The thread to stop.
a61af66fc99e Initial load
duke
parents:
diff changeset
1721 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1722 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1723 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
1724 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1725 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1726 The asynchronous exception object.
a61af66fc99e Initial load
duke
parents:
diff changeset
1727 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1728 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1729 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1730 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1731 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1732 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1733
a61af66fc99e Initial load
duke
parents:
diff changeset
1734 <function id="InterruptThread" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
1735 <synopsis>Interrupt Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1736 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1737 Interrupt the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1738 (similar to <code>java.lang.Thread.interrupt</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1739 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1740 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1741 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1742 <required id="can_signal_thread"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1743 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1744 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1745 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1746 <jthread impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1747 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1748 The thread to interrupt.
a61af66fc99e Initial load
duke
parents:
diff changeset
1749 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1750 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1751 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1752 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1753 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1754 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1755
a61af66fc99e Initial load
duke
parents:
diff changeset
1756 <function id="GetThreadInfo" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
1757 <synopsis>Get Thread Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1758 <typedef id="jvmtiThreadInfo" label="Thread information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
1759 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
1760 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1761 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1762 The thread name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
1763 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
1764 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1765 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1766 <field id="priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
1767 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1768 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1769 The thread priority. See the thread priority constants:
a61af66fc99e Initial load
duke
parents:
diff changeset
1770 <datalink id="jvmtiThreadPriority"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1771 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1772 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1773 <field id="is_daemon">
a61af66fc99e Initial load
duke
parents:
diff changeset
1774 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1775 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1776 Is this a daemon thread?
a61af66fc99e Initial load
duke
parents:
diff changeset
1777 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1778 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1779 <field id="thread_group">
a61af66fc99e Initial load
duke
parents:
diff changeset
1780 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1781 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1782 The thread group to which this thread belongs.
a61af66fc99e Initial load
duke
parents:
diff changeset
1783 <code>NULL</code> if the thread has died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1784 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1785 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1786 <field id="context_class_loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
1787 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1788 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1789 The context class loader associated with this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1790 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1791 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1792 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
1793 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1794 Get thread information. The fields of the <datalink id="jvmtiThreadInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
1795 are filled in with details of the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1796 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1797 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1798 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1799 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1800 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1801 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1802 <jthread null="current" impl="noconvert" started="maybe"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1803 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1804 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1805 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1806 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1807 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1808 <outptr><struct>jvmtiThreadInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1809 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1810 On return, filled with information describing the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1811 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1812 For JDK 1.1 implementations that don't
a61af66fc99e Initial load
duke
parents:
diff changeset
1813 recognize context class loaders,
a61af66fc99e Initial load
duke
parents:
diff changeset
1814 the <code>context_class_loader</code> field will be NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
1815 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1816 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1817 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1818 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1819 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1820 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1821
a61af66fc99e Initial load
duke
parents:
diff changeset
1822 <function id="GetOwnedMonitorInfo" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
1823 <synopsis>Get Owned Monitor Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1824 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1825 Get information about the monitors owned by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1826 specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1827 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1828 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1829 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1830 <required id="can_get_owned_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1831 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1832 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1833 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1834 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1835 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1836 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1837 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1838 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1839 <param id="owned_monitor_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1840 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1841 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1842 The number of monitors returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1843 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1844 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1845 <param id="owned_monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1846 <allocbuf outcount="owned_monitor_count_ptr"><jobject/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1847 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1848 The array of owned monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
1849 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1850 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1851 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1852 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1853 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1854 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1855
a61af66fc99e Initial load
duke
parents:
diff changeset
1856 <function id="GetOwnedMonitorStackDepthInfo" num="153" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
1857 <synopsis>Get Owned Monitor Stack Depth Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1858 <typedef id="jvmtiMonitorStackDepthInfo"
a61af66fc99e Initial load
duke
parents:
diff changeset
1859 label="Monitor stack depth information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
1860 <field id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
1861 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1862 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1863 The owned monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1864 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1865 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1866 <field id="stack_depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
1867 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1868 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1869 The stack depth. Corresponds to the stack depth used in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1870 <internallink id="stack">Stack Frame functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1871 That is, zero is the current frame, one is the frame which
a61af66fc99e Initial load
duke
parents:
diff changeset
1872 called the current frame. And it is negative one if the
a61af66fc99e Initial load
duke
parents:
diff changeset
1873 implementation cannot determine the stack depth (e.g., for
a61af66fc99e Initial load
duke
parents:
diff changeset
1874 monitors acquired by JNI <code>MonitorEnter</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1875 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1876 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1877 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
1878 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1879 Get information about the monitors owned by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1880 specified thread and the depth of the stack frame which locked them.
a61af66fc99e Initial load
duke
parents:
diff changeset
1881 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1882 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1883 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1884 <required id="can_get_owned_monitor_stack_depth_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1885 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1886 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1887 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1888 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1889 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1890 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1891 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1892 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1893 <param id="monitor_info_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1894 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1895 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1896 The number of monitors returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1897 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1898 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1899 <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
1900 <allocbuf outcount="monitor_info_count_ptr">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1901 <struct>jvmtiMonitorStackDepthInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
1902 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1903 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1904 The array of owned monitor depth information.
a61af66fc99e Initial load
duke
parents:
diff changeset
1905 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1906 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1907 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1908 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1909 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1910 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1911
a61af66fc99e Initial load
duke
parents:
diff changeset
1912 <function id="GetCurrentContendedMonitor" num="11">
a61af66fc99e Initial load
duke
parents:
diff changeset
1913 <synopsis>Get Current Contended Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1914 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1915 Get the object, if any, whose monitor the specified thread is waiting to
a61af66fc99e Initial load
duke
parents:
diff changeset
1916 enter or waiting to regain through <code>java.lang.Object.wait</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1917 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1918 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1919 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1920 <required id="can_get_current_contended_monitor"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1921 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1922 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1923 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1924 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1925 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1926 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1927 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1928 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1929 <param id="monitor_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1930 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1931 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1932 On return, filled with the current contended monitor, or
a61af66fc99e Initial load
duke
parents:
diff changeset
1933 NULL if there is none.
a61af66fc99e Initial load
duke
parents:
diff changeset
1934 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1935 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1936 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1937 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1938 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1939 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1940
a61af66fc99e Initial load
duke
parents:
diff changeset
1941 <callback id="jvmtiStartFunction">
a61af66fc99e Initial load
duke
parents:
diff changeset
1942 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1943 <synopsis>Agent Start Function</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1944 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1945 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1946 This function is the entry point for an agent thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1947 started with
a61af66fc99e Initial load
duke
parents:
diff changeset
1948 <functionlink id="RunAgentThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1949 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1950 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1951 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
1952 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1953 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
1954 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1955 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1956 The <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
1957 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1958 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1959 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
1960 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1961 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
1962 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1963 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1964 The JNI environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
1965 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1966 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1967 <param id="arg">
a61af66fc99e Initial load
duke
parents:
diff changeset
1968 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1969 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1970 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1971 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1972 The <code>arg</code> parameter passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
1973 <functionlink id="RunAgentThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1974 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1975 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1976 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1977 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
1978
a61af66fc99e Initial load
duke
parents:
diff changeset
1979 <function id="RunAgentThread" num="12">
a61af66fc99e Initial load
duke
parents:
diff changeset
1980 <synopsis>Run Agent Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1981 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1982 Starts the execution of an agent thread. with the specified native function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1983 The parameter <paramlink id="arg"></paramlink> is forwarded on to the
a61af66fc99e Initial load
duke
parents:
diff changeset
1984 <functionlink id="jvmtiStartFunction">start function</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1985 (specified with <paramlink id="proc"></paramlink>) as its single argument.
a61af66fc99e Initial load
duke
parents:
diff changeset
1986 This function allows the creation of agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1987 for handling communication with another process or for handling events
a61af66fc99e Initial load
duke
parents:
diff changeset
1988 without the need to load a special subclass of <code>java.lang.Thread</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
1989 implementer of <code>java.lang.Runnable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1990 Instead, the created thread can run entirely in native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1991 However, the created thread does require a newly created instance
a61af66fc99e Initial load
duke
parents:
diff changeset
1992 of <code>java.lang.Thread</code> (referenced by the argument <code>thread</code>) to
a61af66fc99e Initial load
duke
parents:
diff changeset
1993 which it will be associated.
a61af66fc99e Initial load
duke
parents:
diff changeset
1994 The thread object can be created with JNI calls.
a61af66fc99e Initial load
duke
parents:
diff changeset
1995 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1996 The following common thread priorities are provided for your convenience:
a61af66fc99e Initial load
duke
parents:
diff changeset
1997 <constants id="jvmtiThreadPriority" label="Thread Priority Constants" kind="const">
a61af66fc99e Initial load
duke
parents:
diff changeset
1998 <constant id="JVMTI_THREAD_MIN_PRIORITY" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
1999 Minimum possible thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2000 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2001 <constant id="JVMTI_THREAD_NORM_PRIORITY" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
2002 Normal thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2003 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2004 <constant id="JVMTI_THREAD_MAX_PRIORITY" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
2005 Maximum possible thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2006 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2007 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
2008 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2009 The new thread is started as a daemon thread with the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
2010 <paramlink id="priority"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2011 If enabled, a <eventlink id="ThreadStart"/> event will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
2012 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2013 Since the thread has been started, the thread will be live when this function
a61af66fc99e Initial load
duke
parents:
diff changeset
2014 returns, unless the thread has died immediately.
a61af66fc99e Initial load
duke
parents:
diff changeset
2015 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2016 The thread group of the thread is ignored -- specifically, the thread is not
a61af66fc99e Initial load
duke
parents:
diff changeset
2017 added to the thread group and the thread is not seen on queries of the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2018 group at either the Java programming language or <jvmti/> levels.
a61af66fc99e Initial load
duke
parents:
diff changeset
2019 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2020 The thread is not visible to Java programming language queries but is
a61af66fc99e Initial load
duke
parents:
diff changeset
2021 included in <jvmti/> queries (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
2022 <functionlink id="GetAllThreads"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
2023 <functionlink id="GetAllStackTraces"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2024 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2025 Upon execution of <code>proc</code>, the new thread will be attached to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2026 VM--see the JNI documentation on
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
2027 <externallink id="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#wp1060"
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2028 >Attaching to the VM</externallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2029 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2030 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2031 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2032 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2033 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2034 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2035 <jthread impl="noconvert" started="no"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2036 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2037 The thread to run.
a61af66fc99e Initial load
duke
parents:
diff changeset
2038 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2039 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2040 <param id="proc">
a61af66fc99e Initial load
duke
parents:
diff changeset
2041 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
2042 <struct>jvmtiStartFunction</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2043 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
2044 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2045 The start function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2046 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2047 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2048 <param id="arg">
a61af66fc99e Initial load
duke
parents:
diff changeset
2049 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2050 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2051 <nullok><code>NULL</code> is passed to the start function</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2052 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2053 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2054 The argument to the start function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2055 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2056 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2057 <param id="priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
2058 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2059 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2060 The priority of the started thread. Any thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2061 priority allowed by <code>java.lang.Thread.setPriority</code> can be used including
a61af66fc99e Initial load
duke
parents:
diff changeset
2062 those in <datalink id="jvmtiThreadPriority"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2063 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2064 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2065 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2066 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2067 <error id="JVMTI_ERROR_INVALID_PRIORITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
2068 <paramlink id="priority"/> is less than
a61af66fc99e Initial load
duke
parents:
diff changeset
2069 <datalink id="JVMTI_THREAD_MIN_PRIORITY"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2070 or greater than
a61af66fc99e Initial load
duke
parents:
diff changeset
2071 <datalink id="JVMTI_THREAD_MAX_PRIORITY"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2072 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2073 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2074 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2075
a61af66fc99e Initial load
duke
parents:
diff changeset
2076 <function id="SetThreadLocalStorage" jkernel="yes" impl="notrace" phase="start" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
2077 <synopsis>Set Thread Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2078 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2079 The VM stores a pointer value associated with each environment-thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2080 pair. This pointer value is called <i>thread-local storage</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2081 This value is <code>NULL</code> unless set with this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2082 Agents can allocate memory in which they store thread specific
a61af66fc99e Initial load
duke
parents:
diff changeset
2083 information. By setting thread-local storage it can then be
a61af66fc99e Initial load
duke
parents:
diff changeset
2084 accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
2085 <functionlink id="GetThreadLocalStorage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2086 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2087 This function is called by the agent to set the value of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2088 thread-local storage. <jvmti/> supplies to the agent a pointer-size
a61af66fc99e Initial load
duke
parents:
diff changeset
2089 thread-local storage that can be used to record per-thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2090 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2091 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2092 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2093 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2094 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2095 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2096 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2097 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2098 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2099 Store to this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2100 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2101 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2102 <param id="data">
a61af66fc99e Initial load
duke
parents:
diff changeset
2103 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2104 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2105 <nullok>value is set to <code>NULL</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2106 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2107 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2108 The value to be entered into the thread-local storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
2109 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2110 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2111 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2112 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2113 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2114 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2115
a61af66fc99e Initial load
duke
parents:
diff changeset
2116 <function id="GetThreadLocalStorage" jkernel="yes" impl="innative notrace" phase="start" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
2117 <synopsis>Get Thread Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2118 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2119 Called by the agent to get the value of the <jvmti/> thread-local
a61af66fc99e Initial load
duke
parents:
diff changeset
2120 storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
2121 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2122 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2123 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2124 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2125 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2126 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2127 <jthread null="current" impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2128 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2129 Retrieve from this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2130 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2131 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2132 <param id="data_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2133 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2134 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2135 Pointer through which the value of the thread local
a61af66fc99e Initial load
duke
parents:
diff changeset
2136 storage is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2137 If thread-local storage has not been set with
a61af66fc99e Initial load
duke
parents:
diff changeset
2138 <functionlink id="SetThreadLocalStorage"></functionlink> the returned
a61af66fc99e Initial load
duke
parents:
diff changeset
2139 pointer is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2140 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2141 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2142 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2143 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2144 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2145 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2146
a61af66fc99e Initial load
duke
parents:
diff changeset
2147 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2148
a61af66fc99e Initial load
duke
parents:
diff changeset
2149 <category id="thread_groups" label="Thread Group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2150 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2151 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2152
a61af66fc99e Initial load
duke
parents:
diff changeset
2153 <function id="GetTopThreadGroups" num="13">
a61af66fc99e Initial load
duke
parents:
diff changeset
2154 <synopsis>Get Top Thread Groups</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2155 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2156 Return all top-level (parentless) thread groups in the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
2157 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2158 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2159 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2160 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2161 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2162 <param id="group_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2163 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2164 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2165 On return, points to the number of top-level thread groups.
a61af66fc99e Initial load
duke
parents:
diff changeset
2166 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2167 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2168 <param id="groups_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2169 <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2170 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2171 On return, refers to a pointer to the top-level thread group array.
a61af66fc99e Initial load
duke
parents:
diff changeset
2172 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2173 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2174 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2175 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2176 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2177 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2178
a61af66fc99e Initial load
duke
parents:
diff changeset
2179 <function id="GetThreadGroupInfo" num="14">
a61af66fc99e Initial load
duke
parents:
diff changeset
2180 <synopsis>Get Thread Group Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2181 <typedef id="jvmtiThreadGroupInfo" label="Thread group information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2182 <field id="parent">
a61af66fc99e Initial load
duke
parents:
diff changeset
2183 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2184 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2185 The parent thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2186 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2187 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2188 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
2189 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2190 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2191 The thread group's name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
2192 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
2193 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2194 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2195 <field id="max_priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
2196 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2197 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2198 The maximum priority for this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2199 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2200 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2201 <field id="is_daemon">
a61af66fc99e Initial load
duke
parents:
diff changeset
2202 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2203 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2204 Is this a daemon thread group?
a61af66fc99e Initial load
duke
parents:
diff changeset
2205 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2206 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2207 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2208 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2209 Get information about the thread group. The fields of the
a61af66fc99e Initial load
duke
parents:
diff changeset
2210 <functionlink id="jvmtiThreadGroupInfo"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
2211 are filled in with details of the specified thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2212 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2213 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2214 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2215 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2216 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2217 <param id="group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2218 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2219 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2220 The thread group to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2221 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2222 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2223 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2224 <outptr><struct>jvmtiThreadGroupInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2225 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2226 On return, filled with information describing the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
2227 thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2228 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2229 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2230 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2231 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2232 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2233 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2234
a61af66fc99e Initial load
duke
parents:
diff changeset
2235 <function id="GetThreadGroupChildren" num="15">
a61af66fc99e Initial load
duke
parents:
diff changeset
2236 <synopsis>Get Thread Group Children</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2237 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2238 Get the live threads and active subgroups in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2239 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2240 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2241 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2242 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2243 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2244 <param id="group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2245 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2246 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2247 The group to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2248 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2249 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2250 <param id="thread_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2251 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2252 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2253 On return, points to the number of live threads in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2254 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2255 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2256 <param id="threads_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2257 <allocbuf outcount="thread_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2258 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2259 On return, points to an array of the live threads in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2260 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2261 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2262 <param id="group_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2263 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2264 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2265 On return, points to the number of active child thread groups
a61af66fc99e Initial load
duke
parents:
diff changeset
2266 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2267 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2268 <param id="groups_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2269 <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2270 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2271 On return, points to an array of the active child thread groups.
a61af66fc99e Initial load
duke
parents:
diff changeset
2272 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2273 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2274 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2275 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2276 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2277 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2278 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2279
a61af66fc99e Initial load
duke
parents:
diff changeset
2280 <category id="stack" label="Stack Frame">
a61af66fc99e Initial load
duke
parents:
diff changeset
2281 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2282 These functions provide information about the stack of a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2283 Stack frames are referenced by depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2284 The frame at depth zero is the current frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2285 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2286 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
2287 <vmspec chapter="3.6"/>,
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2288 That is, they correspond to method
a61af66fc99e Initial load
duke
parents:
diff changeset
2289 invocations (including native methods) but do not correspond to platform native or
a61af66fc99e Initial load
duke
parents:
diff changeset
2290 VM internal frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
2291 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2292 A <jvmti/> implementation may use method invocations to launch a thread and
a61af66fc99e Initial load
duke
parents:
diff changeset
2293 the corresponding frames may be included in the stack as presented by these functions --
a61af66fc99e Initial load
duke
parents:
diff changeset
2294 that is, there may be frames shown
a61af66fc99e Initial load
duke
parents:
diff changeset
2295 deeper than <code>main()</code> and <code>run()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2296 However this presentation must be consistent across all <jvmti/> functionality which
a61af66fc99e Initial load
duke
parents:
diff changeset
2297 uses stack frames or stack depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2298 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2299
a61af66fc99e Initial load
duke
parents:
diff changeset
2300 <typedef id="jvmtiFrameInfo" label="Stack frame information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2301 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2302 Information about a stack frame is returned in this structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
2303 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2304 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
2305 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2306 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2307 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2308 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2309 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2310 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
2311 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2312 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2313 The index of the instruction executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2314 <code>-1</code> if the frame is executing a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2315 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2316 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2317 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2318
a61af66fc99e Initial load
duke
parents:
diff changeset
2319 <typedef id="jvmtiStackInfo" label="Stack information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2320 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2321 Information about a set of stack frames is returned in this structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
2322 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2323 <field id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2324 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2325 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2326 On return, the thread traced.
a61af66fc99e Initial load
duke
parents:
diff changeset
2327 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2328 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2329 <field id="state">
a61af66fc99e Initial load
duke
parents:
diff changeset
2330 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2331 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2332 On return, the thread state. See <functionlink id="GetThreadState"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2333 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2334 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2335 <field id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2336 <outbuf incount="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2337 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2338 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2339 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2340 On return, this agent allocated buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2341 with stack frame information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2342 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2343 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2344 <field id="frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2345 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2346 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2347 On return, the number of records filled into
a61af66fc99e Initial load
duke
parents:
diff changeset
2348 <code>frame_buffer</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2349 This will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2350 min(<code>max_frame_count</code>, <i>stackDepth</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2351 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2352 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2353 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2354
a61af66fc99e Initial load
duke
parents:
diff changeset
2355 <function id="GetStackTrace" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
2356 <synopsis>Get Stack Trace</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2357 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2358 Get information about the stack of a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2359 If <paramlink id="max_frame_count"></paramlink> is less than the depth of the stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2360 the <paramlink id="max_frame_count"></paramlink> topmost frames are returned,
a61af66fc99e Initial load
duke
parents:
diff changeset
2361 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2362 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2363 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2364 The following example causes up to five of the topmost frames
a61af66fc99e Initial load
duke
parents:
diff changeset
2365 to be returned and (if there are any frames) the currently
a61af66fc99e Initial load
duke
parents:
diff changeset
2366 executing method name to be printed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2367 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2368 jvmtiFrameInfo frames[5];
a61af66fc99e Initial load
duke
parents:
diff changeset
2369 jint count;
a61af66fc99e Initial load
duke
parents:
diff changeset
2370 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
2371
a61af66fc99e Initial load
duke
parents:
diff changeset
2372 err = (*jvmti)-&gt;GetStackTrace(jvmti, aThread, 0, 5,
7168
73e64867adb7 8003690: Example code in JVMTI GetStackTrace documentation is broken
mikael
parents: 6919
diff changeset
2373 frames, &amp;count);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2374 if (err == JVMTI_ERROR_NONE &amp;&amp; count &gt;= 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2375 char *methodName;
a61af66fc99e Initial load
duke
parents:
diff changeset
2376 err = (*jvmti)-&gt;GetMethodName(jvmti, frames[0].method,
7168
73e64867adb7 8003690: Example code in JVMTI GetStackTrace documentation is broken
mikael
parents: 6919
diff changeset
2377 &amp;methodName, NULL, NULL);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2378 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2379 printf("Executing method: %s", methodName);
a61af66fc99e Initial load
duke
parents:
diff changeset
2380 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2381 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2382 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2383 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2384 check example code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2385 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2386 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2387 The <paramlink id="thread"></paramlink> need not be suspended
a61af66fc99e Initial load
duke
parents:
diff changeset
2388 to call this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2389 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2390 The <functionlink id="GetLineNumberTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2391 function can be used to map locations to line numbers. Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
2392 this mapping can be done lazily.
a61af66fc99e Initial load
duke
parents:
diff changeset
2393 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2394 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2395 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2396 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2397 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2398 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2399 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2400 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2401 Fetch the stack trace of this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2402 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2403 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2404 <param id="start_depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2405 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2406 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2407 Begin retrieving frames at this depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2408 If non-negative, count from the current frame,
a61af66fc99e Initial load
duke
parents:
diff changeset
2409 the first frame retrieved is at depth <code>start_depth</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2410 For example, if zero, start from the current frame; if one, start from the
a61af66fc99e Initial load
duke
parents:
diff changeset
2411 caller of the current frame; if two, start from the caller of the
a61af66fc99e Initial load
duke
parents:
diff changeset
2412 caller of the current frame; and so on.
a61af66fc99e Initial load
duke
parents:
diff changeset
2413 If negative, count from below the oldest frame,
a61af66fc99e Initial load
duke
parents:
diff changeset
2414 the first frame retrieved is at depth <i>stackDepth</i><code> + start_depth</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2415 where <i>stackDepth</i> is the count of frames on the stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2416 For example, if negative one, only the oldest frame is retrieved;
a61af66fc99e Initial load
duke
parents:
diff changeset
2417 if negative two, start from the frame called by the oldest frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2418 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2419 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2420 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2421 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2422 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2423 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
a61af66fc99e Initial load
duke
parents:
diff changeset
2424 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2425 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2426 <param id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2427 <outbuf incount="max_frame_count" outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2428 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2429 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2430 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2431 On return, this agent allocated buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2432 with stack frame information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2433 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2434 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2435 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2436 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2437 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2438 On return, points to the number of records filled in.
a61af66fc99e Initial load
duke
parents:
diff changeset
2439 For non-negative <code>start_depth</code>, this will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2440 min(<code>max_frame_count</code>, <i>stackDepth</i><code> - start_depth</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2441 For negative <code>start_depth</code>, this will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2442 min(<code>max_frame_count</code>, <code>-start_depth</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2443 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2444 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2445 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2446 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2447 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
2448 <paramlink id="start_depth"/> is positive and greater than or equal to <i>stackDepth</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2449 Or <paramlink id="start_depth"/> is negative and less than <i>-stackDepth</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2450 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2451 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2452 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2453
a61af66fc99e Initial load
duke
parents:
diff changeset
2454
a61af66fc99e Initial load
duke
parents:
diff changeset
2455 <function id="GetAllStackTraces" num="100">
a61af66fc99e Initial load
duke
parents:
diff changeset
2456 <synopsis>Get All Stack Traces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2457 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2458 Get information about the stacks of all live threads
a61af66fc99e Initial load
duke
parents:
diff changeset
2459 (including <internallink id="RunAgentThread">agent threads</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2460 If <paramlink id="max_frame_count"/> is less than the depth of a stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2461 the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
2462 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2463 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2464 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2465 All stacks are collected simultaneously, that is, no changes will occur to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2466 thread state or stacks between the sampling of one thread and the next.
a61af66fc99e Initial load
duke
parents:
diff changeset
2467 The threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2468
a61af66fc99e Initial load
duke
parents:
diff changeset
2469 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2470 jvmtiStackInfo *stack_info;
a61af66fc99e Initial load
duke
parents:
diff changeset
2471 jint thread_count;
a61af66fc99e Initial load
duke
parents:
diff changeset
2472 int ti;
a61af66fc99e Initial load
duke
parents:
diff changeset
2473 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
2474
a61af66fc99e Initial load
duke
parents:
diff changeset
2475 err = (*jvmti)-&gt;GetAllStackTraces(jvmti, MAX_FRAMES, &amp;stack_info, &amp;thread_count);
a61af66fc99e Initial load
duke
parents:
diff changeset
2476 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2477 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
2478 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2479 for (ti = 0; ti &lt; thread_count; ++ti) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2480 jvmtiStackInfo *infop = &amp;stack_info[ti];
a61af66fc99e Initial load
duke
parents:
diff changeset
2481 jthread thread = infop-&gt;thread;
a61af66fc99e Initial load
duke
parents:
diff changeset
2482 jint state = infop-&gt;state;
a61af66fc99e Initial load
duke
parents:
diff changeset
2483 jvmtiFrameInfo *frames = infop-&gt;frame_buffer;
a61af66fc99e Initial load
duke
parents:
diff changeset
2484 int fi;
a61af66fc99e Initial load
duke
parents:
diff changeset
2485
a61af66fc99e Initial load
duke
parents:
diff changeset
2486 myThreadAndStatePrinter(thread, state);
a61af66fc99e Initial load
duke
parents:
diff changeset
2487 for (fi = 0; fi &lt; infop-&gt;frame_count; fi++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2488 myFramePrinter(frames[fi].method, frames[fi].location);
a61af66fc99e Initial load
duke
parents:
diff changeset
2489 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2490 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2491 /* this one Deallocate call frees all data allocated by GetAllStackTraces */
a61af66fc99e Initial load
duke
parents:
diff changeset
2492 err = (*jvmti)-&gt;Deallocate(jvmti, stack_info);
a61af66fc99e Initial load
duke
parents:
diff changeset
2493 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2494 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2495 check example code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2496 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2497
a61af66fc99e Initial load
duke
parents:
diff changeset
2498 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2499 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2500 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2501 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2502 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2503 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2504 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2505 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2506 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2507 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2508 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2509 <param id="stack_info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2510 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2511 <struct>jvmtiStackInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2512 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2513 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2514 On return, this buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2515 with stack information for each thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2516 The number of <datalink id="jvmtiStackInfo"/> records is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
2517 by <paramlink id="thread_count_ptr"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2518 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2519 Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2520 buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2521 These buffers must not be separately deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2522 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2523 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2524 <param id="thread_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2525 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2526 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2527 The number of threads traced.
a61af66fc99e Initial load
duke
parents:
diff changeset
2528 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2529 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2530 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2531 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2532 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2533 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2534
a61af66fc99e Initial load
duke
parents:
diff changeset
2535 <function id="GetThreadListStackTraces" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
2536 <synopsis>Get Thread List Stack Traces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2537 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2538 Get information about the stacks of the supplied threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
2539 If <paramlink id="max_frame_count"/> is less than the depth of a stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2540 the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
2541 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2542 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2543 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2544 All stacks are collected simultaneously, that is, no changes will occur to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2545 thread state or stacks between the sampling one thread and the next.
a61af66fc99e Initial load
duke
parents:
diff changeset
2546 The threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2547 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2548 If a thread has not yet started or terminates before the stack information is collected,
a61af66fc99e Initial load
duke
parents:
diff changeset
2549 a zero length stack (<datalink id="jvmtiStackInfo.frame_count"/> will be zero)
a61af66fc99e Initial load
duke
parents:
diff changeset
2550 will be returned and the thread <datalink id="jvmtiStackInfo.state"/> can be checked.
a61af66fc99e Initial load
duke
parents:
diff changeset
2551 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2552 See the example for the similar function
a61af66fc99e Initial load
duke
parents:
diff changeset
2553 <functionlink id="GetAllStackTraces"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2554 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2555 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2556 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2557 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2558 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2559 <param id="thread_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2560 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2561 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2562 The number of threads to trace.
a61af66fc99e Initial load
duke
parents:
diff changeset
2563 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2564 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2565 <param id="thread_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
2566 <inbuf incount="thread_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2567 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2568 The list of threads to trace.
a61af66fc99e Initial load
duke
parents:
diff changeset
2569 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2570 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2571 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2572 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2573 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2574 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2575 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2576 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2577 <param id="stack_info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2578 <allocbuf outcount="thread_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2579 <struct>jvmtiStackInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2580 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2581 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2582 On return, this buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2583 with stack information for each thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2584 The number of <datalink id="jvmtiStackInfo"/> records is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
2585 by <paramlink id="thread_count"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2586 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2587 Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2588 buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2589 These buffers must not be separately deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2590 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2591 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2592 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2593 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2594 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
2595 An element in <paramlink id="thread_list"/> is not a thread object.
a61af66fc99e Initial load
duke
parents:
diff changeset
2596 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2597 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2598 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2599
a61af66fc99e Initial load
duke
parents:
diff changeset
2600 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
2601 <function id="AsyncGetStackTrace" num="1000">
a61af66fc99e Initial load
duke
parents:
diff changeset
2602 <synopsis>Get Stack Trace--Asynchronous</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2603 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2604 Get information about the entire stack of a thread (or a sub-section of it).
a61af66fc99e Initial load
duke
parents:
diff changeset
2605 This is the asynchronous version of <functionlink id="GetStackTrace"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2606 and is reentrant and safe to call
a61af66fc99e Initial load
duke
parents:
diff changeset
2607 from asynchronous signal handlers.
a61af66fc99e Initial load
duke
parents:
diff changeset
2608 The stack trace is returned only for the calling thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2609 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2610 The <functionlink id="GetLineNumberTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2611 function can be used to map locations to line numbers. Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
2612 this mapping can be done lazily.
a61af66fc99e Initial load
duke
parents:
diff changeset
2613 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2614 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2615 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2616 <required id="can_get_async_stack_trace"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2617 <capability id="can_show_JVM_spec_async_frames">
a61af66fc99e Initial load
duke
parents:
diff changeset
2618 If <code>false</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2619 <paramlink id="use_java_stack"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2620 must be <code>false</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2621 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
2622 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2623 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2624 <param id="use_java_stack">
a61af66fc99e Initial load
duke
parents:
diff changeset
2625 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2626 <description>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
2627 Return the stack showing <vmspec/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2628 model of the stack;
a61af66fc99e Initial load
duke
parents:
diff changeset
2629 otherwise, show the internal representation of the stack with
a61af66fc99e Initial load
duke
parents:
diff changeset
2630 inlined and optimized methods missing. If the virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
2631 is using the <i>Java Virtual Machine Specification</i> stack model
a61af66fc99e Initial load
duke
parents:
diff changeset
2632 internally, this flag is ignored.
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="max_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2636 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2637 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2638 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
a61af66fc99e Initial load
duke
parents:
diff changeset
2639 Retrieve this many unless the stack depth is less than <code>max_count</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2640 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2641 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2642 <param id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2643 <outbuf incount="max_count" outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2644 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2645 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2646 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2647 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2648 The agent passes in a buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
2649 large enough to hold <code>max_count</code> records of
a61af66fc99e Initial load
duke
parents:
diff changeset
2650 <datalink id="jvmtiFrameInfo"></datalink>. This buffer must be
a61af66fc99e Initial load
duke
parents:
diff changeset
2651 pre-allocated by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
2652 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2653 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2654 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2655 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2656 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2657 On return, points to the number of records filled in..
a61af66fc99e Initial load
duke
parents:
diff changeset
2658 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2659 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2660 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2661 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2662 <error id="JVMTI_ERROR_UNATTACHED_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
2663 The thread being used to call this function is not attached
a61af66fc99e Initial load
duke
parents:
diff changeset
2664 to the virtual machine. Calls must be made from attached threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
2665 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2666 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2667 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2668 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
2669
a61af66fc99e Initial load
duke
parents:
diff changeset
2670 <function id="GetFrameCount" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
2671 <synopsis>Get Frame Count</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2672 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2673 Get the number of frames currently in the specified thread's call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2674 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2675 If this function is called for a thread actively executing bytecodes (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
2676 not the current thread and not suspended), the information returned is transient.
a61af66fc99e Initial load
duke
parents:
diff changeset
2677 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2678 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2679 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2680 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2681 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2682 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2683 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2684 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2685 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2686 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2687 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2688 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2689 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2690 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2691 On return, points to the number of frames in the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2692 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2693 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2694 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2695 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2696 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2697 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2698
a61af66fc99e Initial load
duke
parents:
diff changeset
2699 <function id="PopFrame" num="80">
a61af66fc99e Initial load
duke
parents:
diff changeset
2700 <synopsis>Pop Frame</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2701 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2702 Pop the current frame of <code>thread</code>'s stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2703 Popping a frame takes you to the previous frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2704 When the thread is resumed, the execution
a61af66fc99e Initial load
duke
parents:
diff changeset
2705 state of the thread is reset to the state
a61af66fc99e Initial load
duke
parents:
diff changeset
2706 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
2707 That is (using <vmspec/> terminology):
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2708 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2709 <li>the current frame is discarded as the previous frame becomes the current one</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2710 <li>the operand stack is restored--the argument values are added back
a61af66fc99e Initial load
duke
parents:
diff changeset
2711 and if the invoke was not <code>invokestatic</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2712 <code>objectref</code> is added back as well</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2713 <li>the Java virtual machine PC is restored to the opcode
a61af66fc99e Initial load
duke
parents:
diff changeset
2714 of the invoke instruction</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2715 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2716 Note however, that any changes to the arguments, which
a61af66fc99e Initial load
duke
parents:
diff changeset
2717 occurred in the called method, remain;
a61af66fc99e Initial load
duke
parents:
diff changeset
2718 when execution continues, the first instruction to
a61af66fc99e Initial load
duke
parents:
diff changeset
2719 execute will be the invoke.
a61af66fc99e Initial load
duke
parents:
diff changeset
2720 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2721 Between calling <code>PopFrame</code> and resuming the
a61af66fc99e Initial load
duke
parents:
diff changeset
2722 thread the state of the stack is undefined.
a61af66fc99e Initial load
duke
parents:
diff changeset
2723 To pop frames beyond the first,
a61af66fc99e Initial load
duke
parents:
diff changeset
2724 these three steps must be repeated:
a61af66fc99e Initial load
duke
parents:
diff changeset
2725 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2726 <li>suspend the thread via an event (step, breakpoint, ...)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2727 <li>call <code>PopFrame</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2728 <li>resume the thread</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2729 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2730 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2731 A lock acquired by calling the called method
a61af66fc99e Initial load
duke
parents:
diff changeset
2732 (if it is a <code>synchronized</code> method)
a61af66fc99e Initial load
duke
parents:
diff changeset
2733 and locks acquired by entering <code>synchronized</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2734 blocks within the called method are released.
a61af66fc99e Initial load
duke
parents:
diff changeset
2735 Note: this does not apply to native locks or
a61af66fc99e Initial load
duke
parents:
diff changeset
2736 <code>java.util.concurrent.locks</code> locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
2737 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2738 Finally blocks are not executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2739 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2740 Changes to global state are not addressed and thus remain changed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2741 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2742 The specified thread must be suspended (which implies it cannot be the current thread).
a61af66fc99e Initial load
duke
parents:
diff changeset
2743 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2744 Both the called method and calling method must be non-native Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2745 language methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
2746 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2747 No <jvmti/> events are generated by this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2748 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2749 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2750 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2751 <required id="can_pop_frame"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2752 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2753 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2754 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2755 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2756 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2757 The thread whose current frame is to be popped.
a61af66fc99e Initial load
duke
parents:
diff changeset
2758 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2759 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2760 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2761 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2762 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2763 Called or calling method is a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2764 The implementation is unable to pop this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2765 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2766 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2767 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2768 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2769 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
2770 There are less than two stack frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2771 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2772 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2773 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2774
a61af66fc99e Initial load
duke
parents:
diff changeset
2775 <function id="GetFrameLocation" num="19">
a61af66fc99e Initial load
duke
parents:
diff changeset
2776 <synopsis>Get Frame Location</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2777 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2778 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2779 For a Java programming language frame, return the location of the instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
2780 currently executing.
a61af66fc99e Initial load
duke
parents:
diff changeset
2781 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2782 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2783 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2784 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2785 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2786 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2787 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2788 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2789 The thread of the frame to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2790 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2791 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2792 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2793 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2794 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2795 The depth of the frame to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2796 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2797 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2798 <param id="method_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2799 <outptr><jmethodID/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2800 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2801 On return, points to the method for the current location.
a61af66fc99e Initial load
duke
parents:
diff changeset
2802 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2803 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2804 <param id="location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2805 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2806 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2807 On return, points to the index of the currently
a61af66fc99e Initial load
duke
parents:
diff changeset
2808 executing instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
2809 Is set to <code>-1</code> if the frame is executing
a61af66fc99e Initial load
duke
parents:
diff changeset
2810 a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2811 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2812 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2813 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2814 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2815 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2816 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2817
a61af66fc99e Initial load
duke
parents:
diff changeset
2818 <function id="NotifyFramePop" num="20">
a61af66fc99e Initial load
duke
parents:
diff changeset
2819 <synopsis>Notify Frame Pop</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2820 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2821 When the frame that is currently at <paramlink id="depth"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2822 is popped from the stack, generate a
a61af66fc99e Initial load
duke
parents:
diff changeset
2823 <eventlink id="FramePop"></eventlink> event. See the
a61af66fc99e Initial load
duke
parents:
diff changeset
2824 <eventlink id="FramePop"></eventlink> event for details.
a61af66fc99e Initial load
duke
parents:
diff changeset
2825 Only frames corresponding to non-native Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
2826 methods can receive notification.
a61af66fc99e Initial load
duke
parents:
diff changeset
2827 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2828 The specified thread must either be the current thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2829 or the thread must be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2830 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2831 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2832 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2833 <required id="can_generate_frame_pop_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2834 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2835 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2836 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2837 <jthread null="current" frame="depth"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2838 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2839 The thread of the frame for which the frame pop event will be generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2840 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2841 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2842 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2843 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2844 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2845 The depth of the frame for which the frame pop event will be generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2846 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2847 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2848 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2849 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2850 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2851 The frame at <code>depth</code> is executing a
a61af66fc99e Initial load
duke
parents:
diff changeset
2852 native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2853 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2854 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2855 Thread was not suspended and was not the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2856 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2857 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2858 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2859
a61af66fc99e Initial load
duke
parents:
diff changeset
2860 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2861
a61af66fc99e Initial load
duke
parents:
diff changeset
2862 <category id="ForceEarlyReturn" label="Force Early Return">
a61af66fc99e Initial load
duke
parents:
diff changeset
2863 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2864 These functions allow an agent to force a method
a61af66fc99e Initial load
duke
parents:
diff changeset
2865 to return at any point during its execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
2866 The method which will return early is referred to as the <i>called method</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2867 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
2868 (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
2869 <vmspec chapter="3.6"/>)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
2870 for the specified thread at
a61af66fc99e Initial load
duke
parents:
diff changeset
2871 the time the function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
2872 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2873 The specified thread must be suspended or must be the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2874 The return occurs when execution of Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2875 language code is resumed on this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2876 Between calling one of these functions and resumption
a61af66fc99e Initial load
duke
parents:
diff changeset
2877 of thread execution, the state of the stack is undefined.
a61af66fc99e Initial load
duke
parents:
diff changeset
2878 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2879 No further instructions are executed in the called method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2880 Specifically, finally blocks are not executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2881 Note: this can cause inconsistent states in the application.
a61af66fc99e Initial load
duke
parents:
diff changeset
2882 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2883 A lock acquired by calling the called method
a61af66fc99e Initial load
duke
parents:
diff changeset
2884 (if it is a <code>synchronized</code> method)
a61af66fc99e Initial load
duke
parents:
diff changeset
2885 and locks acquired by entering <code>synchronized</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2886 blocks within the called method are released.
a61af66fc99e Initial load
duke
parents:
diff changeset
2887 Note: this does not apply to native locks or
a61af66fc99e Initial load
duke
parents:
diff changeset
2888 <code>java.util.concurrent.locks</code> locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
2889 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2890 Events, such as <eventlink id="MethodExit"></eventlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2891 are generated as they would be in a normal return.
a61af66fc99e Initial load
duke
parents:
diff changeset
2892 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2893 The called method must be a non-native Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2894 language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2895 Forcing return on a thread with only one frame on the
a61af66fc99e Initial load
duke
parents:
diff changeset
2896 stack causes the thread to exit when resumed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2897 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2898
a61af66fc99e Initial load
duke
parents:
diff changeset
2899 <function id="ForceEarlyReturnObject" num="81" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2900 <synopsis>Force Early Return - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2901 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2902 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
2903 result type is <code>Object</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2904 or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2905 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2906 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2907 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2908 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2909 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2910 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2911 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2912 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2913 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2914 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
2915 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2916 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2917 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
2918 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2919 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2920 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2921 An object or <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2922 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2923 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2924 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2925 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2926 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2927 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
2928 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2929 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
2930 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2931 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2932 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
2933 The result type of the called method is not
a61af66fc99e Initial load
duke
parents:
diff changeset
2934 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2935 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2936 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
2937 The supplied <paramlink id="value"/> is not compatible with the
a61af66fc99e Initial load
duke
parents:
diff changeset
2938 result type of the called method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2939 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2940 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2941 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2942 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2943 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
2944 There are no more frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2945 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2946 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2947 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2948
a61af66fc99e Initial load
duke
parents:
diff changeset
2949 <function id="ForceEarlyReturnInt" num="82" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2950 <synopsis>Force Early Return - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2951 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2952 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
2953 result type is <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2954 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
2955 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2956 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2957 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2958 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2959 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2960 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2961 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2962 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2963 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2964 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2965 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
2966 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2967 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2968 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
2969 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2970 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2971 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2972 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2973 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2974 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2975 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2976 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2977 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
2978 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2979 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
2980 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2981 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2982 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
2983 The result type of the called method is not
a61af66fc99e Initial load
duke
parents:
diff changeset
2984 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2985 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
2986 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2987 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2988 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2989 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2990 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2991 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
2992 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2993 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2994 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2995 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2996
a61af66fc99e Initial load
duke
parents:
diff changeset
2997 <function id="ForceEarlyReturnLong" num="83" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2998 <synopsis>Force Early Return - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2999 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3000 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3001 result type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3002 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3003 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3004 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3005 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3006 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3007 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3008 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3009 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3010 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3011 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3012 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3013 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3014 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3015 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3016 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3017 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3018 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3019 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3020 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3021 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3022 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3023 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3024 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3025 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3026 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3027 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3028 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3029 The result type of the called method is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3030 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3031 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3032 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3033 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3034 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3035 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3036 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3037 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3038 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3039
a61af66fc99e Initial load
duke
parents:
diff changeset
3040 <function id="ForceEarlyReturnFloat" num="84" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3041 <synopsis>Force Early Return - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3042 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3043 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3044 result type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3045 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3046 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3047 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3048 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3049 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3050 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3051 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3052 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3053 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3054 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3055 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3056 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3057 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3058 <jfloat/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3059 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3060 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3061 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3062 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3063 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3064 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3065 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3066 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3067 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3068 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3069 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3070 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3071 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3072 The result type of the called method is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3073 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3074 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3075 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3076 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3077 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3078 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3079 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3080 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3081 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3082
a61af66fc99e Initial load
duke
parents:
diff changeset
3083 <function id="ForceEarlyReturnDouble" num="85" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3084 <synopsis>Force Early Return - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3085 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3086 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3087 result type is <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3088 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3089 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3090 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3091 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3092 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3093 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3094 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3095 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3096 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3097 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3098 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3099 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3100 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3101 <jdouble/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3102 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3103 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3104 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3105 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3106 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3107 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3108 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3109 Attempted to return early from a frame corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3110 Or the implementation is unable to provide this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3111 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3112 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3113 The result type of the called method is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3114 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3115 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3116 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3117 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3118 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3119 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3120 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3121 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3122 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3123
a61af66fc99e Initial load
duke
parents:
diff changeset
3124 <function id="ForceEarlyReturnVoid" num="86" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3125 <synopsis>Force Early Return - Void</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3126 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3127 This function can be used to return from a method with no result type.
a61af66fc99e Initial load
duke
parents:
diff changeset
3128 That is, the called method must be declared <code>void</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3129 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3130 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3131 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3132 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3133 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3134 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3135 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3136 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3137 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3138 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3139 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3140 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3141 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3142 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3143 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3144 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3145 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3146 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3147 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3148 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3149 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3150 The called method has a result type.
a61af66fc99e Initial load
duke
parents:
diff changeset
3151 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3152 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3153 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3154 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3155 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3156 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3157 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3158 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3159 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3160
a61af66fc99e Initial load
duke
parents:
diff changeset
3161 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
3162
a61af66fc99e Initial load
duke
parents:
diff changeset
3163 <category id="Heap" label="Heap">
a61af66fc99e Initial load
duke
parents:
diff changeset
3164 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3165 These functions are used to analyze the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
3166 Functionality includes the ability to view the objects in the
a61af66fc99e Initial load
duke
parents:
diff changeset
3167 heap and to tag these objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
3168 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3169
a61af66fc99e Initial load
duke
parents:
diff changeset
3170 <intro id="objectTags" label="Object Tags">
a61af66fc99e Initial load
duke
parents:
diff changeset
3171 A <i>tag</i> is a value associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3172 Tags are explicitly set by the agent using the
a61af66fc99e Initial load
duke
parents:
diff changeset
3173 <functionlink id="SetTag"></functionlink> function or by
a61af66fc99e Initial load
duke
parents:
diff changeset
3174 callback functions such as <functionlink id="jvmtiHeapIterationCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3175 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3176 Tags are local to the environment; that is, the tags of one
a61af66fc99e Initial load
duke
parents:
diff changeset
3177 environment are not visible in another.
a61af66fc99e Initial load
duke
parents:
diff changeset
3178 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3179 Tags are <code>jlong</code> values which can be used
a61af66fc99e Initial load
duke
parents:
diff changeset
3180 simply to mark an object or to store a pointer to more detailed
a61af66fc99e Initial load
duke
parents:
diff changeset
3181 information. Objects which have not been tagged have a
a61af66fc99e Initial load
duke
parents:
diff changeset
3182 tag of zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
3183 Setting a tag to zero makes the object untagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3184 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3185
a61af66fc99e Initial load
duke
parents:
diff changeset
3186 <intro id="heapCallbacks" label="Heap Callback Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
3187 Heap functions which iterate through the heap and recursively
a61af66fc99e Initial load
duke
parents:
diff changeset
3188 follow object references use agent supplied callback functions
a61af66fc99e Initial load
duke
parents:
diff changeset
3189 to deliver the information.
a61af66fc99e Initial load
duke
parents:
diff changeset
3190 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3191 These heap callback functions must adhere to the following restrictions --
a61af66fc99e Initial load
duke
parents:
diff changeset
3192 These callbacks must not use JNI functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
3193 These callbacks must not use <jvmti/> functions except
a61af66fc99e Initial load
duke
parents:
diff changeset
3194 <i>callback safe</i> functions which
a61af66fc99e Initial load
duke
parents:
diff changeset
3195 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
3196 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
3197 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3198 An implementation may invoke a callback on an internal thread or
a61af66fc99e Initial load
duke
parents:
diff changeset
3199 the thread which called the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3200 Heap callbacks are single threaded -- no more than one callback will
a61af66fc99e Initial load
duke
parents:
diff changeset
3201 be invoked at a time.
a61af66fc99e Initial load
duke
parents:
diff changeset
3202 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3203 The Heap Filter Flags can be used to prevent reporting
a61af66fc99e Initial load
duke
parents:
diff changeset
3204 based on the tag status of an object or its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3205 If no flags are set (the <code>jint</code> is zero), objects
a61af66fc99e Initial load
duke
parents:
diff changeset
3206 will not be filtered out.
a61af66fc99e Initial load
duke
parents:
diff changeset
3207
a61af66fc99e Initial load
duke
parents:
diff changeset
3208 <constants id="jvmtiHeapFilter" label="Heap Filter Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
3209 <constant id="JVMTI_HEAP_FILTER_TAGGED" num="0x4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3210 Filter out tagged objects. Objects which are tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3211 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3212 <constant id="JVMTI_HEAP_FILTER_UNTAGGED" num="0x8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3213 Filter out untagged objects. Objects which are not tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3214 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3215 <constant id="JVMTI_HEAP_FILTER_CLASS_TAGGED" num="0x10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3216 Filter out objects with tagged classes. Objects whose class is tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3217 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3218 <constant id="JVMTI_HEAP_FILTER_CLASS_UNTAGGED" num="0x20">
a61af66fc99e Initial load
duke
parents:
diff changeset
3219 Filter out objects with untagged classes. Objects whose class is not tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3220 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3221 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3222
a61af66fc99e Initial load
duke
parents:
diff changeset
3223 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3224 The Heap Visit Control Flags are returned by the heap callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
3225 and can be used to abort the iteration. For the
a61af66fc99e Initial load
duke
parents:
diff changeset
3226 <functionlink id="jvmtiHeapReferenceCallback">Heap
a61af66fc99e Initial load
duke
parents:
diff changeset
3227 Reference Callback</functionlink>, it can also be used
a61af66fc99e Initial load
duke
parents:
diff changeset
3228 to prune the graph of traversed references
a61af66fc99e Initial load
duke
parents:
diff changeset
3229 (<code>JVMTI_VISIT_OBJECTS</code> is not set).
a61af66fc99e Initial load
duke
parents:
diff changeset
3230
a61af66fc99e Initial load
duke
parents:
diff changeset
3231 <constants id="jvmtiHeapVisitControl"
a61af66fc99e Initial load
duke
parents:
diff changeset
3232 label="Heap Visit Control Flags"
a61af66fc99e Initial load
duke
parents:
diff changeset
3233 kind="bits"
a61af66fc99e Initial load
duke
parents:
diff changeset
3234 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3235 <constant id="JVMTI_VISIT_OBJECTS" num="0x100">
a61af66fc99e Initial load
duke
parents:
diff changeset
3236 If we are visiting an object and if this callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3237 was initiated by <functionlink id="FollowReferences"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3238 traverse the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3239 Otherwise ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
3240 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3241 <constant id="JVMTI_VISIT_ABORT" num="0x8000">
a61af66fc99e Initial load
duke
parents:
diff changeset
3242 Abort the iteration. Ignore all other bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
3243 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3244 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3245
a61af66fc99e Initial load
duke
parents:
diff changeset
3246 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3247 The Heap Reference Enumeration is provided by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3248 <functionlink id="jvmtiHeapReferenceCallback">Heap
a61af66fc99e Initial load
duke
parents:
diff changeset
3249 Reference Callback</functionlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
3250 <functionlink id="jvmtiPrimitiveFieldCallback">Primitive Field
a61af66fc99e Initial load
duke
parents:
diff changeset
3251 Callback</functionlink> to
a61af66fc99e Initial load
duke
parents:
diff changeset
3252 describe the kind of reference
a61af66fc99e Initial load
duke
parents:
diff changeset
3253 being reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
3254
a61af66fc99e Initial load
duke
parents:
diff changeset
3255 <constants id="jvmtiHeapReferenceKind"
a61af66fc99e Initial load
duke
parents:
diff changeset
3256 label="Heap Reference Enumeration"
a61af66fc99e Initial load
duke
parents:
diff changeset
3257 kind="enum"
a61af66fc99e Initial load
duke
parents:
diff changeset
3258 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3259 <constant id="JVMTI_HEAP_REFERENCE_CLASS" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3260 Reference from an object to its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3261 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3262 <constant id="JVMTI_HEAP_REFERENCE_FIELD" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
3263 Reference from an object to the value of one of its instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
3264 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3265 <constant id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
3266 Reference from an array to one of its elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
3267 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3268 <constant id="JVMTI_HEAP_REFERENCE_CLASS_LOADER" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3269 Reference from a class to its class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
3270 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3271 <constant id="JVMTI_HEAP_REFERENCE_SIGNERS" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3272 Reference from a class to its signers array.
a61af66fc99e Initial load
duke
parents:
diff changeset
3273 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3274 <constant id="JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3275 Reference from a class to its protection domain.
a61af66fc99e Initial load
duke
parents:
diff changeset
3276 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3277 <constant id="JVMTI_HEAP_REFERENCE_INTERFACE" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3278 Reference from a class to one of its interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
3279 Note: interfaces are defined via a constant pool reference,
a61af66fc99e Initial load
duke
parents:
diff changeset
3280 so the referenced interfaces may also be reported with a
a61af66fc99e Initial load
duke
parents:
diff changeset
3281 <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
3282 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3283 <constant id="JVMTI_HEAP_REFERENCE_STATIC_FIELD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3284 Reference from a class to the value of one of its static fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
3285 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3286 <constant id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
3287 Reference from a class to a resolved entry in the constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
3288 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3289 <constant id="JVMTI_HEAP_REFERENCE_SUPERCLASS" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3290 Reference from a class to its superclass.
a61af66fc99e Initial load
duke
parents:
diff changeset
3291 A callback is bot sent if the superclass is <code>java.lang.Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3292 Note: loaded classes define superclasses via a constant pool
a61af66fc99e Initial load
duke
parents:
diff changeset
3293 reference, so the referenced superclass may also be reported with
a61af66fc99e Initial load
duke
parents:
diff changeset
3294 a <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
3295 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3296 <constant id="JVMTI_HEAP_REFERENCE_JNI_GLOBAL" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
3297 Heap root reference: JNI global reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3298 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3299 <constant id="JVMTI_HEAP_REFERENCE_SYSTEM_CLASS" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
3300 Heap root reference: System class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3301 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3302 <constant id="JVMTI_HEAP_REFERENCE_MONITOR" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
3303 Heap root reference: monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
3304 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3305 <constant id="JVMTI_HEAP_REFERENCE_STACK_LOCAL" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
3306 Heap root reference: local variable on the stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3307 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3308 <constant id="JVMTI_HEAP_REFERENCE_JNI_LOCAL" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
3309 Heap root reference: JNI local reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3310 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3311 <constant id="JVMTI_HEAP_REFERENCE_THREAD" num="26">
a61af66fc99e Initial load
duke
parents:
diff changeset
3312 Heap root reference: Thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
3313 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3314 <constant id="JVMTI_HEAP_REFERENCE_OTHER" num="27">
a61af66fc99e Initial load
duke
parents:
diff changeset
3315 Heap root reference: other heap root reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3316 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3317 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3318
a61af66fc99e Initial load
duke
parents:
diff changeset
3319 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3320 Definitions for the single character type descriptors of
a61af66fc99e Initial load
duke
parents:
diff changeset
3321 primitive types.
a61af66fc99e Initial load
duke
parents:
diff changeset
3322
a61af66fc99e Initial load
duke
parents:
diff changeset
3323 <constants id="jvmtiPrimitiveType"
a61af66fc99e Initial load
duke
parents:
diff changeset
3324 label="Primitive Type Enumeration"
a61af66fc99e Initial load
duke
parents:
diff changeset
3325 kind="enum"
a61af66fc99e Initial load
duke
parents:
diff changeset
3326 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3327 <constant id="JVMTI_PRIMITIVE_TYPE_BOOLEAN" num="90">
a61af66fc99e Initial load
duke
parents:
diff changeset
3328 'Z' - Java programming language <code>boolean</code> - JNI <code>jboolean</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3329 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3330 <constant id="JVMTI_PRIMITIVE_TYPE_BYTE" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
3331 'B' - Java programming language <code>byte</code> - JNI <code>jbyte</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3332 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3333 <constant id="JVMTI_PRIMITIVE_TYPE_CHAR" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
3334 'C' - Java programming language <code>char</code> - JNI <code>jchar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3335 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3336 <constant id="JVMTI_PRIMITIVE_TYPE_SHORT" num="83">
a61af66fc99e Initial load
duke
parents:
diff changeset
3337 'S' - Java programming language <code>short</code> - JNI <code>jshort</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3338 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3339 <constant id="JVMTI_PRIMITIVE_TYPE_INT" num="73">
a61af66fc99e Initial load
duke
parents:
diff changeset
3340 'I' - Java programming language <code>int</code> - JNI <code>jint</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3341 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3342 <constant id="JVMTI_PRIMITIVE_TYPE_LONG" num="74">
a61af66fc99e Initial load
duke
parents:
diff changeset
3343 'J' - Java programming language <code>long</code> - JNI <code>jlong</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3344 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3345 <constant id="JVMTI_PRIMITIVE_TYPE_FLOAT" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
3346 'F' - Java programming language <code>float</code> - JNI <code>jfloat</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3347 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3348 <constant id="JVMTI_PRIMITIVE_TYPE_DOUBLE" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
3349 'D' - Java programming language <code>double</code> - JNI <code>jdouble</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3350 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3351 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3352 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3353
a61af66fc99e Initial load
duke
parents:
diff changeset
3354 <typedef id="jvmtiHeapReferenceInfoField"
a61af66fc99e Initial load
duke
parents:
diff changeset
3355 label="Reference information structure for Field references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3356 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3357 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3358 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3359 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
3360 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3361 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3362 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3363 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3364 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3365 For <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>, the
a61af66fc99e Initial load
duke
parents:
diff changeset
3366 referrer object is not a class or an inteface.
a61af66fc99e Initial load
duke
parents:
diff changeset
3367 In this case, <code>index</code> is the index of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3368 in the class of the referrer object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3369 This class is referred to below as <i>C</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3370 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3371 For <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3372 the referrer object is a class (referred to below as <i>C</i>)
a61af66fc99e Initial load
duke
parents:
diff changeset
3373 or an interface (referred to below as <i>I</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
3374 In this case, <code>index</code> is the index of the field in
a61af66fc99e Initial load
duke
parents:
diff changeset
3375 that class or interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
3376 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3377 If the referrer object is not an interface, then the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3378 indices are determined as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
3379 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3380 <li>make a list of all the fields in <i>C</i> and its
a61af66fc99e Initial load
duke
parents:
diff changeset
3381 superclasses, starting with all the fields in
a61af66fc99e Initial load
duke
parents:
diff changeset
3382 <code>java.lang.Object</code> and ending with all the
a61af66fc99e Initial load
duke
parents:
diff changeset
3383 fields in <i>C</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3384 <li>Within this list, put
a61af66fc99e Initial load
duke
parents:
diff changeset
3385 the fields for a given class in the order returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
3386 <functionlink id="GetClassFields"/>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3387 <li>Assign the fields in this list indices
a61af66fc99e Initial load
duke
parents:
diff changeset
3388 <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
3389 is the count of the fields in all the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3390 implemented by <i>C</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3391 Note that <i>C</i> implements all interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3392 directly implemented by its superclasses; as well
a61af66fc99e Initial load
duke
parents:
diff changeset
3393 as all superinterfaces of these interfaces.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3394 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3395 If the referrer object is an interface, then the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3396 indices are determined as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
3397 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3398 <li>make a list of the fields directly declared in
a61af66fc99e Initial load
duke
parents:
diff changeset
3399 <i>I</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3400 <li>Within this list, put
a61af66fc99e Initial load
duke
parents:
diff changeset
3401 the fields in the order returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
3402 <functionlink id="GetClassFields"/>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3403 <li>Assign the fields in this list indices
a61af66fc99e Initial load
duke
parents:
diff changeset
3404 <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
3405 is the count of the fields in all the superinterfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3406 of <i>I</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3407 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3408 All fields are included in this computation, regardless of
a61af66fc99e Initial load
duke
parents:
diff changeset
3409 field modifier (static, public, private, etc).
a61af66fc99e Initial load
duke
parents:
diff changeset
3410 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3411 For example, given the following classes and interfaces:
a61af66fc99e Initial load
duke
parents:
diff changeset
3412 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
3413 interface I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3414 int p = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
3415 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3416
a61af66fc99e Initial load
duke
parents:
diff changeset
3417 interface I1 extends I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3418 int x = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
3419 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3420
a61af66fc99e Initial load
duke
parents:
diff changeset
3421 interface I2 extends I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3422 int y = 2;
a61af66fc99e Initial load
duke
parents:
diff changeset
3423 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3424
a61af66fc99e Initial load
duke
parents:
diff changeset
3425 class C1 implements I1 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3426 public static int a = 3;
a61af66fc99e Initial load
duke
parents:
diff changeset
3427 private int b = 4;
a61af66fc99e Initial load
duke
parents:
diff changeset
3428 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3429
a61af66fc99e Initial load
duke
parents:
diff changeset
3430 class C2 extends C1 implements I2 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3431 static int q = 5;
a61af66fc99e Initial load
duke
parents:
diff changeset
3432 final int r = 6;
a61af66fc99e Initial load
duke
parents:
diff changeset
3433 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3434 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
3435 Assume that <functionlink id="GetClassFields"/> called on
a61af66fc99e Initial load
duke
parents:
diff changeset
3436 <code>C1</code> returns the fields of <code>C1</code> in the
a61af66fc99e Initial load
duke
parents:
diff changeset
3437 order: a, b; and that the fields of <code>C2</code> are
a61af66fc99e Initial load
duke
parents:
diff changeset
3438 returned in the order: q, r.
a61af66fc99e Initial load
duke
parents:
diff changeset
3439 An instance of class <code>C1</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3440 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3441 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3442 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3443 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3444 a
a61af66fc99e Initial load
duke
parents:
diff changeset
3445 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3446 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3447 2
a61af66fc99e Initial load
duke
parents:
diff changeset
3448 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3449 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3450 The count of the fields in the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3451 implemented by <code>C1</code> is two (<i>n</i>=2):
a61af66fc99e Initial load
duke
parents:
diff changeset
3452 <code>p</code> of <code>I0</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3453 and <code>x</code> of <code>I1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3454 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3455 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3456 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3457 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3458 b
a61af66fc99e Initial load
duke
parents:
diff changeset
3459 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3460 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3461 3
a61af66fc99e Initial load
duke
parents:
diff changeset
3462 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3463 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3464 the subsequent index.
a61af66fc99e Initial load
duke
parents:
diff changeset
3465 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3466 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3467 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3468 The class <code>C1</code> will have the same field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
3469 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3470 An instance of class <code>C2</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3471 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3472 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3473 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3474 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3475 a
a61af66fc99e Initial load
duke
parents:
diff changeset
3476 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3477 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3478 3
a61af66fc99e Initial load
duke
parents:
diff changeset
3479 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3480 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3481 The count of the fields in the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3482 implemented by <code>C2</code> is three (<i>n</i>=3):
a61af66fc99e Initial load
duke
parents:
diff changeset
3483 <code>p</code> of <code>I0</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3484 <code>x</code> of <code>I1</code> and <code>y</code> of <code>I2</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3485 (an interface of <code>C2</code>). Note that the field <code>p</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3486 of <code>I0</code> is only included once.
a61af66fc99e Initial load
duke
parents:
diff changeset
3487 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3488 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3489 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3490 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3491 b
a61af66fc99e Initial load
duke
parents:
diff changeset
3492 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3493 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3494 4
a61af66fc99e Initial load
duke
parents:
diff changeset
3495 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3496 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3497 the subsequent index to "a".
a61af66fc99e Initial load
duke
parents:
diff changeset
3498 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3499 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3500 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3501 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3502 q
a61af66fc99e Initial load
duke
parents:
diff changeset
3503 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3504 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3505 5
a61af66fc99e Initial load
duke
parents:
diff changeset
3506 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3507 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3508 the subsequent index to "b".
a61af66fc99e Initial load
duke
parents:
diff changeset
3509 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3510 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3511 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3512 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3513 r
a61af66fc99e Initial load
duke
parents:
diff changeset
3514 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3515 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3516 6
a61af66fc99e Initial load
duke
parents:
diff changeset
3517 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3518 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3519 the subsequent index to "q".
a61af66fc99e Initial load
duke
parents:
diff changeset
3520 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3521 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3522 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3523 The class <code>C2</code> will have the same field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
3524 Note that a field may have a different index depending on the
a61af66fc99e Initial load
duke
parents:
diff changeset
3525 object that is viewing it -- for example field "a" above.
a61af66fc99e Initial load
duke
parents:
diff changeset
3526 Note also: not all field indices may be visible from the
a61af66fc99e Initial load
duke
parents:
diff changeset
3527 callbacks, but all indices are shown for illustrative purposes.
a61af66fc99e Initial load
duke
parents:
diff changeset
3528 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3529 The interface <code>I1</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3530 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3531 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3532 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3533 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3534 x
a61af66fc99e Initial load
duke
parents:
diff changeset
3535 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3536 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3537 1
a61af66fc99e Initial load
duke
parents:
diff changeset
3538 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3539 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3540 The count of the fields in the superinterfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3541 of <code>I1</code> is one (<i>n</i>=1):
a61af66fc99e Initial load
duke
parents:
diff changeset
3542 <code>p</code> of <code>I0</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3543 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3544 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3545 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3546 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3547 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3548 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3549
a61af66fc99e Initial load
duke
parents:
diff changeset
3550 <typedef id="jvmtiHeapReferenceInfoArray"
a61af66fc99e Initial load
duke
parents:
diff changeset
3551 label="Reference information structure for Array references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3552 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3553 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3554 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3555 <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3556 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3557 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3558 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3559 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3560 The array index.
a61af66fc99e Initial load
duke
parents:
diff changeset
3561 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3562 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3563 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3564
a61af66fc99e Initial load
duke
parents:
diff changeset
3565 <typedef id="jvmtiHeapReferenceInfoConstantPool"
a61af66fc99e Initial load
duke
parents:
diff changeset
3566 label="Reference information structure for Constant Pool references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3567 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3568 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3569 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3570 <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3571 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3572 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3573 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3574 <description>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
3575 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
3576 <vmspec chapter="4.4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3577 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3578 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3579 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3580
a61af66fc99e Initial load
duke
parents:
diff changeset
3581 <typedef id="jvmtiHeapReferenceInfoStackLocal"
a61af66fc99e Initial load
duke
parents:
diff changeset
3582 label="Reference information structure for Local Variable references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3583 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3584 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3585 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3586 <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3587 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3588 <field id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
3589 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3590 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3591 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3592 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3593 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3594 <field id="thread_id">
a61af66fc99e Initial load
duke
parents:
diff changeset
3595 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3596 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3597 The unique thread ID of the thread corresponding to this stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3598 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3599 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3600 <field id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
3601 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3602 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3603 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3604 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3605 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3606 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
3607 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3608 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3609 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3610 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3611 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3612 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
3613 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3614 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3615 The currently executing location in this frame.
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 <field id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
3619 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3620 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3621 The slot number of the local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
3622 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3623 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3624 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3625
a61af66fc99e Initial load
duke
parents:
diff changeset
3626 <typedef id="jvmtiHeapReferenceInfoJniLocal"
a61af66fc99e Initial load
duke
parents:
diff changeset
3627 label="Reference information structure for JNI local references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3628 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3629 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3630 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3631 <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3632 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3633 <field id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
3634 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3635 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3636 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3637 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3638 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3639 <field id="thread_id">
a61af66fc99e Initial load
duke
parents:
diff changeset
3640 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3641 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3642 The unique thread ID of the thread corresponding to this stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3644 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3645 <field id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
3646 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3647 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3648 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3649 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3650 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3651 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
3652 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3653 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3654 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3655 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3656 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3657 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3658
a61af66fc99e Initial load
duke
parents:
diff changeset
3659 <typedef id="jvmtiHeapReferenceInfoReserved"
a61af66fc99e Initial load
duke
parents:
diff changeset
3660 label="Reference information structure for Other references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3661 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3662 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3663 Reference information returned for other references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3664 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3665 <field id="reserved1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3666 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3667 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3668 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3669 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3670 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3671 <field id="reserved2">
a61af66fc99e Initial load
duke
parents:
diff changeset
3672 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3673 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3674 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3675 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3676 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3677 <field id="reserved3">
a61af66fc99e Initial load
duke
parents:
diff changeset
3678 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3679 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3680 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3681 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3682 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3683 <field id="reserved4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3684 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3685 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3686 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3687 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3688 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3689 <field id="reserved5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3690 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3691 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3692 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3693 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3694 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3695 <field id="reserved6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3696 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3697 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3698 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3699 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3700 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3701 <field id="reserved7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3702 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3703 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3704 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3705 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3706 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3707 <field id="reserved8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3708 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3709 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3710 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3711 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3712 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3713 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3714
a61af66fc99e Initial load
duke
parents:
diff changeset
3715 <uniontypedef id="jvmtiHeapReferenceInfo"
a61af66fc99e Initial load
duke
parents:
diff changeset
3716 label="Reference information structure"
a61af66fc99e Initial load
duke
parents:
diff changeset
3717 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3718 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3719 The information returned about referrers.
a61af66fc99e Initial load
duke
parents:
diff changeset
3720 Represented as a union of the various kinds of reference information.
a61af66fc99e Initial load
duke
parents:
diff changeset
3721 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3722 <field id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
3723 <struct>jvmtiHeapReferenceInfoField</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3724 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3725 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3726 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3727 and <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3728 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3729 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3730 <field id="array">
a61af66fc99e Initial load
duke
parents:
diff changeset
3731 <struct>jvmtiHeapReferenceInfoArray</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3732 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3733 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3734 For <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3735 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3736 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3737 <field id="constant_pool">
a61af66fc99e Initial load
duke
parents:
diff changeset
3738 <struct>jvmtiHeapReferenceInfoConstantPool</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3739 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3740 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3741 For <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3742 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3743 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3744 <field id="stack_local">
a61af66fc99e Initial load
duke
parents:
diff changeset
3745 <struct>jvmtiHeapReferenceInfoStackLocal</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3746 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3747 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3748 For <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3749 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3750 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3751 <field id="jni_local">
a61af66fc99e Initial load
duke
parents:
diff changeset
3752 <struct>jvmtiHeapReferenceInfoJniLocal</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3753 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3754 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3755 For <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3756 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3757 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3758 <field id="other">
a61af66fc99e Initial load
duke
parents:
diff changeset
3759 <struct>jvmtiHeapReferenceInfoReserved</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3760 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3761 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3762 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3763 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3764 </uniontypedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3765
a61af66fc99e Initial load
duke
parents:
diff changeset
3766 <typedef id="jvmtiHeapCallbacks"
a61af66fc99e Initial load
duke
parents:
diff changeset
3767 label="Heap callback function structure"
a61af66fc99e Initial load
duke
parents:
diff changeset
3768 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3769 <field id="heap_iteration_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3770 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3771 <struct>jvmtiHeapIterationCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3772 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3773 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3774 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3775 object in the heap. Used by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3776 <functionlink id="IterateThroughHeap"/> function, ignored by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3777 <functionlink id="FollowReferences"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3778 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3779 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3780 <field id="heap_reference_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3781 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3782 <struct>jvmtiHeapReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3783 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3784 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3785 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3786 object reference. Used by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3787 <functionlink id="FollowReferences"/> function, ignored by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3788 <functionlink id="IterateThroughHeap"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3789 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3790 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3791 <field id="primitive_field_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3792 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3793 <struct>jvmtiPrimitiveFieldCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3794 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3795 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3796 The callback to be called to describe a
a61af66fc99e Initial load
duke
parents:
diff changeset
3797 primitive field.
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_primitive_value_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3801 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3802 <struct>jvmtiArrayPrimitiveValueCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3803 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3804 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3805 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3806 array of primitive values.
a61af66fc99e Initial load
duke
parents:
diff changeset
3807 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3808 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3809 <field id="string_primitive_value_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3810 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3811 <struct>jvmtiStringPrimitiveValueCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3812 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3813 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3814 The callback to be called to describe a String value.
a61af66fc99e Initial load
duke
parents:
diff changeset
3815 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3816 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3817 <field id="reserved5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3818 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3819 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3820 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3821 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3822 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3823 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3824 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3825 <field id="reserved6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3826 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3827 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3828 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3829 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3830 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3831 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3832 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3833 <field id="reserved7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3834 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3835 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3836 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3837 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3838 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3839 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3840 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3841 <field id="reserved8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3842 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3843 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3844 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3845 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3846 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3847 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3848 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3849 <field id="reserved9">
a61af66fc99e Initial load
duke
parents:
diff changeset
3850 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3851 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3852 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3853 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3854 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3855 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3856 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3857 <field id="reserved10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3858 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3859 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3860 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3861 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3862 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3863 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3864 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3865 <field id="reserved11">
a61af66fc99e Initial load
duke
parents:
diff changeset
3866 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3867 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3868 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3869 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3870 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3871 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3872 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3873 <field id="reserved12">
a61af66fc99e Initial load
duke
parents:
diff changeset
3874 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3875 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3876 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3877 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3878 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3879 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3880 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3881 <field id="reserved13">
a61af66fc99e Initial load
duke
parents:
diff changeset
3882 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3883 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3884 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3885 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3886 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3887 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3888 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3889 <field id="reserved14">
a61af66fc99e Initial load
duke
parents:
diff changeset
3890 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3891 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3892 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3893 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3894 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3895 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3896 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3897 <field id="reserved15">
a61af66fc99e Initial load
duke
parents:
diff changeset
3898 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3899 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3900 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3901 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3902 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3903 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3904 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3905 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3906
a61af66fc99e Initial load
duke
parents:
diff changeset
3907
a61af66fc99e Initial load
duke
parents:
diff changeset
3908 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3909 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
3910 The heap dumping functionality (below) uses a callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3911 for each object. While it would seem that a buffered approach
a61af66fc99e Initial load
duke
parents:
diff changeset
3912 would provide better throughput, tests do
a61af66fc99e Initial load
duke
parents:
diff changeset
3913 not show this to be the case--possibly due to locality of
a61af66fc99e Initial load
duke
parents:
diff changeset
3914 memory reference or array access overhead.
a61af66fc99e Initial load
duke
parents:
diff changeset
3915 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
3916
a61af66fc99e Initial load
duke
parents:
diff changeset
3917 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3918 Still under investigation as to if java.lang.ref references
a61af66fc99e Initial load
duke
parents:
diff changeset
3919 are reported as a different type of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3920 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3921
a61af66fc99e Initial load
duke
parents:
diff changeset
3922 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3923 Should or can an indication of the cost or relative cost of
a61af66fc99e Initial load
duke
parents:
diff changeset
3924 these operations be included?
a61af66fc99e Initial load
duke
parents:
diff changeset
3925 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3926
a61af66fc99e Initial load
duke
parents:
diff changeset
3927 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3928
a61af66fc99e Initial load
duke
parents:
diff changeset
3929 <callback id="jvmtiHeapIterationCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3930 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3931 <synopsis>Heap Iteration Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3932 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3933 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3934 Describes (but does not pass in) an object in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
3935 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3936 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
3937 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3938 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
3939 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
3940 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3941 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3942 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3943 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3944 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3945 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
3946 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3947 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3948 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
3949 If the object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
3950 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
3951 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3952 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
3953 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3954 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3955 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
3956 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3957 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3958 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3959 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3960 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3961 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
3962 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3963 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3964 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3965 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
3966 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
3967 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3968 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3969 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
3970 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3971 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3972 If this object is an array, the length of the array. Otherwise negative one (-1).
a61af66fc99e Initial load
duke
parents:
diff changeset
3973 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3974 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3975 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
3976 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3977 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3978 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3979 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3980 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3981 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3982 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
3983
a61af66fc99e Initial load
duke
parents:
diff changeset
3984 <callback id="jvmtiHeapReferenceCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3985 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3986 <synopsis>Heap Reference Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3987 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3988 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3989 Describes a reference from an object or the VM (the referrer) to another object
a61af66fc99e Initial load
duke
parents:
diff changeset
3990 (the referree) or a heap root to a referree.
a61af66fc99e Initial load
duke
parents:
diff changeset
3991 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3992 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
3993 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3994 This will determine if the objects referenced by the referree
a61af66fc99e Initial load
duke
parents:
diff changeset
3995 should be visited or if the entire iteration should be aborted.
a61af66fc99e Initial load
duke
parents:
diff changeset
3996 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3997 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3998 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3999 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4000 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4001 <param id="reference_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
4002 <enum>jvmtiHeapReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4003 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4004 The kind of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4005 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4006 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4007 <param id="reference_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
4008 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4009 <struct>jvmtiHeapReferenceInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4010 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4011 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4012 Details about the reference.
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4013 Set when the <datalink id="jvmtiHeapReferenceCallback.reference_kind">reference_kind</datalink> is
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4014 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4015 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4016 <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4017 <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4018 <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4019 or <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4020 Otherwise <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4021 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4022 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4023 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4024 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4025 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4026 The tag of the class of referree object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4027 If the referree object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4028 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4029 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4030 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4031 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4032 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4033 <param id="referrer_class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4034 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4036 The tag of the class of the referrer object (zero if the class is not tagged
a61af66fc99e Initial load
duke
parents:
diff changeset
4037 or the referree is a heap root). If the referrer object represents a runtime
a61af66fc99e Initial load
duke
parents:
diff changeset
4038 class, the <code>referrer_class_tag</code> is the tag associated with
a61af66fc99e Initial load
duke
parents:
diff changeset
4039 the <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4040 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4041 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4042 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4043 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4044 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4045 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4046 Size of the referree object (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4047 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4048 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4049 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4050 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4051 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4052 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4053 Points to the referree object tag value, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4054 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4055 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4056 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4057 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4058 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4059 <param id="referrer_tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4060 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4061 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4062 Points to the tag of the referrer object, or
a61af66fc99e Initial load
duke
parents:
diff changeset
4063 points to the zero if the referrer
a61af66fc99e Initial load
duke
parents:
diff changeset
4064 object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4065 <code>NULL</code> if the referrer in not an object (that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
4066 this callback is reporting a heap root).
a61af66fc99e Initial load
duke
parents:
diff changeset
4067 To set the tag value to be associated with the referrer object
a61af66fc99e Initial load
duke
parents:
diff changeset
4068 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4069 If this callback is reporting a reference from an object to itself,
a61af66fc99e Initial load
duke
parents:
diff changeset
4070 <code>referrer_tag_ptr == tag_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4071 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4072 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4073 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4074 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4075 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4076 If this object is an array, the length of the array. Otherwise negative one (-1).
a61af66fc99e Initial load
duke
parents:
diff changeset
4077 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4078 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4079 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4080 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4081 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4082 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4083 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4084 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4085 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4086 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4087
a61af66fc99e Initial load
duke
parents:
diff changeset
4088 <callback id="jvmtiPrimitiveFieldCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4089 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4090 <synopsis>Primitive Field Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4091 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4092 Agent supplied callback function which
a61af66fc99e Initial load
duke
parents:
diff changeset
4093 describes a primitive field of an object (<i>the object</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
4094 A primitive field is a field whose type is a primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
4095 This callback will describe a static field if the object is a class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4096 and otherwise will describe an instance field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4097 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4098 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4099 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4100 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4101 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4102 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4103 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4104 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4105 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4106 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4107 <param id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
4108 <enum>jvmtiHeapReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4109 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4110 The kind of field -- instance or static (<datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4111 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
4112 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4113 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4114 <param id="info">
a61af66fc99e Initial load
duke
parents:
diff changeset
4115 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4116 <struct>jvmtiHeapReferenceInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4117 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4118 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4119 Which field (the field index).
a61af66fc99e Initial load
duke
parents:
diff changeset
4120 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4121 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4122 <param id="object_class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4123 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4124 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4125 The tag of the class of the object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4126 If the object represents a runtime class, the
a61af66fc99e Initial load
duke
parents:
diff changeset
4127 <code>object_class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4128 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4129 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4130 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4131 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4132 <param id="object_tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4133 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4134 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4135 Points to the tag of the object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4136 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4137 To set the tag value to be associated with the 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 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4140 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4141 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
4142 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4143 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4144 The value of the field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4145 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4146 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4147 <param id="value_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
4148 <enum>jvmtiPrimitiveType</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4149 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4150 The type of the field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4151 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4152 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4153 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4154 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4155 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4156 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4157 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4158 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4159 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4160 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4161
a61af66fc99e Initial load
duke
parents:
diff changeset
4162 <callback id="jvmtiArrayPrimitiveValueCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4163 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4164 <synopsis>Array Primitive Value Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4165 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4166 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4167 Describes the values in an array of a primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
4168 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4169 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4170 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4171 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4172 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4173 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4174 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4175 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4176 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4177 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4178 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4179 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4180 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4181 The tag of the class of the array object (zero if the class is not tagged).
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="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4185 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4186 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4187 Size of the array (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4188 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4189 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4190 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4191 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4192 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4193 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4194 Points to the tag of the array object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4195 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4196 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4197 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4198 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4199 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4200 <param id="element_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4201 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4202 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4203 The length of the primitive array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4204 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4205 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4206 <param id="element_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
4207 <enum>jvmtiPrimitiveType</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4208 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4209 The type of the elements of the array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4210 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4211 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4212 <param id="elements">
a61af66fc99e Initial load
duke
parents:
diff changeset
4213 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4214 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4215 The elements of the array in a packed array of <code>element_count</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4216 items of <code>element_type</code> size each.
a61af66fc99e Initial load
duke
parents:
diff changeset
4217 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4218 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4219 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4220 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4221 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4222 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4223 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4224 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4225 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4226 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4227
a61af66fc99e Initial load
duke
parents:
diff changeset
4228 <callback id="jvmtiStringPrimitiveValueCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4229 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4230 <synopsis>String Primitive Value Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4231 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4232 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4233 Describes the value of a java.lang.String.
a61af66fc99e Initial load
duke
parents:
diff changeset
4234 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4235 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4236 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4237 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4238 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4239 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4240 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4241 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4242 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4243 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4244 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4245 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4246 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4247 The tag of the class of the String class (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4248 <issue>Is this needed?</issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
4249 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4250 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4251 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4252 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4253 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4254 Size of the string (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4255 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4256 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4257 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4258 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4259 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4260 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4261 Points to the tag of the String object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4262 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4263 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4264 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4265 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4266 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4267 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
4268 <vmbuf><jchar/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4269 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4270 The value of the String, encoded as a Unicode string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4271 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4272 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4273 <param id="value_length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4274 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4275 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4276 The length of the string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4277 The length is equal to the number of 16-bit Unicode
a61af66fc99e Initial load
duke
parents:
diff changeset
4278 characters in the string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4279 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4280 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4281 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4282 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4283 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4284 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4285 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4286 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4287 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4288 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4289
a61af66fc99e Initial load
duke
parents:
diff changeset
4290
a61af66fc99e Initial load
duke
parents:
diff changeset
4291 <callback id="jvmtiReservedCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4292 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4293 <synopsis>reserved for future use Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4294 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4295 Placeholder -- reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
4296 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4297 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4298 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4299 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4300
a61af66fc99e Initial load
duke
parents:
diff changeset
4301 <function id="FollowReferences" num="115" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4302 <synopsis>Follow References</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4303 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4304 This function initiates a traversal over the objects that are
a61af66fc99e Initial load
duke
parents:
diff changeset
4305 directly and indirectly reachable from the specified object or,
a61af66fc99e Initial load
duke
parents:
diff changeset
4306 if <code>initial_object</code> is not specified, all objects
a61af66fc99e Initial load
duke
parents:
diff changeset
4307 reachable from the heap roots.
a61af66fc99e Initial load
duke
parents:
diff changeset
4308 The heap root are the set of system classes,
a61af66fc99e Initial load
duke
parents:
diff changeset
4309 JNI globals, references from thread stacks, and other objects used as roots
a61af66fc99e Initial load
duke
parents:
diff changeset
4310 for the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
4311 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4312 This function operates by traversing the reference graph.
a61af66fc99e Initial load
duke
parents:
diff changeset
4313 Let <i>A</i>, <i>B</i>, ... represent objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
4314 When a reference from <i>A</i> to <i>B</i> is traversed,
a61af66fc99e Initial load
duke
parents:
diff changeset
4315 when a reference from a heap root to <i>B</i> is traversed,
a61af66fc99e Initial load
duke
parents:
diff changeset
4316 or when <i>B</i> is specified as the <paramlink id="initial_object"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4317 then <i>B</i> is said to be <i>visited</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4318 A reference from <i>A</i> to <i>B</i> is not traversed until <i>A</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
4319 is visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4320 References are reported in the same order that the references are traversed.
a61af66fc99e Initial load
duke
parents:
diff changeset
4321 Object references are reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4322 callback function <functionlink id="jvmtiHeapReferenceCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4323 In a reference from <i>A</i> to <i>B</i>, <i>A</i> is known
a61af66fc99e Initial load
duke
parents:
diff changeset
4324 as the <i>referrer</i> and <i>B</i> as the <i>referree</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4325 The callback is invoked exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
4326 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
4327 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
4328 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
4329 each reference is reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4330 These references may be distinguished by examining the
a61af66fc99e Initial load
duke
parents:
diff changeset
4331 <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
4332 id="jvmtiHeapReferenceCallback.reference_kind"><code>reference_kind</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4333 and
a61af66fc99e Initial load
duke
parents:
diff changeset
4334 <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
4335 id="jvmtiHeapReferenceCallback.reference_info"><code>reference_info</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4336 parameters of the <functionlink id="jvmtiHeapReferenceCallback"/> callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4337 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4338 This function reports a Java programming language view of object references,
a61af66fc99e Initial load
duke
parents:
diff changeset
4339 not a virtual machine implementation view. The following object references
a61af66fc99e Initial load
duke
parents:
diff changeset
4340 are reported when they are non-null:
a61af66fc99e Initial load
duke
parents:
diff changeset
4341 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4342 <li>Instance objects report references to each non-primitive instance fields
a61af66fc99e Initial load
duke
parents:
diff changeset
4343 (including inherited fields).</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4344 <li>Instance objects report a reference to the object type (class).</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4345 <li>Classes report a reference to the superclass and directly
a61af66fc99e Initial load
duke
parents:
diff changeset
4346 implemented/extended interfaces.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4347 <li>Classes report a reference to the class loader, protection domain,
a61af66fc99e Initial load
duke
parents:
diff changeset
4348 signers, and resolved entries in the constant pool.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4349 <li>Classes report a reference to each directly declared non-primitive
a61af66fc99e Initial load
duke
parents:
diff changeset
4350 static field.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4351 <li>Arrays report a reference to the array type (class) and each
a61af66fc99e Initial load
duke
parents:
diff changeset
4352 array element.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4353 <li>Primitive arrays report a reference to the array type.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4354 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4355 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4356 This function can also be used to examine primitive (non-object) values.
a61af66fc99e Initial load
duke
parents:
diff changeset
4357 The primitive value of an array or String
a61af66fc99e Initial load
duke
parents:
diff changeset
4358 is reported after the object has been visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4359 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4360 <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4361 <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4362 A primitive field
a61af66fc99e Initial load
duke
parents:
diff changeset
4363 is reported after the object with that field is visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4364 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4365 <functionlink id="jvmtiPrimitiveFieldCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4366 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4367 Whether a callback is provided or is <code>NULL</code> only determines
a61af66fc99e Initial load
duke
parents:
diff changeset
4368 whether the callback will be invoked, it does not influence
a61af66fc99e Initial load
duke
parents:
diff changeset
4369 which objects are visited nor does it influence whether other callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
4370 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
4371 However, the
a61af66fc99e Initial load
duke
parents:
diff changeset
4372 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4373 returned by <functionlink id="jvmtiHeapReferenceCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4374 do determine if the objects referenced by the
a61af66fc99e Initial load
duke
parents:
diff changeset
4375 current object as visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4376 The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4377 and <paramlink id="klass"/> provided as parameters to this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4378 do not control which objects are visited but they do control which
a61af66fc99e Initial load
duke
parents:
diff changeset
4379 objects and primitive values are reported by the callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4380 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
4381 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4382 is set to the array of bytes class, then only arrays of byte will be
a61af66fc99e Initial load
duke
parents:
diff changeset
4383 reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4384 The table below summarizes this:
a61af66fc99e Initial load
duke
parents:
diff changeset
4385 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4386 <table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4387 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4388 <th/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4389 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4390 Controls objects visited
a61af66fc99e Initial load
duke
parents:
diff changeset
4391 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4392 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4393 Controls objects reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4394 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4395 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4396 Controls primitives reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4397 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4398 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4399 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4400 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4401 the
a61af66fc99e Initial load
duke
parents:
diff changeset
4402 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4403 returned by <functionlink id="jvmtiHeapReferenceCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4404 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4405 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4406 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4407 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4408 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4409 <b>Yes</b>, since visits are controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
4410 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4411 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4412 <b>Yes</b>, since visits are controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
4413 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4414 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4415 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4416 <th align="left">
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4417 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4418 in <paramlink id="callbacks"/> set
a61af66fc99e Initial load
duke
parents:
diff changeset
4419 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4420 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4421 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4422 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4423 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4424 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4425 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4426 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4427 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4428 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4429 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4430 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4431 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4432 <paramlink id="heap_filter"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4433 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4434 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4435 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4436 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4437 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4438 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4439 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4440 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4441 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4442 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4443 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4444 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4445 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4446 <paramlink id="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4447 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4448 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4449 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4450 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4451 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4452 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4453 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4454 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4455 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4456 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4457 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4458 </table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4459 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4460 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
4461 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
4462 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
4463 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
4464 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
4465 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
4466 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
4467 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
4468 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4469 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4470 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4471 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4472 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4473 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4474 <param id="heap_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
4475 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4476 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4477 This bit vector of
a61af66fc99e Initial load
duke
parents:
diff changeset
4478 <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4479 restricts the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
4480 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4481 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4482 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4483 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
4484 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4485 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4486 <nullok>callbacks are not limited to instances of a particular
a61af66fc99e Initial load
duke
parents:
diff changeset
4487 class</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4488 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4489 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4490 Callbacks are only reported when the object is an instance of
a61af66fc99e Initial load
duke
parents:
diff changeset
4491 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4492 Objects which are instances of a subclass of <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4493 are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4494 If <code>klass</code> is an interface, no objects are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4495 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4496 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4497 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4498 <param id="initial_object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4499 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4500 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4501 <nullok>references are followed from the heap roots</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4502 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4503 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4504 The object to follow
a61af66fc99e Initial load
duke
parents:
diff changeset
4505 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4506 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4507 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
4508 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4509 <struct>jvmtiHeapCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4510 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4511 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4512 Structure defining the set of callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
4513 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4514 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4515 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4516 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4517 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4518 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4519 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4520 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4521 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4522 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4523 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4524 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4525 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4526 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
4527 <paramlink id="klass"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4528 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4529 <error id="JVMTI_ERROR_INVALID_OBJECT">
a61af66fc99e Initial load
duke
parents:
diff changeset
4530 <paramlink id="initial_object"/> is not a valid object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4531 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4532 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4533 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4534
a61af66fc99e Initial load
duke
parents:
diff changeset
4535
a61af66fc99e Initial load
duke
parents:
diff changeset
4536 <function id="IterateThroughHeap" num="116" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4537 <synopsis>Iterate Through Heap</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4538 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4539 Initiate an iteration over all objects in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
4540 This includes both reachable and
a61af66fc99e Initial load
duke
parents:
diff changeset
4541 unreachable objects. Objects are visited in no particular order.
a61af66fc99e Initial load
duke
parents:
diff changeset
4542 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4543 Heap objects are reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4544 callback function <functionlink id="jvmtiHeapIterationCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4545 References between objects are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4546 If only reachable objects are desired, or if object reference information
a61af66fc99e Initial load
duke
parents:
diff changeset
4547 is needed, use <functionlink id="FollowReferences"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4548 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4549 This function can also be used to examine primitive (non-object) values.
a61af66fc99e Initial load
duke
parents:
diff changeset
4550 The primitive value of an array or String
a61af66fc99e Initial load
duke
parents:
diff changeset
4551 is reported after the object has been visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4552 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4553 <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4554 <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4555 A primitive field
a61af66fc99e Initial load
duke
parents:
diff changeset
4556 is reported after the object with that field is visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4557 it is reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4558 callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4559 <functionlink id="jvmtiPrimitiveFieldCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4560 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4561 Unless the iteration is aborted by the
a61af66fc99e Initial load
duke
parents:
diff changeset
4562 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4563 returned by a callback, all objects in the heap are visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4564 Whether a callback is provided or is <code>NULL</code> only determines
a61af66fc99e Initial load
duke
parents:
diff changeset
4565 whether the callback will be invoked, it does not influence
a61af66fc99e Initial load
duke
parents:
diff changeset
4566 which objects are visited nor does it influence whether other callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
4567 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
4568 The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4569 and <paramlink id="klass"/> provided as parameters to this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4570 do not control which objects are visited but they do control which
a61af66fc99e Initial load
duke
parents:
diff changeset
4571 objects and primitive values are reported by the callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4572 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
4573 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4574 is set to the array of bytes class, then only arrays of byte will be
a61af66fc99e Initial load
duke
parents:
diff changeset
4575 reported. The table below summarizes this (contrast this with
a61af66fc99e Initial load
duke
parents:
diff changeset
4576 <functionlink id="FollowReferences"/>):
a61af66fc99e Initial load
duke
parents:
diff changeset
4577 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4578 <table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4579 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4580 <th/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4581 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4582 Controls objects visited
a61af66fc99e Initial load
duke
parents:
diff changeset
4583 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4584 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4585 Controls objects reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4586 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4587 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4588 Controls primitives reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4589 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4590 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4591 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4592 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4593 the
a61af66fc99e Initial load
duke
parents:
diff changeset
4594 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4595 returned by <functionlink id="jvmtiHeapIterationCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4596 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4597 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4598 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4599 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4600 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4601 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4602 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4603 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4604 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4605 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4606 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4607 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4608 <th align="left">
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
4609 <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
4610 in <paramlink id="callbacks"/> set
a61af66fc99e Initial load
duke
parents:
diff changeset
4611 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4612 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4613 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4614 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4615 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4616 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4617 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4618 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4619 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4620 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4621 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4622 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4623 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4624 <paramlink id="heap_filter"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4625 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4626 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4627 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4628 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4629 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4630 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4631 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4632 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4633 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4634 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4635 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4636 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4637 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4638 <paramlink id="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4639 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4640 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4641 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4642 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4643 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4644 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4645 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4646 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4647 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4648 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4649 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4650 </table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4651 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4652 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
4653 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
4654 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
4655 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
4656 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
4657 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
4658 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
4659 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
4660 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4661 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4662 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4663 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4664 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4665 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4666 <param id="heap_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
4667 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4668 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4669 This bit vector of
a61af66fc99e Initial load
duke
parents:
diff changeset
4670 <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4671 restricts the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
4672 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4673 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4674 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4675 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
4676 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4677 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4678 <nullok>callbacks are not limited to instances of a particular class</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4679 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4680 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4681 Callbacks are only reported when the object is an instance of
a61af66fc99e Initial load
duke
parents:
diff changeset
4682 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4683 Objects which are instances of a subclass of <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4684 are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4685 If <code>klass</code> is an interface, no objects are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4686 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4687 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4688 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4689 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
4690 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4691 <struct>jvmtiHeapCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4692 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4693 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4694 Structure defining the set callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
4695 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4696 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4697 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4698 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4699 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4700 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4701 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4702 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4703 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4704 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4705 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4706 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4707 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4708 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
4709 <paramlink id="klass"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4710 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4711 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4712 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4713
a61af66fc99e Initial load
duke
parents:
diff changeset
4714 <function id="GetTag" phase="start" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
4715 <synopsis>Get Tag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4716 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4717 Retrieve the tag associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4718 The tag is a long value typically used to store a
a61af66fc99e Initial load
duke
parents:
diff changeset
4719 unique identifier or pointer to object information.
a61af66fc99e Initial load
duke
parents:
diff changeset
4720 The tag is set with
a61af66fc99e Initial load
duke
parents:
diff changeset
4721 <functionlink id="SetTag"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4722 Objects for which no tags have been set return a
a61af66fc99e Initial load
duke
parents:
diff changeset
4723 tag value of zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
4724 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4725 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4726 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4727 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4728 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4729 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4730 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4731 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4732 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4733 The object whose tag is to be retrieved.
a61af66fc99e Initial load
duke
parents:
diff changeset
4734 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4735 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4736 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4737 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4738 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4739 On return, the referenced long is set to the value
a61af66fc99e Initial load
duke
parents:
diff changeset
4740 of the tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
4741 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4742 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4743 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4744 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4745 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4746 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4747
a61af66fc99e Initial load
duke
parents:
diff changeset
4748 <function id="SetTag" phase="start" num="107">
a61af66fc99e Initial load
duke
parents:
diff changeset
4749 <synopsis>Set Tag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4750 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4751 Set the tag associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4752 The tag is a long value typically used to store a
a61af66fc99e Initial load
duke
parents:
diff changeset
4753 unique identifier or pointer to object information.
a61af66fc99e Initial load
duke
parents:
diff changeset
4754 The tag is visible with
a61af66fc99e Initial load
duke
parents:
diff changeset
4755 <functionlink id="GetTag"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4756 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4757 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4758 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4759 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4760 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4761 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4762 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4763 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4764 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4765 The object whose tag is to be set.
a61af66fc99e Initial load
duke
parents:
diff changeset
4766 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4767 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4768 <param id="tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4769 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4771 The new value of the tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
4772 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4773 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4774 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4775 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4776 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4777 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4778
a61af66fc99e Initial load
duke
parents:
diff changeset
4779 <function id="GetObjectsWithTags" num="114">
a61af66fc99e Initial load
duke
parents:
diff changeset
4780 <synopsis>Get Objects With Tags</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4781 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4782 Return objects in the heap with the specified tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4783 The format is parallel arrays of objects and tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4784 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4785 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4786 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4787 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4788 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4789 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4790 <param id="tag_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4791 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4792 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4793 Number of tags to scan for.
a61af66fc99e Initial load
duke
parents:
diff changeset
4794 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4795 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4796 <param id="tags">
a61af66fc99e Initial load
duke
parents:
diff changeset
4797 <inbuf incount="tag_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4798 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4799 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4800 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4801 Scan for objects with these tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4802 Zero is not permitted in this array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4803 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4804 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4805 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4806 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4807 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4808 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4809 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4810 Return the number of objects with any of the tags
a61af66fc99e Initial load
duke
parents:
diff changeset
4811 in <paramlink id="tags"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4812 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4813 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4814 <param id="object_result_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4815 <allocbuf outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4816 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4817 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4818 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4819 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4820 Returns the array of objects with any of the tags
a61af66fc99e Initial load
duke
parents:
diff changeset
4821 in <paramlink id="tags"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4822 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4823 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4824 <param id="tag_result_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4825 <allocbuf outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4826 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4827 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4828 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4829 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4830 For each object in <paramlink id="object_result_ptr"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4831 return the tag at the corresponding index.
a61af66fc99e Initial load
duke
parents:
diff changeset
4832 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4833 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4834 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4835 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4836 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
4837 Zero is present in <paramlink id="tags"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4838 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4839 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4840 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4841
a61af66fc99e Initial load
duke
parents:
diff changeset
4842 <function id="ForceGarbageCollection" num="108">
a61af66fc99e Initial load
duke
parents:
diff changeset
4843 <synopsis>Force Garbage Collection</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4844 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4845 Force the VM to perform a garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
4846 The garbage collection is as complete as possible.
a61af66fc99e Initial load
duke
parents:
diff changeset
4847 This function does not cause finalizers to be run.
a61af66fc99e Initial load
duke
parents:
diff changeset
4848 This function does not return until the garbage collection
a61af66fc99e Initial load
duke
parents:
diff changeset
4849 is finished.
a61af66fc99e Initial load
duke
parents:
diff changeset
4850 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4851 Although garbage collection is as complete
a61af66fc99e Initial load
duke
parents:
diff changeset
4852 as possible there is no guarantee that all
a61af66fc99e Initial load
duke
parents:
diff changeset
4853 <eventlink id="ObjectFree"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4854 events will have been
a61af66fc99e Initial load
duke
parents:
diff changeset
4855 sent by the time that this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4856 returns. In particular, an object may be
a61af66fc99e Initial load
duke
parents:
diff changeset
4857 prevented from being freed because it
a61af66fc99e Initial load
duke
parents:
diff changeset
4858 is awaiting finalization.
a61af66fc99e Initial load
duke
parents:
diff changeset
4859 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4860 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4861 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4862 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4863 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4864 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4865 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4866 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4867 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4868
a61af66fc99e Initial load
duke
parents:
diff changeset
4869
a61af66fc99e Initial load
duke
parents:
diff changeset
4870 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
4871
a61af66fc99e Initial load
duke
parents:
diff changeset
4872 <category id="Heap_1_0" label="Heap (1.0)">
a61af66fc99e Initial load
duke
parents:
diff changeset
4873 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
4874 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4875 These functions and data types were introduced in the original
a61af66fc99e Initial load
duke
parents:
diff changeset
4876 <jvmti/> version 1.0 and have been superseded by more
a61af66fc99e Initial load
duke
parents:
diff changeset
4877 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4878 <internallink id="Heap"><b>powerful and flexible versions</b></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4879 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4880 which:
a61af66fc99e Initial load
duke
parents:
diff changeset
4881 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4882 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4883 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4884 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4885 Allow access to primitive values (the value of Strings, arrays,
a61af66fc99e Initial load
duke
parents:
diff changeset
4886 and primitive fields)
a61af66fc99e Initial load
duke
parents:
diff changeset
4887 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4888 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4889 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4890 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4891 Allow the tag of the referrer to be set, thus enabling more
a61af66fc99e Initial load
duke
parents:
diff changeset
4892 efficient localized reference graph building
a61af66fc99e Initial load
duke
parents:
diff changeset
4893 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4894 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4895 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4896 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4897 Provide more extensive filtering abilities
a61af66fc99e Initial load
duke
parents:
diff changeset
4898 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4899 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4900 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4901 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4902 Are extensible, allowing their abilities to grow in future versions of <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4903 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4904 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4905 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4906 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4907 <b>Please use the </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4908 <internallink id="Heap"><b>current Heap functions</b></internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4909 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4910 <constants id="jvmtiHeapObjectFilter" label="Heap Object Filter Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4911 <constant id="JVMTI_HEAP_OBJECT_TAGGED" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4912 Tagged objects only.
a61af66fc99e Initial load
duke
parents:
diff changeset
4913 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4914 <constant id="JVMTI_HEAP_OBJECT_UNTAGGED" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4915 Untagged objects only.
a61af66fc99e Initial load
duke
parents:
diff changeset
4916 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4917 <constant id="JVMTI_HEAP_OBJECT_EITHER" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
4918 Either tagged or untagged objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
4919 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4920 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
4921
a61af66fc99e Initial load
duke
parents:
diff changeset
4922 <constants id="jvmtiHeapRootKind" label="Heap Root Kind Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4923 <constant id="JVMTI_HEAP_ROOT_JNI_GLOBAL" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4924 JNI global reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4925 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4926 <constant id="JVMTI_HEAP_ROOT_SYSTEM_CLASS" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4927 System class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4928 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4929 <constant id="JVMTI_HEAP_ROOT_MONITOR" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
4930 Monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
4931 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4932 <constant id="JVMTI_HEAP_ROOT_STACK_LOCAL" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
4933 Stack local.
a61af66fc99e Initial load
duke
parents:
diff changeset
4934 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4935 <constant id="JVMTI_HEAP_ROOT_JNI_LOCAL" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
4936 JNI local reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4937 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4938 <constant id="JVMTI_HEAP_ROOT_THREAD" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
4939 Thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
4940 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4941 <constant id="JVMTI_HEAP_ROOT_OTHER" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
4942 Other.
a61af66fc99e Initial load
duke
parents:
diff changeset
4943 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4944 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
4945
a61af66fc99e Initial load
duke
parents:
diff changeset
4946 <constants id="jvmtiObjectReferenceKind" label="Object Reference Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4947 <constant id="JVMTI_REFERENCE_CLASS" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4948 Reference from an object to its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4949 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4950 <constant id="JVMTI_REFERENCE_FIELD" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4951 Reference from an object to the value of one of its instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
4952 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4953 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
4954 jvmtiObjectReferenceCallback</internallink> is the index of the
a61af66fc99e Initial load
duke
parents:
diff changeset
4955 the instance field. The index is based on the order of all the
a61af66fc99e Initial load
duke
parents:
diff changeset
4956 object's fields. This includes all fields of the directly declared
a61af66fc99e Initial load
duke
parents:
diff changeset
4957 static and instance fields in the class, and includes all fields (both
a61af66fc99e Initial load
duke
parents:
diff changeset
4958 public and private) fields declared in superclasses and superinterfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
4959 The index is thus calculated by summing the index of the field in the directly
a61af66fc99e Initial load
duke
parents:
diff changeset
4960 declared class (see <functionlink id="GetClassFields"/>), with the total
a61af66fc99e Initial load
duke
parents:
diff changeset
4961 number of fields (both public and private) declared in all superclasses
a61af66fc99e Initial load
duke
parents:
diff changeset
4962 and superinterfaces. The index starts at zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
4963 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4964 <constant id="JVMTI_REFERENCE_ARRAY_ELEMENT" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
4965 Reference from an array to one of its elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
4966 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4967 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
4968 jvmtiObjectReferenceCallback</internallink> is the array index.
a61af66fc99e Initial load
duke
parents:
diff changeset
4969 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4970 <constant id="JVMTI_REFERENCE_CLASS_LOADER" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
4971 Reference from a class to its class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
4972 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4973 <constant id="JVMTI_REFERENCE_SIGNERS" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
4974 Reference from a class to its signers array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4975 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4976 <constant id="JVMTI_REFERENCE_PROTECTION_DOMAIN" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
4977 Reference from a class to its protection domain.
a61af66fc99e Initial load
duke
parents:
diff changeset
4978 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4979 <constant id="JVMTI_REFERENCE_INTERFACE" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
4980 Reference from a class to one of its interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
4981 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4982 <constant id="JVMTI_REFERENCE_STATIC_FIELD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
4983 Reference from a class to the value of one of its static fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
4984 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4985 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
4986 jvmtiObjectReferenceCallback</internallink> is the index of the
a61af66fc99e Initial load
duke
parents:
diff changeset
4987 the static field. The index is based on the order of all the
a61af66fc99e Initial load
duke
parents:
diff changeset
4988 object's fields. This includes all fields of the directly declared
a61af66fc99e Initial load
duke
parents:
diff changeset
4989 static and instance fields in the class, and includes all fields (both
a61af66fc99e Initial load
duke
parents:
diff changeset
4990 public and private) fields declared in superclasses and superinterfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
4991 The index is thus calculated by summing the index of the field in the directly
a61af66fc99e Initial load
duke
parents:
diff changeset
4992 declared class (see <functionlink id="GetClassFields"/>), with the total
a61af66fc99e Initial load
duke
parents:
diff changeset
4993 number of fields (both public and private) declared in all superclasses
a61af66fc99e Initial load
duke
parents:
diff changeset
4994 and superinterfaces. The index starts at zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
4995 Note: this definition differs from that in the <jvmti/> 1.0 Specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
4996 <rationale>No known implementations used the 1.0 definition.</rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
4997 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4998 <constant id="JVMTI_REFERENCE_CONSTANT_POOL" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
4999 Reference from a class to a resolved entry in the constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
5000 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5001 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5002 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
5003 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
5004 <vmspec chapter="4.4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
5005 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5006 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5007
a61af66fc99e Initial load
duke
parents:
diff changeset
5008 <constants id="jvmtiIterationControl" label="Iteration Control Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
5009 <constant id="JVMTI_ITERATION_CONTINUE" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
5010 Continue the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5011 If this is a reference iteration, follow the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5012 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5013 <constant id="JVMTI_ITERATION_IGNORE" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
5014 Continue the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5015 If this is a reference iteration, ignore the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5016 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5017 <constant id="JVMTI_ITERATION_ABORT" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
5018 Abort the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5019 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5020 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5021 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5022
a61af66fc99e Initial load
duke
parents:
diff changeset
5023 <callback id="jvmtiHeapObjectCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5024 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5025 <synopsis>Heap Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5026 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5027 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5028 Describes (but does not pass in) an object in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
5029 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5030 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5031 or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5032 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5033 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5034 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5035 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5036 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5037 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5038 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5039 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5040 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5041 If the object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
5042 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5043 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5044 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5045 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5046 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5047 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5048 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5049 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5050 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5051 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5052 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5053 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5054 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5055 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5056 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5057 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5058 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5059 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5060 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5061 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5062 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5063 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5064 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5065 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5066 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5067 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5068 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5069
a61af66fc99e Initial load
duke
parents:
diff changeset
5070 <callback id="jvmtiHeapRootCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5071 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5072 <synopsis>Heap Root Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5073 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5074 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5075 Describes (but does not pass in) an object that is a root for the purposes
a61af66fc99e Initial load
duke
parents:
diff changeset
5076 of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5077 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5078 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5079 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5080 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5081 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5082 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5083 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5084 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5085 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5086 <param id="root_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5087 <enum>jvmtiHeapRootKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5088 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5089 The kind of heap root.
a61af66fc99e Initial load
duke
parents:
diff changeset
5090 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5091 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5092 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5093 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5094 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5095 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5096 If the object represents a runtime class, the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5097 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5098 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5099 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5100 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5101 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5102 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5103 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5104 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5105 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5106 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5107 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5108 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5109 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5110 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5111 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5112 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5113 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5114 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5115 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5116 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5117 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5118 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5119 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5120 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5121 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5122 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5123
a61af66fc99e Initial load
duke
parents:
diff changeset
5124 <callback id="jvmtiStackReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5125 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5126 <synopsis>Stack Reference Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5127 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5128 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5129 Describes (but does not pass in) an object on the stack that is a root for
a61af66fc99e Initial load
duke
parents:
diff changeset
5130 the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5131 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5132 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5133 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5134 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5135 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5136 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5137 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5138 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5139 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5140 <param id="root_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5141 <enum>jvmtiHeapRootKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5142 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5143 The kind of root (either <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5144 <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
5145 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5146 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5147 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5148 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5149 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5150 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5151 If the object represents a runtime class, the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5152 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5153 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5154 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5155 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5156 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5157 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5158 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5159 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
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="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5163 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5164 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5165 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5166 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5167 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5168 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5169 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5170 <param id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5171 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5172 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5173 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5174 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5175 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5176 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5177 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5178 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5179 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5180 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5181 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5182 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
5183 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5184 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5185 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5186 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5187 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5188 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5189 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5190 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5191 The slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5192 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5193 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5194 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5195 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5196 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5197 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5198 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5199 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5200 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5201 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5202
a61af66fc99e Initial load
duke
parents:
diff changeset
5203 <callback id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5204 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5205 <synopsis>Object Reference Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5206 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5207 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5208 Describes a reference from an object (the referrer) to another object
a61af66fc99e Initial load
duke
parents:
diff changeset
5209 (the referree).
a61af66fc99e Initial load
duke
parents:
diff changeset
5210 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5211 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5212 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5213 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5214 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5215 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5216 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5217 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5218 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5219 <param id="reference_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5220 <enum>jvmtiObjectReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5221 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5222 The type of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5223 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5224 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5225 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5226 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5227 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5228 The tag of the class of referree object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5229 If the referree object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
5230 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5231 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5232 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5233 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5234 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5235 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5236 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5237 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5238 Size of the referree object (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
5239 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5240 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5241 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5242 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5243 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5244 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5245 The referree object tag value, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5246 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5247 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5248 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5249 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5250 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5251 <param id="referrer_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5252 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5253 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5254 The tag of the referrer object, or zero if the referrer
a61af66fc99e Initial load
duke
parents:
diff changeset
5255 object is not tagged.
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="referrer_index">
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 For references of type <code>JVMTI_REFERENCE_FIELD</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5262 <code>JVMTI_REFERENCE_STATIC_FIELD</code> the index
a61af66fc99e Initial load
duke
parents:
diff changeset
5263 of the field in the referrer object. The index is based on the
a61af66fc99e Initial load
duke
parents:
diff changeset
5264 order of all the object's fields - see <internallink
a61af66fc99e Initial load
duke
parents:
diff changeset
5265 id="JVMTI_REFERENCE_FIELD">JVMTI_REFERENCE_FIELD</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5266 or <internallink
a61af66fc99e Initial load
duke
parents:
diff changeset
5267 id="JVMTI_REFERENCE_STATIC_FIELD">JVMTI_REFERENCE_STATIC_FIELD
a61af66fc99e Initial load
duke
parents:
diff changeset
5268 </internallink> for further description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5269 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5270 For references of type <code>JVMTI_REFERENCE_ARRAY_ELEMENT</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5271 the array index - see <internallink id="JVMTI_REFERENCE_ARRAY_ELEMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5272 JVMTI_REFERENCE_ARRAY_ELEMENT</internallink> for further description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5273 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5274 For references of type <code>JVMTI_REFERENCE_CONSTANT_POOL</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5275 the index into the constant pool of the class - see
a61af66fc99e Initial load
duke
parents:
diff changeset
5276 <internallink id="JVMTI_REFERENCE_CONSTANT_POOL">
a61af66fc99e Initial load
duke
parents:
diff changeset
5277 JVMTI_REFERENCE_CONSTANT_POOL</internallink> for further
a61af66fc99e Initial load
duke
parents:
diff changeset
5278 description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5279 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5280 For references of other kinds the <code>referrer_index</code> is
a61af66fc99e Initial load
duke
parents:
diff changeset
5281 <code>-1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5282 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5283 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5284 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5285 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5286 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5287 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5288 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5289 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5290 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5291 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5292
a61af66fc99e Initial load
duke
parents:
diff changeset
5293 <function id="IterateOverObjectsReachableFromObject" num="109">
a61af66fc99e Initial load
duke
parents:
diff changeset
5294 <synopsis>Iterate Over Objects Reachable From Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5295 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5296 This function iterates over all objects that are directly
a61af66fc99e Initial load
duke
parents:
diff changeset
5297 and indirectly reachable from the specified object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5298 For each object <i>A</i> (known
a61af66fc99e Initial load
duke
parents:
diff changeset
5299 as the referrer) with a reference to object <i>B</i> the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
5300 callback function is called to describe the object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5301 The callback is called exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
5302 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
5303 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5304 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
5305 These may be distinguished by the
a61af66fc99e Initial load
duke
parents:
diff changeset
5306 <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
5307 <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5308 The callback for an object will always occur after the callback for
a61af66fc99e Initial load
duke
parents:
diff changeset
5309 its referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5310 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5311 See <functionlink id="FollowReferences"/> for the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5312 references which are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
5313 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5314 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5315 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5316 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5317 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5318 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5319 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5320 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5321 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5322 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5323 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5324 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5325 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5326 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5327 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5328 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
5329 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5330 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5331 The object
a61af66fc99e Initial load
duke
parents:
diff changeset
5332 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5333 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5334 <param id="object_reference_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5335 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5336 <struct>jvmtiObjectReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5337 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5338 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5339 The callback to be called to describe each
a61af66fc99e Initial load
duke
parents:
diff changeset
5340 object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5341 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5342 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5343 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5344 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5345 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5346 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5347 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5348 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5349 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5350 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5351 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5352 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5353 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5354 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5355 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5356
a61af66fc99e Initial load
duke
parents:
diff changeset
5357 <function id="IterateOverReachableObjects" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
5358 <synopsis>Iterate Over Reachable Objects</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5359 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5360 This function iterates over the root objects and all objects that
a61af66fc99e Initial load
duke
parents:
diff changeset
5361 are directly and indirectly reachable from the root objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5362 The root objects comprise the set of system classes,
a61af66fc99e Initial load
duke
parents:
diff changeset
5363 JNI globals, references from thread stacks, and other objects used as roots
a61af66fc99e Initial load
duke
parents:
diff changeset
5364 for the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5365 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5366 For each root the <paramlink id="heap_root_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5367 or <paramlink id="stack_ref_callback"></paramlink> callback is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5368 An object can be a root object for more than one reason and in that case
a61af66fc99e Initial load
duke
parents:
diff changeset
5369 the appropriate callback is called for each reason.
a61af66fc99e Initial load
duke
parents:
diff changeset
5370 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5371 For each object reference the <paramlink id="object_ref_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5372 callback function is called to describe the object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5373 The callback is called exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
5374 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
5375 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5376 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
5377 These may be distinguished by the
a61af66fc99e Initial load
duke
parents:
diff changeset
5378 <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
5379 <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5380 The callback for an object will always occur after the callback for
a61af66fc99e Initial load
duke
parents:
diff changeset
5381 its referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5382 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5383 See <functionlink id="FollowReferences"/> for the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5384 references which are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
5385 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5386 Roots are always reported to the profiler before any object references
a61af66fc99e Initial load
duke
parents:
diff changeset
5387 are reported. In other words, the <paramlink id="object_ref_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5388 callback will not be called until the appropriate callback has been called
a61af66fc99e Initial load
duke
parents:
diff changeset
5389 for all roots. If the <paramlink id="object_ref_callback"></paramlink> callback is
a61af66fc99e Initial load
duke
parents:
diff changeset
5390 specified as <code>NULL</code> then this function returns after
a61af66fc99e Initial load
duke
parents:
diff changeset
5391 reporting the root objects to the profiler.
a61af66fc99e Initial load
duke
parents:
diff changeset
5392 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5393 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5394 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5395 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5396 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5397 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5398 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5399 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5400 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5401 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5402 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5403 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5404 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5405 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5406 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5407 <param id="heap_root_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5408 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5409 <struct>jvmtiHeapRootCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5410 <nullok>do not report heap roots</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5411 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5412 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5413 The callback function to be called for each heap root of type
a61af66fc99e Initial load
duke
parents:
diff changeset
5414 <code>JVMTI_HEAP_ROOT_JNI_GLOBAL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5415 <code>JVMTI_HEAP_ROOT_SYSTEM_CLASS</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5416 <code>JVMTI_HEAP_ROOT_MONITOR</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5417 <code>JVMTI_HEAP_ROOT_THREAD</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5418 <code>JVMTI_HEAP_ROOT_OTHER</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5419 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5420 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5421 <param id="stack_ref_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5422 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5423 <struct>jvmtiStackReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5424 <nullok>do not report stack references</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5425 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5426 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5427 The callback function to be called for each heap root of
a61af66fc99e Initial load
duke
parents:
diff changeset
5428 <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5429 <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5430 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5431 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5432 <param id="object_ref_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5433 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5434 <struct>jvmtiObjectReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5435 <nullok>do not follow references from the root objects</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5436 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5437 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5438 The callback function to be called for each object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5439 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5440 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5441 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5442 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5443 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5444 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5445 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5446 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5447 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5448 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5449 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5450 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5451 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5452 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5453 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5454
a61af66fc99e Initial load
duke
parents:
diff changeset
5455 <function id="IterateOverHeap" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
5456 <synopsis>Iterate Over Heap</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5457 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5458 Iterate over all objects in the heap. This includes both reachable and
a61af66fc99e Initial load
duke
parents:
diff changeset
5459 unreachable objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5460 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5461 The <paramlink id="object_filter"></paramlink> parameter indicates the
a61af66fc99e Initial load
duke
parents:
diff changeset
5462 objects for which the callback function is called. If this parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5463 is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5464 called for every object that is tagged. If the parameter is
a61af66fc99e Initial load
duke
parents:
diff changeset
5465 <code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5466 for objects that are not tagged. If the parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5467 is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
a61af66fc99e Initial load
duke
parents:
diff changeset
5468 called for every object in the heap, irrespective of whether it is
a61af66fc99e Initial load
duke
parents:
diff changeset
5469 tagged or not.
a61af66fc99e Initial load
duke
parents:
diff changeset
5470 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5471 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5472 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5473 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5474 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5475 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5476 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5477 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5478 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5479 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5480 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5481 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5482 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5483 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5484 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5485 <param id="object_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
5486 <enum>jvmtiHeapObjectFilter</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5487 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5488 Indicates the objects for which the callback function is called.
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="heap_object_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5492 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5493 <struct>jvmtiHeapObjectCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5494 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5495 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5496 The iterator function to be called for each
a61af66fc99e Initial load
duke
parents:
diff changeset
5497 object matching the <paramlink id="object_filter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5498 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5499 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5500 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5501 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5502 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5503 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5504 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5505 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5506 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5507 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5508 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5509 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5510 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5511 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5512 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5513
a61af66fc99e Initial load
duke
parents:
diff changeset
5514 <function id="IterateOverInstancesOfClass" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
5515 <synopsis>Iterate Over Instances Of Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5516 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5517 Iterate over all objects in the heap that are instances of the specified class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5518 This includes direct instances of the specified class and
a61af66fc99e Initial load
duke
parents:
diff changeset
5519 instances of all subclasses of the specified class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5520 This includes both reachable and unreachable objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5521 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5522 The <paramlink id="object_filter"></paramlink> parameter indicates the
a61af66fc99e Initial load
duke
parents:
diff changeset
5523 objects for which the callback function is called. If this parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5524 is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5525 called for every object that is tagged. If the parameter is
a61af66fc99e Initial load
duke
parents:
diff changeset
5526 <code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5527 called for objects that are not tagged. If the parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5528 is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
a61af66fc99e Initial load
duke
parents:
diff changeset
5529 called for every object in the heap, irrespective of whether it is
a61af66fc99e Initial load
duke
parents:
diff changeset
5530 tagged or not.
a61af66fc99e Initial load
duke
parents:
diff changeset
5531 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5532 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5533 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5534 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5535 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5536 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5537 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5538 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5539 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5540 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5541 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5542 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5543 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5544 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5545 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5546 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
5547 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5548 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5549 Iterate over objects of this class only.
a61af66fc99e Initial load
duke
parents:
diff changeset
5550 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5551 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5552 <param id="object_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
5553 <enum>jvmtiHeapObjectFilter</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5554 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5555 Indicates the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5556 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5557 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5558 <param id="heap_object_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5559 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5560 <struct>jvmtiHeapObjectCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5561 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5562 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5563 The iterator function to be called for each
a61af66fc99e Initial load
duke
parents:
diff changeset
5564 <paramlink id="klass"/> instance matching
a61af66fc99e Initial load
duke
parents:
diff changeset
5565 the <paramlink id="object_filter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5566 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5567 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5568 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5569 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5570 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5571 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5572 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5573 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5574 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5575 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5576 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5577 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5578 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5579 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5580 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5581
a61af66fc99e Initial load
duke
parents:
diff changeset
5582 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
5583
a61af66fc99e Initial load
duke
parents:
diff changeset
5584 <category id="local" label="Local Variable">
a61af66fc99e Initial load
duke
parents:
diff changeset
5585
a61af66fc99e Initial load
duke
parents:
diff changeset
5586 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5587 These functions are used to retrieve or set the value of a local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5588 The variable is identified by the depth of the frame containing its
a61af66fc99e Initial load
duke
parents:
diff changeset
5589 value and the variable's slot number within that frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5590 The mapping of variables to
a61af66fc99e Initial load
duke
parents:
diff changeset
5591 slot numbers can be obtained with the function
a61af66fc99e Initial load
duke
parents:
diff changeset
5592 <functionlink id="GetLocalVariableTable"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5593 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5594
a61af66fc99e Initial load
duke
parents:
diff changeset
5595 <function id="GetLocalObject" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
5596 <synopsis>Get Local Variable - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5597 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5598 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5599 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5600 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5601 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5602 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5603 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5604 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5605 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5606 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5607 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5608 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5609 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5610 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5611 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5612 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5613 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5614 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5615 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5616 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5617 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5618 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5619 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5620 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5621 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5622 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5623 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5624 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5625 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5626 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5627 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5628 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5629 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5630 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5631 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5632 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5633 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5634 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5635 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5636 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5637 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5638 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5639 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5640 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5641 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5642 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5643 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5644
2019
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5645 <function id="GetLocalInstance" num="155" since="1.2">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5646 <synopsis>Get Local Instance</synopsis>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5647 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5648 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
5649 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
5650 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
5651 native method frames, whereas <code>GetLocalObject()</code> would
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5652 return <code>JVMTI_ERROR_OPAQUE_FRAME</code> in those cases.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5653 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5654 <origin>new</origin>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5655 <capabilities>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5656 <required id="can_access_local_variables"></required>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5657 </capabilities>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5658 <parameters>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5659 <param id="thread">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5660 <jthread null="current" frame="frame"/>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5661 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5662 The thread of the frame containing the variable's value.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5663 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5664 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5665 <param id="depth">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5666 <jframeID thread="thread"/>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5667 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5668 The depth of the frame containing the variable's value.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5669 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5670 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5671 <param id="value_ptr">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5672 <outptr><jobject/></outptr>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5673 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5674 On return, points to the variable's value.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5675 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5676 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5677 </parameters>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5678 <errors>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5679 <error id="JVMTI_ERROR_INVALID_SLOT">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5680 If the specified frame is a static method frame.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5681 </error>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5682 </errors>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5683 </function>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
5684 <function id="GetLocalInt" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
5685 <synopsis>Get Local Variable - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5687 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5688 variable whose type is <code>int</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5689 <code>short</code>, <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5690 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5691 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5692 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5693 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5694 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5695 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5696 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5697 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5698 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5699 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5700 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5701 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5702 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5703 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5704 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5705 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5706 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5707 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5708 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5709 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5710 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5711 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5712 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5713 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5714 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5715 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5716 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5717 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5718 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5719 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5720 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5721 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5722 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5723 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5724 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5725 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5726 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5727 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5728 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5729 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5730 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5731 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5732 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5733 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5734 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5735 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5736 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5737
a61af66fc99e Initial load
duke
parents:
diff changeset
5738 <function id="GetLocalLong" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
5739 <synopsis>Get Local Variable - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5740 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5741 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5742 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5743 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5744 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5745 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5746 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5747 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5748 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5749 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5750 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5751 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5752 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5753 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5754 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5755 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5756 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5757 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5758 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5759 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5760 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5761 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5762 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5763 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5764 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5765 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5766 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5767 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5768 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5769 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5770 On return, points to 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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5774 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5775 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5776 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5777 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5778 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5779 The variable type is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5780 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5781 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5782 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5783 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5784 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5785 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5786
a61af66fc99e Initial load
duke
parents:
diff changeset
5787 <function id="GetLocalFloat" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
5788 <synopsis>Get Local Variable - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5789 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5790 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5791 variable whose type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5792 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5793 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5794 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5795 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5796 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5797 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5798 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5799 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5800 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5801 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5802 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5803 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5804 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5805 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5806 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5807 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5808 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5809 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5810 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5811 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5812 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5813 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5814 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5815 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5816 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5817 <outptr><jfloat/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5818 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5819 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5820 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5821 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5822 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5823 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5824 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5825 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5826 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5827 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5828 The variable type is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5829 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5830 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5831 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5832 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5833 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5834 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5835
a61af66fc99e Initial load
duke
parents:
diff changeset
5836 <function id="GetLocalDouble" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
5837 <synopsis>Get Local Variable - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5838 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5839 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5840 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5841 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5842 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5843 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5844 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5845 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5846 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5847 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5848 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5849 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5850 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5851 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5852 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5853 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5854 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5855 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5856 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5857 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5858 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5859 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5860 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5861 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5862 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5863 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5864 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5865 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5866 <outptr><jdouble/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5867 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5868 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5869 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5870 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5871 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5872 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5873 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5874 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5875 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5876 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5877 The variable type is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5878 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5879 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5880 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5881 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5882 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5883 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5884
a61af66fc99e Initial load
duke
parents:
diff changeset
5885 <function id="SetLocalObject" num="26">
a61af66fc99e Initial load
duke
parents:
diff changeset
5886 <synopsis>Set Local Variable - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5887 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5888 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5889 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5890 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5891 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5892 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5893 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5894 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5895 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5896 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5897 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5898 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5899 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5900 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5901 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5902 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5903 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5904 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5905 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5906 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5907 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5908 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5909 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5910 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5911 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5912 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5913 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5914 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
5915 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5916 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5917 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5918 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5919 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5920 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5921 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5922 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5923 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5924 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5925 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5926 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5927 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5928 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5929 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5930 The supplied <paramlink id="value"/> is not compatible
a61af66fc99e Initial load
duke
parents:
diff changeset
5931 with the variable type.
a61af66fc99e Initial load
duke
parents:
diff changeset
5932 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5933 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5934 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5935 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5936 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5937 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5938
a61af66fc99e Initial load
duke
parents:
diff changeset
5939 <function id="SetLocalInt" num="27">
a61af66fc99e Initial load
duke
parents:
diff changeset
5940 <synopsis>Set Local Variable - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5941 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5942 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5943 variable whose type is <code>int</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5944 <code>short</code>, <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5945 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5946 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5947 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5948 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5949 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5950 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5951 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5952 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5953 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5954 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5955 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5956 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5957 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5958 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5959 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5960 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5961 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5962 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5963 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5964 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5965 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5966 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5967 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5968 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5969 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5970 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
5971 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5972 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5973 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5974 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5975 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5976 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5977 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5978 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5979 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5980 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5981 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5982 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5983 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5984 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5985 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5986 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5987 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5988 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5989 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5990 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5991 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5992
a61af66fc99e Initial load
duke
parents:
diff changeset
5993 <function id="SetLocalLong" num="28">
a61af66fc99e Initial load
duke
parents:
diff changeset
5994 <synopsis>Set Local Variable - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5995 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5996 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5997 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5998 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5999 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6000 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6001 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6002 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6003 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6004 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6005 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6006 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6007 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6008 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6009 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6010 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6011 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6012 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6013 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6014 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6015 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6016 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6017 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6018 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6019 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6020 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6021 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6022 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6023 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6024 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6025 The new value for the variable.
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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6029 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6030 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6031 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6032 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6033 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6034 The variable type is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6035 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6036 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6037 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6038 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6039 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6040 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6041
a61af66fc99e Initial load
duke
parents:
diff changeset
6042 <function id="SetLocalFloat" num="29">
a61af66fc99e Initial load
duke
parents:
diff changeset
6043 <synopsis>Set Local Variable - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6044 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6045 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6046 variable whose type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6047 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6048 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6049 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6050 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6051 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6052 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6053 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6054 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6055 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6056 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6057 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6058 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6059 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6060 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6061 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6062 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6063 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6064 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6065 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6066 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6067 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6068 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6069 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6070 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6071 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6072 <jfloat/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6073 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6074 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6075 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6076 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6077 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6078 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6079 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6080 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6081 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6082 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6083 The variable type is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6084 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6085 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6086 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6087 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6088 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6089 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6090
a61af66fc99e Initial load
duke
parents:
diff changeset
6091 <function id="SetLocalDouble" num="30">
a61af66fc99e Initial load
duke
parents:
diff changeset
6092 <synopsis>Set Local Variable - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6093 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6094 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6095 variable whose type is <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6096 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6097 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6098 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6099 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6100 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6101 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6102 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6103 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6104 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6105 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6106 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6107 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6108 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6109 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6110 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6111 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6112 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6113 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6114 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6115 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6116 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6117 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6118 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6119 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6120 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6121 <jdouble/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6122 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6123 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6124 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6125 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6126 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6127 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6128 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6129 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6130 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6131 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6132 The variable type is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6133 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6134 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6135 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6136 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6137 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6138 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6139 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6140
a61af66fc99e Initial load
duke
parents:
diff changeset
6141 <category id="breakpointCategory" label="Breakpoint">
a61af66fc99e Initial load
duke
parents:
diff changeset
6142
a61af66fc99e Initial load
duke
parents:
diff changeset
6143 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6144 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6145
a61af66fc99e Initial load
duke
parents:
diff changeset
6146 <function id="SetBreakpoint" num="38">
a61af66fc99e Initial load
duke
parents:
diff changeset
6147 <synopsis>Set Breakpoint</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6148 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6149 Set a breakpoint at the instruction indicated by
a61af66fc99e Initial load
duke
parents:
diff changeset
6150 <code>method</code> and <code>location</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6151 An instruction can only have one breakpoint.
a61af66fc99e Initial load
duke
parents:
diff changeset
6152 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6153 Whenever the designated instruction is about to be executed, a
a61af66fc99e Initial load
duke
parents:
diff changeset
6154 <eventlink id="Breakpoint"></eventlink> event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
6155 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6156 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6157 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6158 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6159 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6160 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6161 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6162 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6163 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6164 The class in which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6165 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6166 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6167 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
6168 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6169 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6170 The method in which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6171 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6172 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6173 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
6174 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6175 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6176 the index of the instruction at which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6177
a61af66fc99e Initial load
duke
parents:
diff changeset
6178 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6179 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6180 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6181 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6182 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6183 The designated bytecode already has a breakpoint.
a61af66fc99e Initial load
duke
parents:
diff changeset
6184 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6185 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6186 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6187
a61af66fc99e Initial load
duke
parents:
diff changeset
6188 <function id="ClearBreakpoint" num="39">
a61af66fc99e Initial load
duke
parents:
diff changeset
6189 <synopsis>Clear Breakpoint</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6190 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6191 Clear the breakpoint at the bytecode indicated by
a61af66fc99e Initial load
duke
parents:
diff changeset
6192 <code>method</code> and <code>location</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6193 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6194 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6195 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6196 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6197 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6198 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6199 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6200 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6201 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6202 The class in which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6203 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6204 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6205 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
6206 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6207 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6208 The method in which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6209 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6210 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6211 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
6212 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6213 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6214 the index of the instruction at which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6215 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6216 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6217 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6218 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6219 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6220 There's no breakpoint at the designated bytecode.
a61af66fc99e Initial load
duke
parents:
diff changeset
6221 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6222 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6223 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6224
a61af66fc99e Initial load
duke
parents:
diff changeset
6225 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6226
a61af66fc99e Initial load
duke
parents:
diff changeset
6227 <category id="fieldWatch" label="Watched Field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6228
a61af66fc99e Initial load
duke
parents:
diff changeset
6229 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6230 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6231
a61af66fc99e Initial load
duke
parents:
diff changeset
6232 <function id="SetFieldAccessWatch" num="41">
a61af66fc99e Initial load
duke
parents:
diff changeset
6233 <synopsis>Set Field Access Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6234 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6235 Generate a <eventlink id="FieldAccess"></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
6236 when the field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6237 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6238 <code>field</code> is about to be accessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
6239 An event will be generated for each access of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
6240 until it is canceled with
a61af66fc99e Initial load
duke
parents:
diff changeset
6241 <functionlink id="ClearFieldAccessWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6242 Field accesses from Java programming language code or from JNI code are watched,
a61af66fc99e Initial load
duke
parents:
diff changeset
6243 fields modified by other means are not watched.
a61af66fc99e Initial load
duke
parents:
diff changeset
6244 Note that <jvmti/> users should be aware that their own field accesses
a61af66fc99e Initial load
duke
parents:
diff changeset
6245 will trigger the watch.
a61af66fc99e Initial load
duke
parents:
diff changeset
6246 A field can only have one field access watch set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6247 Modification of a field is not considered an access--use
a61af66fc99e Initial load
duke
parents:
diff changeset
6248 <functionlink id="SetFieldModificationWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
6249 to monitor modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6250 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6251 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6252 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6253 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6254 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6255 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6256 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6257 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6258 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6259 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6260 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6261 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6262 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6263 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6264 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6265 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6266
a61af66fc99e Initial load
duke
parents:
diff changeset
6267 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6268 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6269 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6270 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6271 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6272 The designated field is already being watched for accesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
6273 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6274 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6275 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6276
a61af66fc99e Initial load
duke
parents:
diff changeset
6277 <function id="ClearFieldAccessWatch" num="42">
a61af66fc99e Initial load
duke
parents:
diff changeset
6278 <synopsis>Clear Field Access Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6279 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6280 Cancel a field access watch previously set by
a61af66fc99e Initial load
duke
parents:
diff changeset
6281 <functionlink id="SetFieldAccessWatch"></functionlink>, on the
a61af66fc99e Initial load
duke
parents:
diff changeset
6282 field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6283 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6284 <code>field</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6285 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6286 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6287 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6288 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6289 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6290 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6291 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6292 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6293 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6294 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6295 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6296 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6297 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6298 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6299 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6300 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6301
a61af66fc99e Initial load
duke
parents:
diff changeset
6302 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6303 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6304 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6305 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6306 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6307 The designated field is not being watched for accesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
6308 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6309 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6310 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6311
a61af66fc99e Initial load
duke
parents:
diff changeset
6312 <function id="SetFieldModificationWatch" num="43">
a61af66fc99e Initial load
duke
parents:
diff changeset
6313 <synopsis>Set Field Modification Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6314 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6315 Generate a <eventlink id="FieldModification"></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
6316 when the field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6317 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6318 <code>field</code> is about to be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
6319 An event will be generated for each modification of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
6320 until it is canceled with
a61af66fc99e Initial load
duke
parents:
diff changeset
6321 <functionlink id="ClearFieldModificationWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6322 Field modifications from Java programming language code or from JNI code are watched,
a61af66fc99e Initial load
duke
parents:
diff changeset
6323 fields modified by other means are not watched.
a61af66fc99e Initial load
duke
parents:
diff changeset
6324 Note that <jvmti/> users should be aware that their own field modifications
a61af66fc99e Initial load
duke
parents:
diff changeset
6325 will trigger the watch.
a61af66fc99e Initial load
duke
parents:
diff changeset
6326 A field can only have one field modification watch set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6327 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6328 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6329 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6330 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6331 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6332 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6333 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6334 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6335 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6336 The class containing the field to watch
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 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6340 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6341 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6342 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6343
a61af66fc99e Initial load
duke
parents:
diff changeset
6344 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6345 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6346 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6347 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6348 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6349 The designated field is already being watched for modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6350 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6351 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6352 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6353
a61af66fc99e Initial load
duke
parents:
diff changeset
6354 <function id="ClearFieldModificationWatch" num="44">
a61af66fc99e Initial load
duke
parents:
diff changeset
6355 <synopsis>Clear Field Modification Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6356 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6357
a61af66fc99e Initial load
duke
parents:
diff changeset
6358 Cancel a field modification watch previously set by
a61af66fc99e Initial load
duke
parents:
diff changeset
6359 <functionlink id="SetFieldModificationWatch"></functionlink>, on the
a61af66fc99e Initial load
duke
parents:
diff changeset
6360 field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6361 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6362 <code>field</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6363 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6364 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6365 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6366 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6367 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6368 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6369 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6370 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6371 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6372 The class containing the field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6373 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6374 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6375 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6376 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6377 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6378 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6379
a61af66fc99e Initial load
duke
parents:
diff changeset
6380 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6381 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6382 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6383 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6384 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6385 The designated field is not being watched for modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6386 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6387 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6388 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6389 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6390
a61af66fc99e Initial load
duke
parents:
diff changeset
6391 <category id="class" label="Class">
a61af66fc99e Initial load
duke
parents:
diff changeset
6392
a61af66fc99e Initial load
duke
parents:
diff changeset
6393 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6394 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6395
a61af66fc99e Initial load
duke
parents:
diff changeset
6396 <function id="GetLoadedClasses" jkernel="yes" num="78">
a61af66fc99e Initial load
duke
parents:
diff changeset
6397 <synopsis>Get Loaded Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6398 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6399 Return an array of all classes loaded in the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
6400 The number of classes in the array is returned via
a61af66fc99e Initial load
duke
parents:
diff changeset
6401 <code>class_count_ptr</code>, and the array itself via
a61af66fc99e Initial load
duke
parents:
diff changeset
6402 <code>classes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6403 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6404 Array classes of all types (including arrays of primitive types) are
a61af66fc99e Initial load
duke
parents:
diff changeset
6405 included in the returned list. Primitive classes (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
6406 <code>java.lang.Integer.TYPE</code>) are <i>not</i> included in this list.
a61af66fc99e Initial load
duke
parents:
diff changeset
6407 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6408 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6409 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6410 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6411 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6412 <param id="class_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6413 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6414 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6415 On return, points to the number of classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
6416 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6417 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6418 <param id="classes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6419 <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6420 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6421 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
6422 for each class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6423 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6424 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6425 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6426 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6427 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6428 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6429
a61af66fc99e Initial load
duke
parents:
diff changeset
6430 <function id="GetClassLoaderClasses" jkernel="yes" num="79">
a61af66fc99e Initial load
duke
parents:
diff changeset
6431 <synopsis>Get Classloader Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6432 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6433 Returns an array of those classes for which this class loader has
a61af66fc99e Initial load
duke
parents:
diff changeset
6434 been recorded as an initiating loader. Each
a61af66fc99e Initial load
duke
parents:
diff changeset
6435 class in the returned array was created by this class loader,
a61af66fc99e Initial load
duke
parents:
diff changeset
6436 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
6437 See <vmspec chapter="5.3"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6438 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6439 For JDK version 1.1 implementations that don't
a61af66fc99e Initial load
duke
parents:
diff changeset
6440 recognize the distinction between initiating and defining class loaders,
a61af66fc99e Initial load
duke
parents:
diff changeset
6441 this function should return all classes loaded in the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
6442 The number of classes in the array is returned via
a61af66fc99e Initial load
duke
parents:
diff changeset
6443 <code>class_count_ptr</code>, and the array itself via
a61af66fc99e Initial load
duke
parents:
diff changeset
6444 <code>classes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6445 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6446 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6447 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6448 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6449 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6450 <param id="initiating_loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
6451 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
6452 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6453 <nullok>the classes initiated by the bootstrap loader will be returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6454 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
6455 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6456 An initiating class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
6457 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6458 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6459 <param id="class_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6460 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6461 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6462 On return, points to the number of classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
6463 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6464 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6465 <param id="classes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6466 <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6467 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6468 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
6469 for each class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6470 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6471 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6472 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6473 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6474 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6475 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6476
a61af66fc99e Initial load
duke
parents:
diff changeset
6477 <function id="GetClassSignature" phase="start" num="48">
a61af66fc99e Initial load
duke
parents:
diff changeset
6478 <synopsis>Get Class Signature</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6479 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6480 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
6481 <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
6482 type signature</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
6483 and the generic signature of the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6484 For example, <code>java.util.List</code> is <code>"Ljava/util/List;"</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6485 and <code>int[]</code> is <code>"[I"</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6486 The returned name for primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6487 is the type signature character of the corresponding primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
6488 For example, <code>java.lang.Integer.TYPE</code> is <code>"I"</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6489 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6490 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6491 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6492 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6493 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6494 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6495 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6496 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6497 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6498 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6499 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6500 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6501 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6502 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6503 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6504 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6505 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6506 On return, points to the JNI type signature of the class, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6507 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6508 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6509 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6510 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6511 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6512 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6513 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6514 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6515 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6516 On return, points to the generic signature of the class, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6517 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6518 If there is no generic signature attribute for the class, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
6519 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6520 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6521 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6522 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6523 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6524 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6525 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6526
a61af66fc99e Initial load
duke
parents:
diff changeset
6527 <function id="GetClassStatus" phase="start" num="49">
a61af66fc99e Initial load
duke
parents:
diff changeset
6528 <synopsis>Get Class Status</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6529 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6530 Get the status of the class. Zero or more of the following bits can be
a61af66fc99e Initial load
duke
parents:
diff changeset
6531 set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6532 <constants id="jvmtiClassStatus" label="Class Status Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
6533 <constant id="JVMTI_CLASS_STATUS_VERIFIED" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6534 Class bytecodes have been verified
a61af66fc99e Initial load
duke
parents:
diff changeset
6535 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6536 <constant id="JVMTI_CLASS_STATUS_PREPARED" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
6537 Class preparation is complete
a61af66fc99e Initial load
duke
parents:
diff changeset
6538 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6539 <constant id="JVMTI_CLASS_STATUS_INITIALIZED" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
6540 Class initialization is complete. Static initializer has been run.
a61af66fc99e Initial load
duke
parents:
diff changeset
6541 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6542 <constant id="JVMTI_CLASS_STATUS_ERROR" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
6543 Error during initialization makes class unusable
a61af66fc99e Initial load
duke
parents:
diff changeset
6544 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6545 <constant id="JVMTI_CLASS_STATUS_ARRAY" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
6546 Class is an array. If set, all other bits are zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
6547 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6548 <constant id="JVMTI_CLASS_STATUS_PRIMITIVE" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
6549 Class is a primitive class (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6550 If set, all other bits are zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
6551 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6552 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
6553 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6554 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6555 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6556 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6557 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6558 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6559 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6560 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6561 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6562 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6563 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6564 <param id="status_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6565 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6566 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6567 On return, points to the current state of this class as one or
a61af66fc99e Initial load
duke
parents:
diff changeset
6568 more of the <internallink id="jvmtiClassStatus">class status flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6569 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6570 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6571 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6572 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6573 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6574 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6575
a61af66fc99e Initial load
duke
parents:
diff changeset
6576 <function id="GetSourceFileName" phase="start" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
6577 <synopsis>Get Source File Name</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6578 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6579 For the class indicated by <code>klass</code>, return the source file
a61af66fc99e Initial load
duke
parents:
diff changeset
6580 name via <code>source_name_ptr</code>. The returned string
a61af66fc99e Initial load
duke
parents:
diff changeset
6581 is a file name only and never contains a directory name.
a61af66fc99e Initial load
duke
parents:
diff changeset
6582 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6583 For primitive classes (for example, <code>java.lang.Integer.TYPE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
6584 and for arrays this function returns
a61af66fc99e Initial load
duke
parents:
diff changeset
6585 <errorlink id="JVMTI_ERROR_ABSENT_INFORMATION"></errorlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6586 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6587 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6588 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6589 <required id="can_get_source_file_name"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6590 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6591 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6592 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6593 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6594 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6595 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6596 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6597 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6598 <param id="source_name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6599 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6600 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6601 On return, points to the class's source file name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6602 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6603 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6604 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6605 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6606 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6607 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6608 Class information does not include a source file name. This includes
a61af66fc99e Initial load
duke
parents:
diff changeset
6609 cases where the class is an array class or primitive class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6610 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6611 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6612 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6613
a61af66fc99e Initial load
duke
parents:
diff changeset
6614 <function id="GetClassModifiers" phase="start" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
6615 <synopsis>Get Class Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6616 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6617 For the class indicated by <code>klass</code>, return the access
a61af66fc99e Initial load
duke
parents:
diff changeset
6618 flags
a61af66fc99e Initial load
duke
parents:
diff changeset
6619 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
6620 Access flags are defined in <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6621 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6622 If the class is an array class, then its public, private, and protected
a61af66fc99e Initial load
duke
parents:
diff changeset
6623 modifiers are the same as those of its component type. For arrays of
a61af66fc99e Initial load
duke
parents:
diff changeset
6624 primitives, this component type is represented by one of the primitive
a61af66fc99e Initial load
duke
parents:
diff changeset
6625 classes (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6626 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6627 If the class is a primitive class, its public modifier is always true,
a61af66fc99e Initial load
duke
parents:
diff changeset
6628 and its protected and private modifiers are always false.
a61af66fc99e Initial load
duke
parents:
diff changeset
6629 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6630 If the class is an array class or a primitive class then its final
a61af66fc99e Initial load
duke
parents:
diff changeset
6631 modifier is always true and its interface modifier is always false.
a61af66fc99e Initial load
duke
parents:
diff changeset
6632 The values of its other modifiers are not determined by this specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
6633
a61af66fc99e Initial load
duke
parents:
diff changeset
6634 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6635 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6636 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6637 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6638 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6639 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6640 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6641 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6642 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6644 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6645 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6646 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6647 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6648 On return, points to the current access flags of this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6649
a61af66fc99e Initial load
duke
parents:
diff changeset
6650 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6651 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6652 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6653 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6654 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6655 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6656
a61af66fc99e Initial load
duke
parents:
diff changeset
6657 <function id="GetClassMethods" phase="start" num="52">
a61af66fc99e Initial load
duke
parents:
diff changeset
6658 <synopsis>Get Class Methods</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6659 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6660 For the class indicated by <code>klass</code>, return a count of
a61af66fc99e Initial load
duke
parents:
diff changeset
6661 methods via <code>method_count_ptr</code> and a list of
a61af66fc99e Initial load
duke
parents:
diff changeset
6662 method IDs via <code>methods_ptr</code>. The method list contains
a61af66fc99e Initial load
duke
parents:
diff changeset
6663 constructors and static initializers as well as true methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
6664 Only directly declared methods are returned (not inherited methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
6665 An empty method list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6666 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6667 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6668 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6669 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6670 <capability id="can_maintain_original_method_order"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6671 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6672 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6673 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6674 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6675 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6676 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6677 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6678 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6679 <param id="method_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6680 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6681 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6682 On return, points to the number of methods declared in this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6683 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6684 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6685 <param id="methods_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6686 <allocbuf outcount="method_count_ptr"><jmethodID class="klass"/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6687 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6688 On return, points to the method ID array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6689 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6690 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6691 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6692 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6693 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6694 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6695 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6696 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6697 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6698
a61af66fc99e Initial load
duke
parents:
diff changeset
6699 <function id="GetClassFields" phase="start" num="53">
a61af66fc99e Initial load
duke
parents:
diff changeset
6700 <synopsis>Get Class Fields</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6701 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6702 For the class indicated by <code>klass</code>, return a count of fields
a61af66fc99e Initial load
duke
parents:
diff changeset
6703 via <code>field_count_ptr</code> and a list of field IDs via
a61af66fc99e Initial load
duke
parents:
diff changeset
6704 <code>fields_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6705 Only directly declared fields are returned (not inherited fields).
a61af66fc99e Initial load
duke
parents:
diff changeset
6706 Fields are returned in the order they occur in the class file.
a61af66fc99e Initial load
duke
parents:
diff changeset
6707 An empty field list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6708 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6709 Use JNI to determine the length of an array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6710 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6711 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6712 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6713 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6714 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6715 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6716 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6717 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6718 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6719 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6720 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6721 <param id="field_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6722 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6723 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6724 On return, points to the number of fields declared in this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6725 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6726 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6727 <param id="fields_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6728 <allocbuf outcount="field_count_ptr"><jfieldID/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6729 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6730 On return, points to the field ID array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6731 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6732 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6733 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6734 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6735 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6736 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6737 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6738 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6739 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6740
a61af66fc99e Initial load
duke
parents:
diff changeset
6741 <function id="GetImplementedInterfaces" phase="start" num="54">
a61af66fc99e Initial load
duke
parents:
diff changeset
6742 <synopsis>Get Implemented Interfaces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6743 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6744 Return the direct super-interfaces of this class. For a class, this
a61af66fc99e Initial load
duke
parents:
diff changeset
6745 function returns the interfaces declared in its <code>implements</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6746 clause. For an interface, this function returns the interfaces declared in
a61af66fc99e Initial load
duke
parents:
diff changeset
6747 its <code>extends</code> clause.
a61af66fc99e Initial load
duke
parents:
diff changeset
6748 An empty interface list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6749 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6750 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6751 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6752 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6753 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6754 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6755 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6756 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6757 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6758 The class to query.
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 <param id="interface_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6762 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6763 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6764 On return, points to the number of interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
6765 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6766 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6767 <param id="interfaces_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6768 <allocbuf outcount="interface_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6769 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6770 On return, points to the interface array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6771 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6772 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6773 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6774 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6775 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6776 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6777 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6778 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6779 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6780
a61af66fc99e Initial load
duke
parents:
diff changeset
6781 <function id="GetClassVersionNumbers" phase="start" num="145" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6782 <synopsis>Get Class Version Numbers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6783 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6784 For the class indicated by <code>klass</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6785 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
6786 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
6787 <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6788 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6789 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6790 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6791 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6792 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6793 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6794 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6795 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6796 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6797 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6798 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6799 <param id="minor_version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6800 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6801 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6802 On return, points to the value of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6803 <code>minor_version</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6804 Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6805 Note: to be consistent with the Class File Format,
a61af66fc99e Initial load
duke
parents:
diff changeset
6806 the minor version number is the first parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
6807 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6808 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6809 <param id="major_version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6810 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6811 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6812 On return, points to the value of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6813 <code>major_version</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6814 Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6815 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6816 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6817 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6818 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6819 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6820 The class is a primitive or array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6821 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6822 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6823 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6824
a61af66fc99e Initial load
duke
parents:
diff changeset
6825 <function id="GetConstantPool" phase="start" num="146" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6826 <synopsis>Get Constant Pool</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6827 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6828 For the class indicated by <code>klass</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6829 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
6830 <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
6831 <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
6832 The format of the constant pool may differ between versions
a61af66fc99e Initial load
duke
parents:
diff changeset
6833 of the Class File Format, so, the
a61af66fc99e Initial load
duke
parents:
diff changeset
6834 <functionlink id="GetClassVersionNumbers">minor and major
a61af66fc99e Initial load
duke
parents:
diff changeset
6835 class version numbers</functionlink> should be checked for
a61af66fc99e Initial load
duke
parents:
diff changeset
6836 compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
6837 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6838 The returned constant pool might not have the same layout or
a61af66fc99e Initial load
duke
parents:
diff changeset
6839 contents as the constant pool in the defining class file.
a61af66fc99e Initial load
duke
parents:
diff changeset
6840 The constant pool returned by GetConstantPool() may have
a61af66fc99e Initial load
duke
parents:
diff changeset
6841 more or fewer entries than the defining constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6842 Entries may be in a different order.
a61af66fc99e Initial load
duke
parents:
diff changeset
6843 The constant pool returned by GetConstantPool() will match the
a61af66fc99e Initial load
duke
parents:
diff changeset
6844 constant pool used by
a61af66fc99e Initial load
duke
parents:
diff changeset
6845 <functionlink id="GetBytecodes">GetBytecodes()</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6846 That is, the bytecodes returned by GetBytecodes() will have
a61af66fc99e Initial load
duke
parents:
diff changeset
6847 constant pool indices which refer to constant pool entries returned
a61af66fc99e Initial load
duke
parents:
diff changeset
6848 by GetConstantPool().
a61af66fc99e Initial load
duke
parents:
diff changeset
6849 Note that since <functionlink id="RetransformClasses"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6850 and <functionlink id="RedefineClasses"/> can change
a61af66fc99e Initial load
duke
parents:
diff changeset
6851 the constant pool, the constant pool returned by this function
a61af66fc99e Initial load
duke
parents:
diff changeset
6852 can change accordingly. Thus, the correspondence between
a61af66fc99e Initial load
duke
parents:
diff changeset
6853 GetConstantPool() and GetBytecodes() does not hold if there
a61af66fc99e Initial load
duke
parents:
diff changeset
6854 is an intervening class retransformation or redefinition.
a61af66fc99e Initial load
duke
parents:
diff changeset
6855 The value of a constant pool entry used by a given bytecode will
a61af66fc99e Initial load
duke
parents:
diff changeset
6856 match that of the defining class file (even if the indices don't match).
a61af66fc99e Initial load
duke
parents:
diff changeset
6857 Constant pool entries which are not used directly or indirectly by
a61af66fc99e Initial load
duke
parents:
diff changeset
6858 bytecodes (for example, UTF-8 strings associated with annotations) are
a61af66fc99e Initial load
duke
parents:
diff changeset
6859 not required to exist in the returned constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6860 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6861 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6862 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6863 <required id="can_get_constant_pool"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6864 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6865 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6866 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6867 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6868 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6869 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6870 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6871 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6872 <param id="constant_pool_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6873 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6874 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6875 On return, points to the number of entries
a61af66fc99e Initial load
duke
parents:
diff changeset
6876 in the constant pool table plus one.
a61af66fc99e Initial load
duke
parents:
diff changeset
6877 This corresponds to the <code>constant_pool_count</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6878 item of the Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6879 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6880 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6881 <param id="constant_pool_byte_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6882 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6883 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6884 On return, points to the number of bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
6885 in the returned raw constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6886 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6887 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6888 <param id="constant_pool_bytes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6889 <allocbuf outcount="constant_pool_byte_count_ptr"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6890 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6891 On return, points to the raw constant pool, that is the bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
6892 defined by the <code>constant_pool</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6893 Class File Format
a61af66fc99e Initial load
duke
parents:
diff changeset
6894 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6895 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6896 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6897 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6898 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6899 The class is a primitive or array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6900 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6901 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6902 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6903
a61af66fc99e Initial load
duke
parents:
diff changeset
6904 <function id="IsInterface" phase="start" num="55">
a61af66fc99e Initial load
duke
parents:
diff changeset
6905 <synopsis>Is Interface</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6906 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6907 Determines whether a class object reference represents an interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
6908 The <code>jboolean</code> result is
a61af66fc99e Initial load
duke
parents:
diff changeset
6909 <code>JNI_TRUE</code> if the "class" is actually an interface,
a61af66fc99e Initial load
duke
parents:
diff changeset
6910 <code>JNI_FALSE</code> otherwise.
a61af66fc99e Initial load
duke
parents:
diff changeset
6911 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6912 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6913 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6914 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6915 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6916 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6917 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6918 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6919 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6920 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6921 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6922 <param id="is_interface_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6923 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6924 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6925 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
6926
a61af66fc99e Initial load
duke
parents:
diff changeset
6927 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6928 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6929 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6930 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6931 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6932 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6933
a61af66fc99e Initial load
duke
parents:
diff changeset
6934 <function id="IsArrayClass" phase="start" num="56">
a61af66fc99e Initial load
duke
parents:
diff changeset
6935 <synopsis>Is Array Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6936 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6937 Determines whether a class object reference represents an array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6938 The <code>jboolean</code> result is
a61af66fc99e Initial load
duke
parents:
diff changeset
6939 <code>JNI_TRUE</code> if the class is an array,
a61af66fc99e Initial load
duke
parents:
diff changeset
6940 <code>JNI_FALSE</code> otherwise.
a61af66fc99e Initial load
duke
parents:
diff changeset
6941 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6942 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6943 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6944 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6945 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6946 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6947 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6948 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6949 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6950 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6951 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6952 <param id="is_array_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6953 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6954 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6955 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
6956
a61af66fc99e Initial load
duke
parents:
diff changeset
6957 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6958 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6959 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6960 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6961 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6962 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6963
a61af66fc99e Initial load
duke
parents:
diff changeset
6964 <function id="IsModifiableClass" jkernel="yes" phase="start" num="45" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6965 <synopsis>Is Modifiable Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6966 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6967 Determines whether a class is modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6968 If a class is modifiable (<paramlink id="is_modifiable_class_ptr"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6969 returns <code>JNI_TRUE</code>) the class can be
a61af66fc99e Initial load
duke
parents:
diff changeset
6970 redefined with <functionlink id="RedefineClasses"/> (assuming
a61af66fc99e Initial load
duke
parents:
diff changeset
6971 the agent possesses the
a61af66fc99e Initial load
duke
parents:
diff changeset
6972 <fieldlink id="can_redefine_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6973 capability) or
a61af66fc99e Initial load
duke
parents:
diff changeset
6974 retransformed with <functionlink id="RetransformClasses"/> (assuming
a61af66fc99e Initial load
duke
parents:
diff changeset
6975 the agent possesses the
a61af66fc99e Initial load
duke
parents:
diff changeset
6976 <fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6977 capability).
a61af66fc99e Initial load
duke
parents:
diff changeset
6978 If a class is not modifiable (<paramlink id="is_modifiable_class_ptr"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6979 returns <code>JNI_FALSE</code>) the class can be neither
a61af66fc99e Initial load
duke
parents:
diff changeset
6980 redefined nor retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
6981 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6982 Primitive classes (for example, <code>java.lang.Integer.TYPE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
6983 and array classes are never modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6984 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6985 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6986 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6987 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6988 <capability id="can_redefine_any_class">
a61af66fc99e Initial load
duke
parents:
diff changeset
6989 If possessed then all classes (except primitive and array classes)
a61af66fc99e Initial load
duke
parents:
diff changeset
6990 are modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6991 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
6992 <capability id="can_redefine_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
6993 No effect on the result of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
6994 But must additionally be possessed to modify the class with
a61af66fc99e Initial load
duke
parents:
diff changeset
6995 <functionlink id="RedefineClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6996 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
6997 <capability id="can_retransform_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
6998 No effect on the result of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
6999 But must additionally be possessed to modify the class with
a61af66fc99e Initial load
duke
parents:
diff changeset
7000 <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7001 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7002 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7003 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7004 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7005 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7006 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7007 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7008 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7009 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7010 <param id="is_modifiable_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7011 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7012 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7013 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7014 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7015 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7016 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7017 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7018 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7019 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7020
a61af66fc99e Initial load
duke
parents:
diff changeset
7021 <function id="GetClassLoader" phase="start" num="57">
a61af66fc99e Initial load
duke
parents:
diff changeset
7022 <synopsis>Get Class Loader</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7023 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7024 For the class indicated by <code>klass</code>, return via
a61af66fc99e Initial load
duke
parents:
diff changeset
7025 <code>classloader_ptr</code> a reference to the class loader for the
a61af66fc99e Initial load
duke
parents:
diff changeset
7026 class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7027 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7028 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7029 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7030 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7031 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7032 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7033 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7034 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7035 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7036 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7037 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7038 <param id="classloader_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7039 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7040 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7041 On return, points to the class loader that loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
7042 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7043 If the class was not created by a class loader
a61af66fc99e Initial load
duke
parents:
diff changeset
7044 or if the class loader is the bootstrap class loader,
a61af66fc99e Initial load
duke
parents:
diff changeset
7045 points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7046 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7047 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7048 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7049 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7050 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7051
a61af66fc99e Initial load
duke
parents:
diff changeset
7052 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7053
a61af66fc99e Initial load
duke
parents:
diff changeset
7054 <function id="GetSourceDebugExtension" phase="start" num="90">
a61af66fc99e Initial load
duke
parents:
diff changeset
7055 <synopsis>Get Source Debug Extension</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7056 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7057 For the class indicated by <code>klass</code>, return the debug
a61af66fc99e Initial load
duke
parents:
diff changeset
7058 extension via <code>source_debug_extension_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7059 The returned string
a61af66fc99e Initial load
duke
parents:
diff changeset
7060 contains exactly the debug extension information present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7061 class file of <code>klass</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7062 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7063 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7064 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7065 <required id="can_get_source_debug_extension"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7066 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7067 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7068 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7069 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7070 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7071 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7072 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7073 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7074 <param id="source_debug_extension_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7075 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7076 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7077 On return, points to the class's debug extension, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7078 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7079 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7080 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7081 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7082 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7083 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7084 Class information does not include a debug extension.
a61af66fc99e Initial load
duke
parents:
diff changeset
7085 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7086 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7087 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7088
a61af66fc99e Initial load
duke
parents:
diff changeset
7089 <function id="RetransformClasses" jkernel="yes" num="152" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
7090 <synopsis>Retransform Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7091 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7092 This function facilitates the
a61af66fc99e Initial load
duke
parents:
diff changeset
7093 <internallink id="bci">bytecode instrumentation</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7094 of already loaded classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7095 To replace the class definition without reference to the existing
a61af66fc99e Initial load
duke
parents:
diff changeset
7096 bytecodes, as one might do when recompiling from source for
a61af66fc99e Initial load
duke
parents:
diff changeset
7097 fix-and-continue debugging, <functionlink id="RedefineClasses"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7098 function should be used instead.
a61af66fc99e Initial load
duke
parents:
diff changeset
7099 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7100 When classes are initially loaded or when they are
a61af66fc99e Initial load
duke
parents:
diff changeset
7101 <functionlink id="RedefineClasses">redefined</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7102 the initial class file bytes can be transformed with the
a61af66fc99e Initial load
duke
parents:
diff changeset
7103 <eventlink id="ClassFileLoadHook"/> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
7104 This function reruns the transformation process
a61af66fc99e Initial load
duke
parents:
diff changeset
7105 (whether or not a transformation has previously occurred).
a61af66fc99e Initial load
duke
parents:
diff changeset
7106 This retransformation follows these steps:
a61af66fc99e Initial load
duke
parents:
diff changeset
7107 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7108 <li>starting from the initial class file bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
7109 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7110 <li>for each <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
7111 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
7112 incapable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7113 agent which received a
a61af66fc99e Initial load
duke
parents:
diff changeset
7114 <code>ClassFileLoadHook</code> event during the previous
a61af66fc99e Initial load
duke
parents:
diff changeset
7115 load or redefine, the bytes it returned
a61af66fc99e Initial load
duke
parents:
diff changeset
7116 (via the <code>new_class_data</code> parameter)
a61af66fc99e Initial load
duke
parents:
diff changeset
7117 are reused as the output of the transformation;
a61af66fc99e Initial load
duke
parents:
diff changeset
7118 note that this is equivalent to reapplying
a61af66fc99e Initial load
duke
parents:
diff changeset
7119 the previous transformation, unaltered. except that
a61af66fc99e Initial load
duke
parents:
diff changeset
7120 the <code>ClassFileLoadHook</code> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7121 is <b>not</b> sent to these agents
a61af66fc99e Initial load
duke
parents:
diff changeset
7122 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7123 <li>for each <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
7124 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
7125 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7126 agent, the <code>ClassFileLoadHook</code> event is sent,
a61af66fc99e Initial load
duke
parents:
diff changeset
7127 allowing a new transformation to be applied
a61af66fc99e Initial load
duke
parents:
diff changeset
7128 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7129 <li>the transformed class file bytes are installed as the new
a61af66fc99e Initial load
duke
parents:
diff changeset
7130 definition of the class
a61af66fc99e Initial load
duke
parents:
diff changeset
7131 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7132 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7133 See the <eventlink id="ClassFileLoadHook"/> event for more details.
a61af66fc99e Initial load
duke
parents:
diff changeset
7134 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7135 The initial class file bytes represent the bytes passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
7136 <code>ClassLoader.defineClass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7137 or <code>RedefineClasses</code> (before any transformations
a61af66fc99e Initial load
duke
parents:
diff changeset
7138 were applied), however they may not exactly match them.
a61af66fc99e Initial load
duke
parents:
diff changeset
7139 The constant pool may differ in ways described in
a61af66fc99e Initial load
duke
parents:
diff changeset
7140 <functionlink id="GetConstantPool"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7141 Constant pool indices in the bytecodes of methods will correspond.
a61af66fc99e Initial load
duke
parents:
diff changeset
7142 Some attributes may not be present.
a61af66fc99e Initial load
duke
parents:
diff changeset
7143 Where order is not meaningful, for example the order of methods,
a61af66fc99e Initial load
duke
parents:
diff changeset
7144 order may not be preserved.
a61af66fc99e Initial load
duke
parents:
diff changeset
7145 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7146 Retransformation can cause new versions of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7147 Old method versions may become
a61af66fc99e Initial load
duke
parents:
diff changeset
7148 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7149 The new method version will be used on new invokes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7150 If a method has active stack frames, those active frames continue to
a61af66fc99e Initial load
duke
parents:
diff changeset
7151 run the bytecodes of the original method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7152 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7153 This function does not cause any initialization except that which
a61af66fc99e Initial load
duke
parents:
diff changeset
7154 would occur under the customary JVM semantics.
a61af66fc99e Initial load
duke
parents:
diff changeset
7155 In other words, retransforming a class does not cause its initializers to be
a61af66fc99e Initial load
duke
parents:
diff changeset
7156 run. The values of static fields will remain as they were
a61af66fc99e Initial load
duke
parents:
diff changeset
7157 prior to the call.
a61af66fc99e Initial load
duke
parents:
diff changeset
7158 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7159 Threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
7160 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7161 All breakpoints in the class are cleared.
a61af66fc99e Initial load
duke
parents:
diff changeset
7162 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7163 All attributes are updated.
a61af66fc99e Initial load
duke
parents:
diff changeset
7164 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7165 Instances of the retransformed class are not affected -- fields retain their
a61af66fc99e Initial load
duke
parents:
diff changeset
7166 previous values.
a61af66fc99e Initial load
duke
parents:
diff changeset
7167 <functionlink id="GetTag">Tags</functionlink> on the instances are
a61af66fc99e Initial load
duke
parents:
diff changeset
7168 also unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
7169 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7170 In response to this call, no events other than the
a61af66fc99e Initial load
duke
parents:
diff changeset
7171 <eventlink id="ClassFileLoadHook"/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7172 will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
7173 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7174 The retransformation may change method bodies, the constant pool and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7175 The retransformation must not add, remove or rename fields or methods, change the
a61af66fc99e Initial load
duke
parents:
diff changeset
7176 signatures of methods, change modifiers, or change inheritance.
a61af66fc99e Initial load
duke
parents:
diff changeset
7177 These restrictions may be lifted in future versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7178 See the error return description below for information on error codes
a61af66fc99e Initial load
duke
parents:
diff changeset
7179 returned if an unsupported retransformation is attempted.
a61af66fc99e Initial load
duke
parents:
diff changeset
7180 The class file bytes are not verified or installed until they have passed
a61af66fc99e Initial load
duke
parents:
diff changeset
7181 through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
a61af66fc99e Initial load
duke
parents:
diff changeset
7182 returned error code reflects the result of the transformations.
a61af66fc99e Initial load
duke
parents:
diff changeset
7183 If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7184 none of the classes to be retransformed will have a new definition installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7185 When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7186 all of the classes to be retransformed will have their new definitions installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7187 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7188 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7189 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7190 <required id="can_retransform_classes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7191 <capability id="can_retransform_any_class"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7192 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7193 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7194 <param id="class_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7195 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7196 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7197 The number of classes to be retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7198 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7199 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7200 <param id="classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7201 <inbuf incount="class_count"><jclass/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7202 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7203 The array of classes to be retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7204 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7205 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7206 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7207 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7208 <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7209 One of the <paramlink id="classes"/> cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
7210 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7211 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7212 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7213 One of the <paramlink id="classes"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7214 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7215 <error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7216 A retransformed class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7217 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7218 <error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
a61af66fc99e Initial load
duke
parents:
diff changeset
7219 A retransformed class file is malformed (The VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7220 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7221 <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7222 The retransformed class file definitions would lead to a circular definition
a61af66fc99e Initial load
duke
parents:
diff changeset
7223 (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7224 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7225 <error id="JVMTI_ERROR_FAILS_VERIFICATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7226 The retransformed class file bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
7227 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7228 <error id="JVMTI_ERROR_NAMES_DONT_MATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
7229 The class name defined in a retransformed class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
7230 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7231 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7232 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7233 A retransformed class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
7234 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7235 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7236 A retransformed class file changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
7237 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7238 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7239 A direct superclass is different for a retransformed class file,
a61af66fc99e Initial load
duke
parents:
diff changeset
7240 or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
7241 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
7242 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7243 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7244 A retransformed class file does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
7245 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7246 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7247 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7248 A retransformed class file has different class modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
7249 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7250 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7251 A method in the retransformed class file has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
7252 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7253 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7254 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7255 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7256
a61af66fc99e Initial load
duke
parents:
diff changeset
7257 <function id="RedefineClasses" jkernel="yes" num="87">
a61af66fc99e Initial load
duke
parents:
diff changeset
7258 <synopsis>Redefine Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7259 <typedef id="jvmtiClassDefinition" label="Class redefinition description">
a61af66fc99e Initial load
duke
parents:
diff changeset
7260 <field id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7261 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7262 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7263 Class object for this class
a61af66fc99e Initial load
duke
parents:
diff changeset
7264 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7265 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7266 <field id="class_byte_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7267 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7268 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7269 Number of bytes defining class (below)
a61af66fc99e Initial load
duke
parents:
diff changeset
7270 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7271 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7272 <field id="class_bytes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7273 <inbuf incount="class_byte_count"><uchar/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7274 <description>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7275 Bytes defining class (in <vmspec chapter="4"/>)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7276 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7277 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7278 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
7279 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7280 All classes given are redefined according to the definitions
a61af66fc99e Initial load
duke
parents:
diff changeset
7281 supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
7282 This function is used to replace the definition of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
7283 with a new definition, as might be needed in fix-and-continue
a61af66fc99e Initial load
duke
parents:
diff changeset
7284 debugging.
a61af66fc99e Initial load
duke
parents:
diff changeset
7285 Where the existing class file bytes are to be transformed, for
a61af66fc99e Initial load
duke
parents:
diff changeset
7286 example in
a61af66fc99e Initial load
duke
parents:
diff changeset
7287 <internallink id="bci">bytecode instrumentation</internallink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7288 <functionlink id="RetransformClasses"/> should be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
7289 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7290 Redefinition can cause new versions of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7291 Old method versions may become
a61af66fc99e Initial load
duke
parents:
diff changeset
7292 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7293 The new method version will be used on new invokes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7294 If a method has active stack frames, those active frames continue to
a61af66fc99e Initial load
duke
parents:
diff changeset
7295 run the bytecodes of the original method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7296 If resetting of stack frames is desired, use
a61af66fc99e Initial load
duke
parents:
diff changeset
7297 <functionlink id="PopFrame"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7298 to pop frames with obsolete method versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7299 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7300 This function does not cause any initialization except that which
a61af66fc99e Initial load
duke
parents:
diff changeset
7301 would occur under the customary JVM semantics.
a61af66fc99e Initial load
duke
parents:
diff changeset
7302 In other words, redefining a class does not cause its initializers to be
a61af66fc99e Initial load
duke
parents:
diff changeset
7303 run. The values of static fields will remain as they were
a61af66fc99e Initial load
duke
parents:
diff changeset
7304 prior to the call.
a61af66fc99e Initial load
duke
parents:
diff changeset
7305 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7306 Threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
7307 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7308 All breakpoints in the class are cleared.
a61af66fc99e Initial load
duke
parents:
diff changeset
7309 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7310 All attributes are updated.
a61af66fc99e Initial load
duke
parents:
diff changeset
7311 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7312 Instances of the redefined class are not affected -- fields retain their
a61af66fc99e Initial load
duke
parents:
diff changeset
7313 previous values.
a61af66fc99e Initial load
duke
parents:
diff changeset
7314 <functionlink id="GetTag">Tags</functionlink> on the instances are
a61af66fc99e Initial load
duke
parents:
diff changeset
7315 also unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
7316 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7317 In response to this call, the <jvmti/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7318 <eventlink id="ClassFileLoadHook">Class File Load Hook</eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7319 will be sent (if enabled), but no other <jvmti/> events will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
7320 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7321 The redefinition may change method bodies, the constant pool and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7322 The redefinition must not add, remove or rename fields or methods, change the
a61af66fc99e Initial load
duke
parents:
diff changeset
7323 signatures of methods, change modifiers, or change inheritance.
a61af66fc99e Initial load
duke
parents:
diff changeset
7324 These restrictions may be lifted in future versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7325 See the error return description below for information on error codes
a61af66fc99e Initial load
duke
parents:
diff changeset
7326 returned if an unsupported redefinition is attempted.
a61af66fc99e Initial load
duke
parents:
diff changeset
7327 The class file bytes are not verified or installed until they have passed
a61af66fc99e Initial load
duke
parents:
diff changeset
7328 through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
a61af66fc99e Initial load
duke
parents:
diff changeset
7329 returned error code reflects the result of the transformations applied
a61af66fc99e Initial load
duke
parents:
diff changeset
7330 to the bytes passed into <paramlink id="class_definitions"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7331 If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7332 none of the classes to be redefined will have a new definition installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7333 When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7334 all of the classes to be redefined will have their new definitions installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7335 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7336 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7337 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7338 <required id="can_redefine_classes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7339 <capability id="can_redefine_any_class"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7340 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7341 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7342 <param id="class_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7343 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7344 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7345 The number of classes specified in <code>class_definitions</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7346 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7347 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7348 <param id="class_definitions">
a61af66fc99e Initial load
duke
parents:
diff changeset
7349 <inbuf incount="class_count"><struct>jvmtiClassDefinition</struct></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7350 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7351 The array of new class definitions
a61af66fc99e Initial load
duke
parents:
diff changeset
7352 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7353 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7354 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7355 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7356 <error id="JVMTI_ERROR_NULL_POINTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
7357 One of <code>class_bytes</code> is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7358 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7359 <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7360 An element of <code>class_definitions</code> cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
7361 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7362 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7363 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7364 An element of <code>class_definitions</code> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7365 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7366 <error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7367 A new class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7368 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7369 <error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
a61af66fc99e Initial load
duke
parents:
diff changeset
7370 A new class file is malformed (The VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7371 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7372 <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7373 The new class file definitions would lead to a circular definition
a61af66fc99e Initial load
duke
parents:
diff changeset
7374 (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7375 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7376 <error id="JVMTI_ERROR_FAILS_VERIFICATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7377 The class bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
7378 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7379 <error id="JVMTI_ERROR_NAMES_DONT_MATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
7380 The class name defined in a new class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
7381 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7382 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7383 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7384 A new class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
7385 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7386 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7387 A new class version changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
7388 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7389 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7390 A direct superclass is different for a new class
a61af66fc99e Initial load
duke
parents:
diff changeset
7391 version, or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
7392 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
7393 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7394 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7395 A new class version does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
7396 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7397 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7398 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7399 A new class version has different modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
7400 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7401 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7402 A method in the new class version has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
7403 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7404 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7405 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7406 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7407
a61af66fc99e Initial load
duke
parents:
diff changeset
7408 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7409
a61af66fc99e Initial load
duke
parents:
diff changeset
7410 <category id="object" label="Object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7411
a61af66fc99e Initial load
duke
parents:
diff changeset
7412 <function id="GetObjectSize" jkernel="yes" phase="start" num="154">
a61af66fc99e Initial load
duke
parents:
diff changeset
7413 <synopsis>Get Object Size</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7414 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7415 For the object indicated by <code>object</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7416 return via <code>size_ptr</code> the size of the object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7417 This size is an implementation-specific approximation of
a61af66fc99e Initial load
duke
parents:
diff changeset
7418 the amount of storage consumed by this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7419 It may include some or all of the object's overhead, and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
7420 is useful for comparison within an implementation but not
a61af66fc99e Initial load
duke
parents:
diff changeset
7421 between implementations.
a61af66fc99e Initial load
duke
parents:
diff changeset
7422 The estimate may change during a single invocation of the JVM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7423 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7424 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7425 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7426 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7427 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7428 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7429 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7430 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7431 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7432 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7433 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7434 <param id="size_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7435 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7436 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7437 On return, points to the object's size in bytes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7438 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7439 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7440 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7441 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7442 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7443 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7444
a61af66fc99e Initial load
duke
parents:
diff changeset
7445 <function id="GetObjectHashCode" phase="start" num="58">
a61af66fc99e Initial load
duke
parents:
diff changeset
7446 <synopsis>Get Object Hash Code</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7447 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7448 For the object indicated by <code>object</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7449 return via <code>hash_code_ptr</code> a hash code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7450 This hash code could be used to maintain a hash table of object references,
a61af66fc99e Initial load
duke
parents:
diff changeset
7451 however, on some implementations this can cause significant performance
a61af66fc99e Initial load
duke
parents:
diff changeset
7452 impacts--in most cases
a61af66fc99e Initial load
duke
parents:
diff changeset
7453 <internallink id="Heap">tags</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7454 will be a more efficient means of associating information with objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
7455 This function guarantees
a61af66fc99e Initial load
duke
parents:
diff changeset
7456 the same hash code value for a particular object throughout its life
a61af66fc99e Initial load
duke
parents:
diff changeset
7457 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7458 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7459 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7460 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7461 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7462 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7463 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7464 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7465 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7466 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7467 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7468 <param id="hash_code_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7469 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7470 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7471 On return, points to the object's hash code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7472 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7473 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7474 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7475 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7476 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7477 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7478
a61af66fc99e Initial load
duke
parents:
diff changeset
7479 <function id="GetObjectMonitorUsage" num="59">
a61af66fc99e Initial load
duke
parents:
diff changeset
7480 <synopsis>Get Object Monitor Usage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7481 <typedef id="jvmtiMonitorUsage" label="Object monitor usage information">
a61af66fc99e Initial load
duke
parents:
diff changeset
7482 <field id="owner">
a61af66fc99e Initial load
duke
parents:
diff changeset
7483 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7484 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7485 The thread owning this monitor, or <code>NULL</code> if unused
a61af66fc99e Initial load
duke
parents:
diff changeset
7486 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7487 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7488 <field id="entry_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7489 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7490 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7491 The number of times the owning thread has entered the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7492 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7493 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7494 <field id="waiter_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7495 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7496 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7497 The number of threads waiting to own this monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7498 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7499 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7500 <field id="waiters">
a61af66fc99e Initial load
duke
parents:
diff changeset
7501 <allocfieldbuf><jthread/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7502 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7503 The <code>waiter_count</code> waiting threads
a61af66fc99e Initial load
duke
parents:
diff changeset
7504 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7505 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7506 <field id="notify_waiter_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7507 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7508 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7509 The number of threads waiting to be notified by this monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7510 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7511 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7512 <field id="notify_waiters">
a61af66fc99e Initial load
duke
parents:
diff changeset
7513 <allocfieldbuf><jthread/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7514 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7515 The <code>notify_waiter_count</code> threads waiting to be notified
a61af66fc99e Initial load
duke
parents:
diff changeset
7516 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7517 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7518 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
7519 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7520 Get information about the object's monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
7521 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
7522 are filled in with information about usage of the monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
7523 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
7524 Decide and then clarify suspend requirements.
a61af66fc99e Initial load
duke
parents:
diff changeset
7525 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
7526 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7527 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7528 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7529 <required id="can_get_monitor_info"></required>
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="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7539 <outptr><struct>jvmtiMonitorUsage</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7540 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7541 On return, filled with monitor information for the
a61af66fc99e Initial load
duke
parents:
diff changeset
7542 specified object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7543 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7544 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7545 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7546 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7547 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7548 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7549
a61af66fc99e Initial load
duke
parents:
diff changeset
7550 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
7551 <function id="GetObjectMonitors" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
7552 <synopsis>Get Object Monitors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7553 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7554 Return the list of object monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
7555 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7556 Note: details about each monitor can be examined with
a61af66fc99e Initial load
duke
parents:
diff changeset
7557 <functionlink id="GetObjectMonitorUsage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7558 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7559 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7560 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7561 <required id="can_get_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7562 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7563 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7564 <param id="monitorCnt">
a61af66fc99e Initial load
duke
parents:
diff changeset
7565 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7566 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7567 On return, pointer to the number
a61af66fc99e Initial load
duke
parents:
diff changeset
7568 of monitors returned in <code>monitors_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7569 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7570 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7571 <param id="monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7572 <allocbuf outcount="monitorCnt"><jobject/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7573 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7574 On return, pointer to the monitor list.
a61af66fc99e Initial load
duke
parents:
diff changeset
7575 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7576 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7577 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7578 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7579 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7580 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7581 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
7582
a61af66fc99e Initial load
duke
parents:
diff changeset
7583 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7584
a61af66fc99e Initial load
duke
parents:
diff changeset
7585 <category id="fieldCategory" label="Field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7586
a61af66fc99e Initial load
duke
parents:
diff changeset
7587 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7588 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7589
a61af66fc99e Initial load
duke
parents:
diff changeset
7590 <function id="GetFieldName" phase="start" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
7591 <synopsis>Get Field Name (and Signature)</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7592 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7593 For the field indicated by <paramlink id="klass"/> and <paramlink id="field"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7594 return the field name via <paramlink id="name_ptr"/> and field signature via
a61af66fc99e Initial load
duke
parents:
diff changeset
7595 <paramlink id="signature_ptr"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7596 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7597 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
7598 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
7599 <vmspec chapter="4.3.2"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7600 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7601 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7602 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7603 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7604 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7605 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7606 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7607 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7608 The class of the field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7609 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7610 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7611 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7612 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7613 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7614 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7615 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7616 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7617 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7618 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7619 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7620 <nullok>the name is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7621 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7622 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7623 On return, points to the field name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7624 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7625 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7626 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7627 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7628 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7629 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7630 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7631 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7632 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7633 On return, points to the field signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7634 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7635 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7636 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7637 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7638 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7639 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7640 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7641 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7642 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7643 On return, points to the generic signature of the field, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7644 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7645 If there is no generic signature attribute for the field, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
7646 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7647 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7648 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7649 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7650 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7651 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7652 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7653
a61af66fc99e Initial load
duke
parents:
diff changeset
7654 <function id="GetFieldDeclaringClass" phase="start" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
7655 <synopsis>Get Field Declaring Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7656 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7657 For the field indicated by <code>klass</code> and <code>field</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7658 return the class that defined it via <code>declaring_class_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7659 The declaring class will either be <code>klass</code>, a superclass, or
a61af66fc99e Initial load
duke
parents:
diff changeset
7660 an implemented interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
7661 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7662 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7663 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7664 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7665 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7666 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7667 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7668 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7669 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7670 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7671 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7672 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7673 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7674 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7675 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7676 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7677 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7678 <param id="declaring_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7679 <outptr><jclass/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7680 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7681 On return, points to the declaring class
a61af66fc99e Initial load
duke
parents:
diff changeset
7682 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7683 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7684 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7685 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7686 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7687 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7688
a61af66fc99e Initial load
duke
parents:
diff changeset
7689 <function id="GetFieldModifiers" phase="start" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
7690 <synopsis>Get Field Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7691 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7692 For the field indicated by <code>klass</code> and <code>field</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7693 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
7694 Access flags are defined in <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7695 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7696 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7697 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7698 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7699 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7700 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7701 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7702 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7703 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7704 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7705 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7706 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7707 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7708 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7709 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7710 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7711 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7712 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7713 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7714 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7715 On return, points to the access flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
7716 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7717 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7718 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7719 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7720 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7721 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7722
a61af66fc99e Initial load
duke
parents:
diff changeset
7723 <function id="IsFieldSynthetic" phase="start" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
7724 <synopsis>Is Field Synthetic</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7725 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7726 For the field indicated by <code>klass</code> and <code>field</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
7727 value indicating whether the field is synthetic via <code>is_synthetic_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7728 Synthetic fields are generated by the compiler but not present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7729 original source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7730 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7731 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7732 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7733 <required id="can_get_synthetic_attribute"></required>
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 of the field 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="is_synthetic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7749 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7750 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7751 On return, points to the boolean result of this function.
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 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7760
a61af66fc99e Initial load
duke
parents:
diff changeset
7761 <category id="method" label="Method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7762
a61af66fc99e Initial load
duke
parents:
diff changeset
7763 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7764 These functions provide information about a method (represented as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7765 <typelink id="jmethodID"/>) and set how methods are processed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7766 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7767
a61af66fc99e Initial load
duke
parents:
diff changeset
7768 <intro id="obsoleteMethods" label="Obsolete Methods">
a61af66fc99e Initial load
duke
parents:
diff changeset
7769 The functions <functionlink id="RetransformClasses"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
7770 <functionlink id="RedefineClasses"/> can cause new versions
a61af66fc99e Initial load
duke
parents:
diff changeset
7771 of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7772 An original version of a method is considered equivalent
a61af66fc99e Initial load
duke
parents:
diff changeset
7773 to the new version if:
a61af66fc99e Initial load
duke
parents:
diff changeset
7774 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7775 <li>their bytecodes are the same except for indices into the
a61af66fc99e Initial load
duke
parents:
diff changeset
7776 constant pool and </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7777 <li>the referenced constants are equal.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7778 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7779 An original method version which is not equivalent to the
a61af66fc99e Initial load
duke
parents:
diff changeset
7780 new method version is called obsolete and is assigned a new method ID;
a61af66fc99e Initial load
duke
parents:
diff changeset
7781 the original method ID now refers to the new method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7782 A method ID can be tested for obsolescence with
a61af66fc99e Initial load
duke
parents:
diff changeset
7783 <functionlink id="IsMethodObsolete"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7784 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7785
a61af66fc99e Initial load
duke
parents:
diff changeset
7786 <function id="GetMethodName" phase="start" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
7787 <synopsis>Get Method Name (and Signature)</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7788 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7789 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7790 return the method name via <code>name_ptr</code> and method signature via
a61af66fc99e Initial load
duke
parents:
diff changeset
7791 <code>signature_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7792 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7793 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
7794 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
7795 <vmspec chapter="4.3.3"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7796 Note this is different
a61af66fc99e Initial load
duke
parents:
diff changeset
7797 than method signatures as defined in the <i>Java Language Specification</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7798 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7799 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7800 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7801 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7802 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7803 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7804 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7805 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7806 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7807 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7808 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7809 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7810 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7811 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7812 <nullok>the name is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7813 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7814 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7815 On return, points to the method name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7816 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7817 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7818 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7819 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7820 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7821 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7822 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7823 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7824 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7825 On return, points to the method signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7826 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7827 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7828 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7829 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7830 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7831 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7832 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7833 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7834 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7835 On return, points to the generic signature of the method, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7836 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7837 If there is no generic signature attribute for the method, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
7838 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7839 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7840 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7841 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7842 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7843 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7844 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7845
a61af66fc99e Initial load
duke
parents:
diff changeset
7846 <function id="GetMethodDeclaringClass" phase="start" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
7847 <synopsis>Get Method Declaring Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7848 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7849 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7850 return the class that defined it via <code>declaring_class_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7851 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7852 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7853 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7854 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7855 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7856 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7857 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7858 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7859 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7860 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7861 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7862 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7863 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7864 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7865 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7866 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7867 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7868 <param id="declaring_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7869 <outptr><jclass/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7870 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7871 On return, points to the declaring class
a61af66fc99e Initial load
duke
parents:
diff changeset
7872 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7873 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7874 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7875 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7876 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7877 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7878
a61af66fc99e Initial load
duke
parents:
diff changeset
7879 <function id="GetMethodModifiers" phase="start" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
7880 <synopsis>Get Method Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7881 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7882 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7883 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
7884 Access flags are defined in <vmspec chapter="4"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7885 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7886 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7887 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7888 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7889 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7890 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7891 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7892 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7893 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7894 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7895 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7896 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7897 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7898 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7899 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7900 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7901 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7902 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7903 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7904 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7905 On return, points to the access flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
7906 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7907 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7908 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7909 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7910 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7911 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7912
a61af66fc99e Initial load
duke
parents:
diff changeset
7913 <function id="GetMaxLocals" phase="start" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
7914 <synopsis>Get Max Locals</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7915 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7916 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7917 return the number of local variable slots used by the method,
a61af66fc99e Initial load
duke
parents:
diff changeset
7918 including the local variables used to pass parameters to the
a61af66fc99e Initial load
duke
parents:
diff changeset
7919 method on its invocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
7920 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
7921 See <code>max_locals</code> in <vmspec chapter="4.7.3"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
7922 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7923 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7924 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7925 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7926 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7927 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7928 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7929 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7930 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7931 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7932 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7933 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7934 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7935 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7936 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7937 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7938 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7939 <param id="max_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7940 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7941 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7942 On return, points to the maximum number of local slots
a61af66fc99e Initial load
duke
parents:
diff changeset
7943 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7944 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7945 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7946 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7947 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7948 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7949
a61af66fc99e Initial load
duke
parents:
diff changeset
7950 <function id="GetArgumentsSize" phase="start" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
7951 <synopsis>Get Arguments Size</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7952 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7953 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7954 return via <code>max_ptr</code> the number of local variable slots used
a61af66fc99e Initial load
duke
parents:
diff changeset
7955 by the method's arguments.
a61af66fc99e Initial load
duke
parents:
diff changeset
7956 Note that two-word arguments use two slots.
a61af66fc99e Initial load
duke
parents:
diff changeset
7957 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7958 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7959 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7960 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7961 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7962 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7963 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7964 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7965 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7966 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7967 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7968 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7969 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7970 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7971 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7972 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7973 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7974 <param id="size_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7975 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7976 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7977 On return, points to the number of argument slots
a61af66fc99e Initial load
duke
parents:
diff changeset
7978 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7979 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7980 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7981 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7982 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7983 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7984
a61af66fc99e Initial load
duke
parents:
diff changeset
7985 <function id="GetLineNumberTable" phase="start" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
7986 <synopsis>Get Line Number Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7987 <typedef id="jvmtiLineNumberEntry" label="Line number table entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
7988 <field id="start_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
7989 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7990 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7991 the <datalink id="jlocation"></datalink> where the line begins
a61af66fc99e Initial load
duke
parents:
diff changeset
7992 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7993 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7994 <field id="line_number">
a61af66fc99e Initial load
duke
parents:
diff changeset
7995 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7996 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7997 the line number
a61af66fc99e Initial load
duke
parents:
diff changeset
7998 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7999 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8000 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
8001 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8002 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8003 return a table of source line number entries. The size of the table is
a61af66fc99e Initial load
duke
parents:
diff changeset
8004 returned via <code>entry_count_ptr</code> and the table itself is
a61af66fc99e Initial load
duke
parents:
diff changeset
8005 returned via <code>table_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8006 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8007 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8008 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8009 <required id="can_get_line_numbers"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8010 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8011 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8012 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8013 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8014 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8015 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8016 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8017 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8018 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8019 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8020 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8021 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8022 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8023 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8024 <param id="entry_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8025 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8026 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8027 On return, points to the number of entries in the table
a61af66fc99e Initial load
duke
parents:
diff changeset
8028 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8029 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8030 <param id="table_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8031 <allocbuf outcount="entry_count_ptr"><struct>jvmtiLineNumberEntry</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8032 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8033 On return, points to the line number table pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
8034 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8035 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8036 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8037 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8038 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8039 Class information does not include line numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
8040 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8041 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8042 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8043
a61af66fc99e Initial load
duke
parents:
diff changeset
8044 <function id="GetMethodLocation" phase="start" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
8045 <synopsis>Get Method Location</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8046 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8047 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8048 return the beginning and ending addresses through
a61af66fc99e Initial load
duke
parents:
diff changeset
8049 <code>start_location_ptr</code> and <code>end_location_ptr</code>. In a
a61af66fc99e Initial load
duke
parents:
diff changeset
8050 conventional byte code indexing scheme,
a61af66fc99e Initial load
duke
parents:
diff changeset
8051 <code>start_location_ptr</code> will always point to zero
a61af66fc99e Initial load
duke
parents:
diff changeset
8052 and <code>end_location_ptr</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8053 will always point to the byte code count minus one.
a61af66fc99e Initial load
duke
parents:
diff changeset
8054 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8055 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8056 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8057 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8058 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8059 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8060 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8061 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8062 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8063 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8064 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8065 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8066 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8067 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8068 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8069 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8070 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8071 <param id="start_location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8072 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8073 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8074 On return, points to the first location, or
a61af66fc99e Initial load
duke
parents:
diff changeset
8075 <code>-1</code> if location information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
8076 If the information is available and
a61af66fc99e Initial load
duke
parents:
diff changeset
8077 <functionlink id="GetJLocationFormat"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8078 returns <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8079 then this will always be zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
8080 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8081 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8082 <param id="end_location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8083 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8084 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8085 On return, points to the last location,
a61af66fc99e Initial load
duke
parents:
diff changeset
8086 or <code>-1</code> if location information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
8087 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8088 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8089 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8090 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8091 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8092 Class information does not include method sizes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8093 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8094 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8095 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8096
a61af66fc99e Initial load
duke
parents:
diff changeset
8097 <function id="GetLocalVariableTable" num="72">
a61af66fc99e Initial load
duke
parents:
diff changeset
8098 <synopsis>Get Local Variable Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8099 <typedef id="jvmtiLocalVariableEntry" label="Local variable table entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
8100 <field id="start_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
8101 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8102 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8103 The code array index where the local variable is first valid
a61af66fc99e Initial load
duke
parents:
diff changeset
8104 (that is, where it must have a value).
a61af66fc99e Initial load
duke
parents:
diff changeset
8105 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8106 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8107 <field id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
8108 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8109 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8110 The length of the valid section for this local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
8111 The last code array index where the local variable is valid
a61af66fc99e Initial load
duke
parents:
diff changeset
8112 is <code>start_location + length</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8113 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8114 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8115 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
8116 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8117 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8118 The local variable name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8119 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8120 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8121 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8122 <field id="signature">
a61af66fc99e Initial load
duke
parents:
diff changeset
8123 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8124 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8125 The local variable's type signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8126 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8127 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
8128 <vmspec chapter="4.3.2"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
8129 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8130 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8131 <field id="generic_signature">
a61af66fc99e Initial load
duke
parents:
diff changeset
8132 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8133 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8134 The local variable's generic signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8135 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8136 The value of this field will be <code>NULL</code> for any local
a61af66fc99e Initial load
duke
parents:
diff changeset
8137 variable which does not have a generic type.
a61af66fc99e Initial load
duke
parents:
diff changeset
8138 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8139 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8140 <field id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
8141 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8142 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8143 The local variable's slot. See <internallink id="local">Local Variables</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8144 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8145 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8146 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
8147 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8148 Return local variable information.
a61af66fc99e Initial load
duke
parents:
diff changeset
8149 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8150 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8151 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8152 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8153 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8154 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8155 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8156 <jmethodID native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8157 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8158 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8159 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8160 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8161 <param id="entry_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8162 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8163 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8164 On return, points to the number of entries in the table
a61af66fc99e Initial load
duke
parents:
diff changeset
8165 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8166 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8167 <param id="table_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8168 <allocbuf outcount="entry_count_ptr"><struct>jvmtiLocalVariableEntry</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8169 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8170 On return, points to an array of local variable table entries.
a61af66fc99e Initial load
duke
parents:
diff changeset
8171 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8172 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8173 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8174 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8175 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8176 Class information does not include local variable
a61af66fc99e Initial load
duke
parents:
diff changeset
8177 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
8178 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8179 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8180 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8181
a61af66fc99e Initial load
duke
parents:
diff changeset
8182 <function id="GetBytecodes" phase="start" num="75">
a61af66fc99e Initial load
duke
parents:
diff changeset
8183 <synopsis>Get Bytecodes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8184 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8185 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8186 return the byte codes that implement the method. The number of
a61af66fc99e Initial load
duke
parents:
diff changeset
8187 bytecodes is returned via <code>bytecode_count_ptr</code>. The byte codes
a61af66fc99e Initial load
duke
parents:
diff changeset
8188 themselves are returned via <code>bytecodes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8189 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8190 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8191 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8192 <required id="can_get_bytecodes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8193 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8194 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8195 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8196 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8197 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8198 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8199 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8200 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8201 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8202 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8203 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8204 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8205 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8206 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8207 <param id="bytecode_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8208 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8209 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8210 On return, points to the length of the byte code array
a61af66fc99e Initial load
duke
parents:
diff changeset
8211 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8212 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8213 <param id="bytecodes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8214 <allocbuf outcount="bytecode_count_ptr"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8215 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8216 On return, points to the pointer to the byte code array
a61af66fc99e Initial load
duke
parents:
diff changeset
8217 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8218 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8219 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8220 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8221 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8222 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8223
a61af66fc99e Initial load
duke
parents:
diff changeset
8224 <function id="IsMethodNative" phase="start" num="76">
a61af66fc99e Initial load
duke
parents:
diff changeset
8225 <synopsis>Is Method Native</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8226 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8227 For the method indicated by <code>method</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
8228 value indicating whether the method is native via <code>is_native_ptr</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8229 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8230 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8231 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8232 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8233 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8234 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8235 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8236 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8237 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8238 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8239 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8240 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8241 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8242 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8243 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8244 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8245 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8246 <param id="is_native_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8247 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8248 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8249 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8250 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8251 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8252 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8253 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8254 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8255 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8256
a61af66fc99e Initial load
duke
parents:
diff changeset
8257 <function id="IsMethodSynthetic" phase="start" num="77">
a61af66fc99e Initial load
duke
parents:
diff changeset
8258 <synopsis>Is Method Synthetic</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8259 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8260 For the method indicated by <code>method</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
8261 value indicating whether the method is synthetic via <code>is_synthetic_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8262 Synthetic methods are generated by the compiler but not present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
8263 original source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
8264 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8265 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8266 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8267 <required id="can_get_synthetic_attribute"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8268 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8269 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8270 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8271 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8272 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8273 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8274 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8275 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8276 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8277 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8278 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8279 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8280 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8281 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8282 <param id="is_synthetic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8283 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8284 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8285 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8286 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8287 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8288 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8289 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8290 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8291 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8292
a61af66fc99e Initial load
duke
parents:
diff changeset
8293 <function id="IsMethodObsolete" phase="start" num="91">
a61af66fc99e Initial load
duke
parents:
diff changeset
8294 <synopsis>Is Method Obsolete</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8295 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8296 Determine if a method ID refers to an
a61af66fc99e Initial load
duke
parents:
diff changeset
8297 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8298 method version.
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 ID 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_obsolete_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="SetNativeMethodPrefix" jkernel="yes" phase="any" num="73" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8328 <synopsis>Set Native Method Prefix</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8329 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8330 This function modifies the failure handling of
a61af66fc99e Initial load
duke
parents:
diff changeset
8331 native method resolution by allowing retry
a61af66fc99e Initial load
duke
parents:
diff changeset
8332 with a prefix applied to the name.
a61af66fc99e Initial load
duke
parents:
diff changeset
8333 When used with the
a61af66fc99e Initial load
duke
parents:
diff changeset
8334 <eventlink id="ClassFileLoadHook">ClassFileLoadHook
a61af66fc99e Initial load
duke
parents:
diff changeset
8335 event</eventlink>, it enables native methods to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8336 <internallink id="bci">instrumented</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8337 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8338 Since native methods cannot be directly instrumented
a61af66fc99e Initial load
duke
parents:
diff changeset
8339 (they have no bytecodes), they must be wrapped with
a61af66fc99e Initial load
duke
parents:
diff changeset
8340 a non-native method which can be instrumented.
a61af66fc99e Initial load
duke
parents:
diff changeset
8341 For example, if we had:
a61af66fc99e Initial load
duke
parents:
diff changeset
8342 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8343 native boolean foo(int x);</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8344 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8345 We could transform the class file (with the
a61af66fc99e Initial load
duke
parents:
diff changeset
8346 ClassFileLoadHook event) so that this becomes:
a61af66fc99e Initial load
duke
parents:
diff changeset
8347 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8348 boolean foo(int x) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8349 <i>... record entry to foo ...</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
8350 return wrapped_foo(x);
a61af66fc99e Initial load
duke
parents:
diff changeset
8351 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8352
a61af66fc99e Initial load
duke
parents:
diff changeset
8353 native boolean wrapped_foo(int x);</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8354 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8355 Where foo becomes a wrapper for the actual native method
a61af66fc99e Initial load
duke
parents:
diff changeset
8356 with the appended prefix "wrapped_". Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
8357 "wrapped_" would be a poor choice of prefix since it
a61af66fc99e Initial load
duke
parents:
diff changeset
8358 might conceivably form the name of an existing method
a61af66fc99e Initial load
duke
parents:
diff changeset
8359 thus something like "$$$MyAgentWrapped$$$_" would be
a61af66fc99e Initial load
duke
parents:
diff changeset
8360 better but would make these examples less readable.
a61af66fc99e Initial load
duke
parents:
diff changeset
8361 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8362 The wrapper will allow data to be collected on the native
a61af66fc99e Initial load
duke
parents:
diff changeset
8363 method call, but now the problem becomes linking up the
a61af66fc99e Initial load
duke
parents:
diff changeset
8364 wrapped method with the native implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8365 That is, the method <code>wrapped_foo</code> needs to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8366 resolved to the native implementation of <code>foo</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8367 which might be:
a61af66fc99e Initial load
duke
parents:
diff changeset
8368 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8369 Java_somePackage_someClass_foo(JNIEnv* env, jint x)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8370 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8371 This function allows the prefix to be specified and the
a61af66fc99e Initial load
duke
parents:
diff changeset
8372 proper resolution to occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
8373 Specifically, when the standard resolution fails, the
a61af66fc99e Initial load
duke
parents:
diff changeset
8374 resolution is retried taking the prefix into consideration.
a61af66fc99e Initial load
duke
parents:
diff changeset
8375 There are two ways that resolution occurs, explicit
a61af66fc99e Initial load
duke
parents:
diff changeset
8376 resolution with the JNI function <code>RegisterNatives</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8377 and the normal automatic resolution. For
a61af66fc99e Initial load
duke
parents:
diff changeset
8378 <code>RegisterNatives</code>, the VM will attempt this
a61af66fc99e Initial load
duke
parents:
diff changeset
8379 association:
a61af66fc99e Initial load
duke
parents:
diff changeset
8380 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8381 method(foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8382 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8383 When this fails, the resolution will be retried with
a61af66fc99e Initial load
duke
parents:
diff changeset
8384 the specified prefix prepended to the method name,
a61af66fc99e Initial load
duke
parents:
diff changeset
8385 yielding the correct resolution:
a61af66fc99e Initial load
duke
parents:
diff changeset
8386 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8387 method(wrapped_foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8388 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8389 For automatic resolution, the VM will attempt:
a61af66fc99e Initial load
duke
parents:
diff changeset
8390 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8391 method(wrapped_foo) -> nativeImplementation(wrapped_foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8392 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8393 When this fails, the resolution will be retried with
a61af66fc99e Initial load
duke
parents:
diff changeset
8394 the specified prefix deleted from the implementation name,
a61af66fc99e Initial load
duke
parents:
diff changeset
8395 yielding the correct resolution:
a61af66fc99e Initial load
duke
parents:
diff changeset
8396 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8397 method(wrapped_foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8398 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8399 Note that since the prefix is only used when standard
a61af66fc99e Initial load
duke
parents:
diff changeset
8400 resolution fails, native methods can be wrapped selectively.
a61af66fc99e Initial load
duke
parents:
diff changeset
8401 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8402 Since each <jvmti/> environment is independent and
a61af66fc99e Initial load
duke
parents:
diff changeset
8403 can do its own transformation of the bytecodes, more
a61af66fc99e Initial load
duke
parents:
diff changeset
8404 than one layer of wrappers may be applied. Thus each
a61af66fc99e Initial load
duke
parents:
diff changeset
8405 environment needs its own prefix. Since transformations
a61af66fc99e Initial load
duke
parents:
diff changeset
8406 are applied in order, the prefixes, if applied, will
a61af66fc99e Initial load
duke
parents:
diff changeset
8407 be applied in the same order.
a61af66fc99e Initial load
duke
parents:
diff changeset
8408 The order of transformation application is described in
a61af66fc99e Initial load
duke
parents:
diff changeset
8409 the <eventlink id="ClassFileLoadHook"/> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
8410 Thus if three environments applied
a61af66fc99e Initial load
duke
parents:
diff changeset
8411 wrappers, <code>foo</code> might become
a61af66fc99e Initial load
duke
parents:
diff changeset
8412 <code>$env3_$env2_$env1_foo</code>. But if, say,
a61af66fc99e Initial load
duke
parents:
diff changeset
8413 the second environment did not apply a wrapper to
a61af66fc99e Initial load
duke
parents:
diff changeset
8414 <code>foo</code> it would be just
a61af66fc99e Initial load
duke
parents:
diff changeset
8415 <code>$env3_$env1_foo</code>. To be able to
a61af66fc99e Initial load
duke
parents:
diff changeset
8416 efficiently determine the sequence of prefixes,
a61af66fc99e Initial load
duke
parents:
diff changeset
8417 an intermediate prefix is only applied if its non-native
a61af66fc99e Initial load
duke
parents:
diff changeset
8418 wrapper exists. Thus, in the last example, even though
a61af66fc99e Initial load
duke
parents:
diff changeset
8419 <code>$env1_foo</code> is not a native method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
8420 <code>$env1_</code> prefix is applied since
a61af66fc99e Initial load
duke
parents:
diff changeset
8421 <code>$env1_foo</code> exists.
a61af66fc99e Initial load
duke
parents:
diff changeset
8422 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8423 Since the prefixes are used at resolution time
a61af66fc99e Initial load
duke
parents:
diff changeset
8424 and since resolution may be arbitrarily delayed, a
a61af66fc99e Initial load
duke
parents:
diff changeset
8425 native method prefix must remain set as long as there
a61af66fc99e Initial load
duke
parents:
diff changeset
8426 are corresponding prefixed native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
8427 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8428 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8429 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8430 <required id="can_set_native_method_prefix"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8431 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8432 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8433 <param id="prefix">
a61af66fc99e Initial load
duke
parents:
diff changeset
8434 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8435 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8436 <nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8437 any existing prefix in this environment is cancelled
a61af66fc99e Initial load
duke
parents:
diff changeset
8438 </nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8439 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8440 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8441 The prefix to apply, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8442 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8443 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8444 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8445 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8446 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8447 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8448 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8449
a61af66fc99e Initial load
duke
parents:
diff changeset
8450 <function id="SetNativeMethodPrefixes" jkernel="yes" phase="any" num="74" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8451 <synopsis>Set Native Method Prefixes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8452 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8453 For a normal agent, <functionlink id="SetNativeMethodPrefix"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8454 will provide all needed native method prefixing.
a61af66fc99e Initial load
duke
parents:
diff changeset
8455 For a meta-agent that performs multiple independent class
a61af66fc99e Initial load
duke
parents:
diff changeset
8456 file transformations (for example as a proxy for another
a61af66fc99e Initial load
duke
parents:
diff changeset
8457 layer of agents) this function allows each transformation
a61af66fc99e Initial load
duke
parents:
diff changeset
8458 to have its own prefix.
a61af66fc99e Initial load
duke
parents:
diff changeset
8459 The prefixes are applied in the order supplied and are
a61af66fc99e Initial load
duke
parents:
diff changeset
8460 processed in the same manor as described for the
a61af66fc99e Initial load
duke
parents:
diff changeset
8461 application of prefixes from multiple <jvmti/> environments
a61af66fc99e Initial load
duke
parents:
diff changeset
8462 in <functionlink id="SetNativeMethodPrefix"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8463 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8464 Any previous prefixes are replaced. Thus, calling this
a61af66fc99e Initial load
duke
parents:
diff changeset
8465 function with a <paramlink id="prefix_count"/> of <code>0</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8466 disables prefixing in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
8467 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8468 <functionlink id="SetNativeMethodPrefix"/> and this function
a61af66fc99e Initial load
duke
parents:
diff changeset
8469 are the two ways to set the prefixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8470 Calling <code>SetNativeMethodPrefix</code> with
a61af66fc99e Initial load
duke
parents:
diff changeset
8471 a prefix is the same as calling this function with
a61af66fc99e Initial load
duke
parents:
diff changeset
8472 <paramlink id="prefix_count"/> of <code>1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8473 Calling <code>SetNativeMethodPrefix</code> with
a61af66fc99e Initial load
duke
parents:
diff changeset
8474 <code>NULL</code> is the same as calling this function with
a61af66fc99e Initial load
duke
parents:
diff changeset
8475 <paramlink id="prefix_count"/> of <code>0</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8476 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8477 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8478 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8479 <required id="can_set_native_method_prefix"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8480 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8481 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8482 <param id="prefix_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
8483 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8484 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8485 The number of prefixes to apply.
a61af66fc99e Initial load
duke
parents:
diff changeset
8486 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8487 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8488 <param id="prefixes">
a61af66fc99e Initial load
duke
parents:
diff changeset
8489 <agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8490 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8491 </agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8492 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8493 The prefixes to apply for this environment, each encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8494 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8495 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8496 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8497 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8498 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8499 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8500 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8501
a61af66fc99e Initial load
duke
parents:
diff changeset
8502 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8503
a61af66fc99e Initial load
duke
parents:
diff changeset
8504 <category id="RawMonitors" label="Raw Monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8505
a61af66fc99e Initial load
duke
parents:
diff changeset
8506 <function id="CreateRawMonitor" phase="onload" callbacksafe="safe" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
8507 <synopsis>Create Raw Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8508 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8509 Create a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8510 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8511 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8512 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8513 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8514 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8515 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
8516 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8517 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8518 A name to identify the monitor, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8519 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8520 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8521 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8522 <param id="monitor_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8523 <outptr><jrawMonitorID/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8524 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8525 On return, points to the created monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8526 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8527 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8528 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8529 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8530 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8531 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8532
a61af66fc99e Initial load
duke
parents:
diff changeset
8533 <function id="DestroyRawMonitor" phase="onload" callbacksafe="safe" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
8534 <synopsis>Destroy Raw Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8535 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8536 Destroy the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8537 If the monitor being destroyed has been entered by this thread, it will be
a61af66fc99e Initial load
duke
parents:
diff changeset
8538 exited before it is destroyed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8539 If the monitor being destroyed has been entered by another thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
8540 an error will be returned and the monitor will not be destroyed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8541 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8542 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8543 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8544 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8545 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8546 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8547 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8548 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8549 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8550 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8551 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8552 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8553 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8554 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8555 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8556 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8557 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8558 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8559
a61af66fc99e Initial load
duke
parents:
diff changeset
8560 <function id="RawMonitorEnter" phase="any" callbacksafe="safe" impl="innative notrace" num="33">
a61af66fc99e Initial load
duke
parents:
diff changeset
8561 <synopsis>Raw Monitor Enter</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8562 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8563 Gain exclusive ownership of a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8564 The same thread may enter a monitor more then once.
a61af66fc99e Initial load
duke
parents:
diff changeset
8565 The thread must
a61af66fc99e Initial load
duke
parents:
diff changeset
8566 <functionlink id="RawMonitorExit">exit</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8567 the monitor the same number of times as it is entered.
a61af66fc99e Initial load
duke
parents:
diff changeset
8568 If a monitor is entered during <code>OnLoad</code> (before attached threads exist)
a61af66fc99e Initial load
duke
parents:
diff changeset
8569 and has not exited when attached threads come into existence, the enter
a61af66fc99e Initial load
duke
parents:
diff changeset
8570 is considered to have occurred on the main thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
8571 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8572 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8573 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8574 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8575 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8576 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8577 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8578 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8579 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8580 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8581 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8582 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8583 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8584 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8585 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8586
a61af66fc99e Initial load
duke
parents:
diff changeset
8587 <function id="RawMonitorExit" phase="any" callbacksafe="safe" impl="innative notrace" num="34">
a61af66fc99e Initial load
duke
parents:
diff changeset
8588 <synopsis>Raw Monitor Exit</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8589 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8590 Release exclusive ownership of a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8591 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8592 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8593 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8594 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8595 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8596 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8597 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8598 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8599 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8600 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8601 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8602 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8603 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8604 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8605 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8606 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8607 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8608 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8609
a61af66fc99e Initial load
duke
parents:
diff changeset
8610 <function id="RawMonitorWait" phase="any" callbacksafe="safe" impl="innative notrace" num="35">
a61af66fc99e Initial load
duke
parents:
diff changeset
8611 <synopsis>Raw Monitor Wait</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8612 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8613 Wait for notification of the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8614 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8615 Causes the current thread to wait until either another thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
8616 <functionlink id="RawMonitorNotify"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
8617 <functionlink id="RawMonitorNotifyAll"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8618 for the specified raw monitor, or the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
8619 <paramlink id="millis">timeout</paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8620 has elapsed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8621 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8622 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8623 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8624 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8625 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8626 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8627 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8628 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8629 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8630 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8631 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8632 <param id="millis">
a61af66fc99e Initial load
duke
parents:
diff changeset
8633 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8634 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8635 The timeout, in milliseconds. If the timeout is
a61af66fc99e Initial load
duke
parents:
diff changeset
8636 zero, then real time is not taken into consideration
a61af66fc99e Initial load
duke
parents:
diff changeset
8637 and the thread simply waits until notified.
a61af66fc99e Initial load
duke
parents:
diff changeset
8638 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8639 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8640 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8641 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8642 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8643 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8644 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8645 <error id="JVMTI_ERROR_INTERRUPT">
a61af66fc99e Initial load
duke
parents:
diff changeset
8646 Wait was interrupted, try again
a61af66fc99e Initial load
duke
parents:
diff changeset
8647 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8648 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8649 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8650
a61af66fc99e Initial load
duke
parents:
diff changeset
8651 <function id="RawMonitorNotify" phase="any" callbacksafe="safe" impl="notrace" num="36">
a61af66fc99e Initial load
duke
parents:
diff changeset
8652 <synopsis>Raw Monitor Notify</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8653 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8654 Notify a single thread waiting on the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8655 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8656 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8657 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8658 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8659 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8660 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8661 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8662 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8663 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8664 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8665 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8666 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8667 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8668 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8669 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8670 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8671 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8672 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8673
a61af66fc99e Initial load
duke
parents:
diff changeset
8674 <function id="RawMonitorNotifyAll" phase="any" callbacksafe="safe" impl="notrace" num="37">
a61af66fc99e Initial load
duke
parents:
diff changeset
8675 <synopsis>Raw Monitor Notify All</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8676 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8677 Notify all threads waiting on the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8678 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8679 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8680 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8681 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8682 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8683 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8684 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8685 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8686 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8687 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8688 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8689 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8690 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8691 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8692 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8693 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8694 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8695 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8696
a61af66fc99e Initial load
duke
parents:
diff changeset
8697 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
8698 <function id="GetRawMonitorUse" num="118">
a61af66fc99e Initial load
duke
parents:
diff changeset
8699 <synopsis>Get Raw Monitor Use</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8700 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8701 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
8702 are filled in with information about usage of the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8703 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8704 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8705 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8706 <required id="can_get_raw_monitor_usage"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8707 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8708 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8709 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8710 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8711 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8712 the raw monitor to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8713 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8714 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8715 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8716 <outptr><struct>jvmtiMonitorUsage</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8717 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8718 On return, filled with monitor information for the
a61af66fc99e Initial load
duke
parents:
diff changeset
8719 specified raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8720 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8721 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8722 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8723 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8724 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8725 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8726
a61af66fc99e Initial load
duke
parents:
diff changeset
8727 <function id="GetRawMonitors" num="119">
a61af66fc99e Initial load
duke
parents:
diff changeset
8728 <synopsis>Get Raw Monitors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8729 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8730 Return the list of raw monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
8731 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8732 Note: details about each monitor can be examined with
a61af66fc99e Initial load
duke
parents:
diff changeset
8733 <functionlink id="GetRawMonitorUse"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8734 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8735 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8736 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8737 <required id="can_get_raw_monitor_usage"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8738 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8739 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8740 <param id="monitorCnt">
a61af66fc99e Initial load
duke
parents:
diff changeset
8741 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8742 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8743 On return, pointer to the number
a61af66fc99e Initial load
duke
parents:
diff changeset
8744 of monitors returned in <code>monitors_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8745 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8746 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8747 <param id="monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8748 <allocbuf outcount="monitorCnt"><jrawMonitorID/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8749 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8750 On return, pointer to the monitor list.
a61af66fc99e Initial load
duke
parents:
diff changeset
8751 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8752 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8753 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8754 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8755 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8756 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8757 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
8758 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8759
a61af66fc99e Initial load
duke
parents:
diff changeset
8760 <category id="jniIntercept" label="JNI Function Interception">
a61af66fc99e Initial load
duke
parents:
diff changeset
8761
a61af66fc99e Initial load
duke
parents:
diff changeset
8762 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
8763 Provides the ability to intercept and resend
a61af66fc99e Initial load
duke
parents:
diff changeset
8764 Java Native Interface (JNI) function calls
a61af66fc99e Initial load
duke
parents:
diff changeset
8765 by manipulating the JNI function table.
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
8766 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
8767 Functions</externallink> in the <i>Java Native Interface Specification</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8768 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8769 The following example illustrates intercepting the
a61af66fc99e Initial load
duke
parents:
diff changeset
8770 <code>NewGlobalRef</code> JNI call in order to count reference
a61af66fc99e Initial load
duke
parents:
diff changeset
8771 creation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8772 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8773 JNIEnv original_jni_Functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
8774 JNIEnv redirected_jni_Functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
8775 int my_global_ref_count = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
8776
a61af66fc99e Initial load
duke
parents:
diff changeset
8777 jobject
a61af66fc99e Initial load
duke
parents:
diff changeset
8778 MyNewGlobalRef(JNIEnv *jni_env, jobject lobj) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8779 ++my_global_ref_count;
a61af66fc99e Initial load
duke
parents:
diff changeset
8780 return originalJNIFunctions-&gt;NewGlobalRef(env, lobj);
a61af66fc99e Initial load
duke
parents:
diff changeset
8781 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8782
a61af66fc99e Initial load
duke
parents:
diff changeset
8783 void
a61af66fc99e Initial load
duke
parents:
diff changeset
8784 myInit() {
a61af66fc99e Initial load
duke
parents:
diff changeset
8785 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
8786
a61af66fc99e Initial load
duke
parents:
diff changeset
8787 err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;original_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8788 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8789 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8790 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8791 err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;redirected_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8792 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8793 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8794 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8795 redirectedJNIFunctions-&gt;NewGlobalRef = MyNewGlobalRef;
a61af66fc99e Initial load
duke
parents:
diff changeset
8796 err = (*jvmti_env)-&gt;SetJNIFunctionTable(jvmti_env, redirected_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8797 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8798 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8799 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8800 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8801 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8802 Sometime after <code>myInit</code> is called the user's JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
8803 code is executed which makes the call to create a new global
a61af66fc99e Initial load
duke
parents:
diff changeset
8804 reference. Instead of going to the normal JNI implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
8805 the call goes to <code>myNewGlobalRef</code>. Note that a
a61af66fc99e Initial load
duke
parents:
diff changeset
8806 copy of the original function table is kept so that the normal
a61af66fc99e Initial load
duke
parents:
diff changeset
8807 JNI function can be called after the data is collected.
a61af66fc99e Initial load
duke
parents:
diff changeset
8808 Note also that any JNI functions which are not overwritten
a61af66fc99e Initial load
duke
parents:
diff changeset
8809 will behave normally.
a61af66fc99e Initial load
duke
parents:
diff changeset
8810 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
8811 check that the example compiles and executes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8812 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
8813 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
8814
a61af66fc99e Initial load
duke
parents:
diff changeset
8815 <function id="SetJNIFunctionTable" phase="start" num="120">
a61af66fc99e Initial load
duke
parents:
diff changeset
8816 <synopsis>Set JNI Function Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8817 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8818 Set the JNI function table
a61af66fc99e Initial load
duke
parents:
diff changeset
8819 in all current and future JNI environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
8820 As a result, all future JNI calls are directed to the specified functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
8821 Use <functionlink id="GetJNIFunctionTable"></functionlink> to get the
a61af66fc99e Initial load
duke
parents:
diff changeset
8822 function table to pass to this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8823 For this function to take effect the the updated table entries must be
a61af66fc99e Initial load
duke
parents:
diff changeset
8824 used by the JNI clients.
a61af66fc99e Initial load
duke
parents:
diff changeset
8825 Since the table is defined <code>const</code> some compilers may optimize
a61af66fc99e Initial load
duke
parents:
diff changeset
8826 away the access to the table, thus preventing this function from taking
a61af66fc99e Initial load
duke
parents:
diff changeset
8827 effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8828 The table is copied--changes to the local copy of the
a61af66fc99e Initial load
duke
parents:
diff changeset
8829 table have no effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8830 This function affects only the function table, all other aspects of the environment are
a61af66fc99e Initial load
duke
parents:
diff changeset
8831 unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
8832 See the examples <internallink id="jniIntercept">above</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8833 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8834 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8835 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8836 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8837 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8838 <param id="function_table">
a61af66fc99e Initial load
duke
parents:
diff changeset
8839 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8840 <struct>jniNativeInterface</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8841 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8842 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8843 Points to the new JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8844 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8845 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8846 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8847 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8848 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8849 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8850
a61af66fc99e Initial load
duke
parents:
diff changeset
8851 <function id="GetJNIFunctionTable" phase="start" num="121">
a61af66fc99e Initial load
duke
parents:
diff changeset
8852 <synopsis>Get JNI Function Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8853 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8854 Get the JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8855 The JNI function table is copied into allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
8856 If <functionlink id="SetJNIFunctionTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8857 has been called, the modified (not the original) function
a61af66fc99e Initial load
duke
parents:
diff changeset
8858 table is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
8859 Only the function table is copied, no other aspects of the environment
a61af66fc99e Initial load
duke
parents:
diff changeset
8860 are copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
8861 See the examples <internallink id="jniIntercept">above</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8862 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8863 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8864 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8865 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8866 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8867 <param id="function_table">
a61af66fc99e Initial load
duke
parents:
diff changeset
8868 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8869 <struct>jniNativeInterface</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8870 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8871 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8872 On return, <code>*function_table</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8873 points a newly allocated copy of the JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8874 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8875 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8876 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8877 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8878 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8879 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8880
a61af66fc99e Initial load
duke
parents:
diff changeset
8881 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8882
a61af66fc99e Initial load
duke
parents:
diff changeset
8883 <category id="eventManagement" label="Event Management">
a61af66fc99e Initial load
duke
parents:
diff changeset
8884
a61af66fc99e Initial load
duke
parents:
diff changeset
8885 <function id="SetEventCallbacks" jkernel="yes" phase="onload" num="122">
a61af66fc99e Initial load
duke
parents:
diff changeset
8886 <synopsis>Set Event Callbacks</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8887 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8888 Set the functions to be called for each event.
a61af66fc99e Initial load
duke
parents:
diff changeset
8889 The callbacks are specified by supplying a replacement function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8890 The function table is copied--changes to the local copy of the
a61af66fc99e Initial load
duke
parents:
diff changeset
8891 table have no effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8892 This is an atomic action, all callbacks are set at once.
a61af66fc99e Initial load
duke
parents:
diff changeset
8893 No events are sent before this function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
8894 When an entry is <code>NULL</code> or when the event is beyond
a61af66fc99e Initial load
duke
parents:
diff changeset
8895 <paramlink id="size_of_callbacks"></paramlink> no event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
8896 Details on events are
a61af66fc99e Initial load
duke
parents:
diff changeset
8897 described <internallink id="EventSection">later</internallink> in this document.
a61af66fc99e Initial load
duke
parents:
diff changeset
8898 An event must be enabled and have a callback in order to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8899 sent--the order in which this function and
a61af66fc99e Initial load
duke
parents:
diff changeset
8900 <functionlink id="SetEventNotificationMode"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8901 are called does not affect the result.
a61af66fc99e Initial load
duke
parents:
diff changeset
8902 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8903 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8904 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8905 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8906 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8907 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
8908 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8909 <struct>jvmtiEventCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8910 <nullok>remove the existing callbacks</nullok>
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 The new event callbacks.
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 <param id="size_of_callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
8917 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8918 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8919 <code>sizeof(jvmtiEventCallbacks)</code>--for version
a61af66fc99e Initial load
duke
parents:
diff changeset
8920 compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
8921 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8922 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8923 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8924 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8925 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8926 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8927
a61af66fc99e Initial load
duke
parents:
diff changeset
8928 <function id="SetEventNotificationMode" jkernel="yes" phase="onload" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
8929 <synopsis>Set Event Notification Mode</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8930 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8931 Control the generation of events.
a61af66fc99e Initial load
duke
parents:
diff changeset
8932 <constants id="jvmtiEventMode" label="Event Enable/Disable" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
8933 <constant id="JVMTI_ENABLE" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8934 If <paramlink id="mode"></paramlink> is <code>JVMTI_ENABLE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8935 the event <paramlink id="event_type"></paramlink> will be enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
8936 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
8937 <constant id="JVMTI_DISABLE" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
8938 If <paramlink id="mode"></paramlink> is <code>JVMTI_DISABLE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8939 the event <paramlink id="event_type"></paramlink> will be disabled
a61af66fc99e Initial load
duke
parents:
diff changeset
8940 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
8941 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
8942 If <code>thread</code> is <code>NULL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8943 the event is enabled or disabled globally; otherwise, it is
a61af66fc99e Initial load
duke
parents:
diff changeset
8944 enabled or disabled for a particular thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
8945 An event is generated for
a61af66fc99e Initial load
duke
parents:
diff changeset
8946 a particular thread if it is enabled either at the thread or global
a61af66fc99e Initial load
duke
parents:
diff changeset
8947 levels.
a61af66fc99e Initial load
duke
parents:
diff changeset
8948 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8949 See <internallink id="EventIndex">below</internallink> for information on specific events.
a61af66fc99e Initial load
duke
parents:
diff changeset
8950 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8951 The following events cannot be controlled at the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
8952 level through this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8953 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
8954 <li><eventlink id="VMInit"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8955 <li><eventlink id="VMStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8956 <li><eventlink id="VMDeath"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8957 <li><eventlink id="ThreadStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8958 <li><eventlink id="CompiledMethodLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8959 <li><eventlink id="CompiledMethodUnload"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8960 <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8961 <li><eventlink id="DataDumpRequest"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8962 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
8963 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8964 Initially, no events are enabled at either the thread level
a61af66fc99e Initial load
duke
parents:
diff changeset
8965 or the global level.
a61af66fc99e Initial load
duke
parents:
diff changeset
8966 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8967 Any needed capabilities (see Event Enabling Capabilities below) must be possessed
a61af66fc99e Initial load
duke
parents:
diff changeset
8968 before calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8969 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8970 Details on events are
a61af66fc99e Initial load
duke
parents:
diff changeset
8971 described <internallink id="EventSection">below</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8972 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8973 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8974 <eventcapabilities></eventcapabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8975 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8976 <param id="mode">
a61af66fc99e Initial load
duke
parents:
diff changeset
8977 <enum>jvmtiEventMode</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
8978 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8979 <code>JVMTI_ENABLE</code> or <code>JVMTI_DISABLE</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8980 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8981 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8982 <param id="event_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
8983 <enum>jvmtiEvent</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
8984 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8985 the event to control
a61af66fc99e Initial load
duke
parents:
diff changeset
8986 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8987 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8988 <param id="event_thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
8989 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
8990 <jthread impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8991 <nullok>event is controlled at the global level</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8992 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
8993 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8994 The thread to control
a61af66fc99e Initial load
duke
parents:
diff changeset
8995 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8996 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8997 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
8998 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8999 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9000 for future expansion
a61af66fc99e Initial load
duke
parents:
diff changeset
9001 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9002 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9003 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9004 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9005 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
9006 <paramlink id="event_thread"/> is non-<code>NULL</code> and is not a valid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9007 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9008 <error id="JVMTI_ERROR_THREAD_NOT_ALIVE">
a61af66fc99e Initial load
duke
parents:
diff changeset
9009 <paramlink id="event_thread"/> is non-<code>NULL</code> and is not live (has not been started or is now dead).
a61af66fc99e Initial load
duke
parents:
diff changeset
9010 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9011 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9012 thread level control was attempted on events which do not
a61af66fc99e Initial load
duke
parents:
diff changeset
9013 permit thread level control.
a61af66fc99e Initial load
duke
parents:
diff changeset
9014 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9015 <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
9016 The Required Event Enabling Capability is not possessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9017 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9018 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9019 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9020
a61af66fc99e Initial load
duke
parents:
diff changeset
9021 <function id="GenerateEvents" num="123">
a61af66fc99e Initial load
duke
parents:
diff changeset
9022 <synopsis>Generate Events</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9023 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9024 Generate events to represent the current state of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
9025 For example, if <paramlink id="event_type"/> is
a61af66fc99e Initial load
duke
parents:
diff changeset
9026 <code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9027 a <eventlink id="CompiledMethodLoad"></eventlink> event will be
a61af66fc99e Initial load
duke
parents:
diff changeset
9028 sent for each currently compiled method.
a61af66fc99e Initial load
duke
parents:
diff changeset
9029 Methods that were loaded and now have been unloaded are not sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
9030 The history of what events have previously been sent does not
a61af66fc99e Initial load
duke
parents:
diff changeset
9031 effect what events are sent by this function--for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
9032 all currently compiled methods
a61af66fc99e Initial load
duke
parents:
diff changeset
9033 will be sent each time this function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
9034 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9035 This function is useful when
a61af66fc99e Initial load
duke
parents:
diff changeset
9036 events may have been missed due to the agent attaching after program
a61af66fc99e Initial load
duke
parents:
diff changeset
9037 execution begins; this function generates the missed events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9038 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9039 Attempts to execute Java programming language code or
a61af66fc99e Initial load
duke
parents:
diff changeset
9040 JNI functions may be paused until this function returns -
a61af66fc99e Initial load
duke
parents:
diff changeset
9041 so neither should be called from the thread sending the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9042 This function returns only after the missed events have been
a61af66fc99e Initial load
duke
parents:
diff changeset
9043 sent, processed and have returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
9044 The event may be sent on a different thread than the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
9045 on which the event occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
9046 The callback for the event must be set with
a61af66fc99e Initial load
duke
parents:
diff changeset
9047 <functionlink id="SetEventCallbacks"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9048 and the event must be enabled with
a61af66fc99e Initial load
duke
parents:
diff changeset
9049 <functionlink id="SetEventNotificationMode"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9050 or the events will not occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
9051 If the VM no longer has the information to generate some or
a61af66fc99e Initial load
duke
parents:
diff changeset
9052 all of the requested events, the events are simply not sent -
a61af66fc99e Initial load
duke
parents:
diff changeset
9053 no error is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
9054 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9055 Only the following events are supported:
a61af66fc99e Initial load
duke
parents:
diff changeset
9056 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9057 <li><eventlink id="CompiledMethodLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9058 <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9059 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9060 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9061 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9062 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9063 <capability id="can_generate_compiled_method_load_events"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
9064 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9065 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9066 <param id="event_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9067 <enum>jvmtiEvent</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9068 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9069 The type of event to generate. Must be one of these:
a61af66fc99e Initial load
duke
parents:
diff changeset
9070 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9071 <li><eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9072 <li><eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9073 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9074 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9075 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9076 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9077 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9078 <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
9079 <paramlink id="event_type"/> is
a61af66fc99e Initial load
duke
parents:
diff changeset
9080 <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9081 and <fieldlink id="can_generate_compiled_method_load_events" struct="jvmtiCapabilities"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9082 is <code>false</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9083 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9084 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9085 <paramlink id="event_type"/> is other than
a61af66fc99e Initial load
duke
parents:
diff changeset
9086 <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9087 or <eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9088 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9089 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9090 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9091
a61af66fc99e Initial load
duke
parents:
diff changeset
9092 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
9093
a61af66fc99e Initial load
duke
parents:
diff changeset
9094 <category id="extension" label="Extension Mechanism">
a61af66fc99e Initial load
duke
parents:
diff changeset
9095
a61af66fc99e Initial load
duke
parents:
diff changeset
9096 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9097 These functions
a61af66fc99e Initial load
duke
parents:
diff changeset
9098 allow a <jvmti/> implementation to provide functions and events
a61af66fc99e Initial load
duke
parents:
diff changeset
9099 beyond those defined in this specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
9100 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9101 Both extension functions and extension events have parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9102 each of which has a 'type' and 'kind' chosen from the following tables:
a61af66fc99e Initial load
duke
parents:
diff changeset
9103
a61af66fc99e Initial load
duke
parents:
diff changeset
9104 <constants id="jvmtiParamTypes" label="Extension Function/Event Parameter Types" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9105 <constant id="JVMTI_TYPE_JBYTE" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
9106 Java programming language primitive type - <code>byte</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9107 JNI type <code>jbyte</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9108 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9109 <constant id="JVMTI_TYPE_JCHAR" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
9110 Java programming language primitive type - <code>char</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9111 JNI type <code>jchar</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9112 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9113 <constant id="JVMTI_TYPE_JSHORT" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
9114 Java programming language primitive type - <code>short</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9115 JNI type <code>jshort</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9116 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9117 <constant id="JVMTI_TYPE_JINT" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
9118 Java programming language primitive type - <code>int</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9119 JNI type <datalink id="jint"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9120 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9121 <constant id="JVMTI_TYPE_JLONG" num="105">
a61af66fc99e Initial load
duke
parents:
diff changeset
9122 Java programming language primitive type - <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9123 JNI type <datalink id="jlong"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9124 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9125 <constant id="JVMTI_TYPE_JFLOAT" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
9126 Java programming language primitive type - <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9127 JNI type <datalink id="jfloat"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9128 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9129 <constant id="JVMTI_TYPE_JDOUBLE" num="107">
a61af66fc99e Initial load
duke
parents:
diff changeset
9130 Java programming language primitive type - <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9131 JNI type <datalink id="jdouble"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9132 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9133 <constant id="JVMTI_TYPE_JBOOLEAN" num="108">
a61af66fc99e Initial load
duke
parents:
diff changeset
9134 Java programming language primitive type - <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9135 JNI type <datalink id="jboolean"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9136 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9137 <constant id="JVMTI_TYPE_JOBJECT" num="109">
a61af66fc99e Initial load
duke
parents:
diff changeset
9138 Java programming language object type - <code>java.lang.Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9139 JNI type <datalink id="jobject"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9140 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9141 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9142 <constant id="JVMTI_TYPE_JTHREAD" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
9143 Java programming language object type - <code>java.lang.Thread</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9144 <jvmti/> type <datalink id="jthread"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9145 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9146 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9147 <constant id="JVMTI_TYPE_JCLASS" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
9148 Java programming language object type - <code>java.lang.Class</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9149 JNI type <datalink id="jclass"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9150 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9151 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9152 <constant id="JVMTI_TYPE_JVALUE" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
9153 Union of all Java programming language primitive and object types -
a61af66fc99e Initial load
duke
parents:
diff changeset
9154 JNI type <datalink id="jvalue"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9155 Returned values which represent object types are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9156 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9157 <constant id="JVMTI_TYPE_JFIELDID" num="113">
a61af66fc99e Initial load
duke
parents:
diff changeset
9158 Java programming language field identifier -
a61af66fc99e Initial load
duke
parents:
diff changeset
9159 JNI type <datalink id="jfieldID"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9160 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9161 <constant id="JVMTI_TYPE_JMETHODID" num="114">
a61af66fc99e Initial load
duke
parents:
diff changeset
9162 Java programming language method identifier -
a61af66fc99e Initial load
duke
parents:
diff changeset
9163 JNI type <datalink id="jmethodID"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9164 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9165 <constant id="JVMTI_TYPE_CCHAR" num="115">
a61af66fc99e Initial load
duke
parents:
diff changeset
9166 C programming language type - <code>char</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9167 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9168 <constant id="JVMTI_TYPE_CVOID" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
9169 C programming language type - <code>void</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9170 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9171 <constant id="JVMTI_TYPE_JNIENV" num="117">
a61af66fc99e Initial load
duke
parents:
diff changeset
9172 JNI environment - <code>JNIEnv</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9173 Should be used with the correct <datalink id="jvmtiParamKind"/> to make it a pointer type.
a61af66fc99e Initial load
duke
parents:
diff changeset
9174 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9175 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9176
a61af66fc99e Initial load
duke
parents:
diff changeset
9177 <constants id="jvmtiParamKind" label="Extension Function/Event Parameter Kinds" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9178 <constant id="JVMTI_KIND_IN" num="91">
a61af66fc99e Initial load
duke
parents:
diff changeset
9179 Ingoing argument - <code>foo</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9180 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9181 <constant id="JVMTI_KIND_IN_PTR" num="92">
a61af66fc99e Initial load
duke
parents:
diff changeset
9182 Ingoing pointer argument - <code>const foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9183 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9184 <constant id="JVMTI_KIND_IN_BUF" num="93">
a61af66fc99e Initial load
duke
parents:
diff changeset
9185 Ingoing array argument - <code>const foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9186 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9187 <constant id="JVMTI_KIND_ALLOC_BUF" num="94">
a61af66fc99e Initial load
duke
parents:
diff changeset
9188 Outgoing allocated array argument - <code>foo**</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9189 Free with <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9190 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9191 <constant id="JVMTI_KIND_ALLOC_ALLOC_BUF" num="95">
a61af66fc99e Initial load
duke
parents:
diff changeset
9192 Outgoing allocated array of allocated arrays argument - <code>foo***</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9193 Free with <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9194 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9195 <constant id="JVMTI_KIND_OUT" num="96">
a61af66fc99e Initial load
duke
parents:
diff changeset
9196 Outgoing argument - <code>foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9197 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9198 <constant id="JVMTI_KIND_OUT_BUF" num="97">
a61af66fc99e Initial load
duke
parents:
diff changeset
9199 Outgoing array argument (pre-allocated by agent) - <code>foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9200 Do not <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9201 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9202 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9203
a61af66fc99e Initial load
duke
parents:
diff changeset
9204 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9205
a61af66fc99e Initial load
duke
parents:
diff changeset
9206 <typedef id="jvmtiParamInfo" label="Extension Function/Event Parameter Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9207 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
9208 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9209 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9210 The parameter name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9211 <internallink id="mUTF">modified UTF-8</internallink> string
a61af66fc99e Initial load
duke
parents:
diff changeset
9212 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9213 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9214 <field id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
9215 <enum>jvmtiParamKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9216 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9217 The kind of the parameter - type modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
9218 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9219 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9220 <field id="base_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9221 <enum>jvmtiParamTypes</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9222 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9223 The base type of the parameter - modified by <code>kind</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9224 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9225 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9226 <field id="null_ok">
a61af66fc99e Initial load
duke
parents:
diff changeset
9227 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9228 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9229 Is a <code>NULL</code> argument permitted? Applies only to pointer and object types.
a61af66fc99e Initial load
duke
parents:
diff changeset
9230 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9231 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9232 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9233
a61af66fc99e Initial load
duke
parents:
diff changeset
9234 <callback id="jvmtiExtensionFunction">
a61af66fc99e Initial load
duke
parents:
diff changeset
9235 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9236 <synopsis>Extension Function</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9237 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9238 This is the implementation-specific extension function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9239 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9240 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9241 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
9242 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9243 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9244 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9245 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9246 The <jvmti/> environment is the only fixed parameter for extension functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9247 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9248 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9249 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9250 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9251 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9252 The extension function-specific parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9253 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9254 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9255 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9256 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
9257
a61af66fc99e Initial load
duke
parents:
diff changeset
9258 <function id="GetExtensionFunctions" phase="onload" num="124">
a61af66fc99e Initial load
duke
parents:
diff changeset
9259 <synopsis>Get Extension Functions</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9260
a61af66fc99e Initial load
duke
parents:
diff changeset
9261 <typedef id="jvmtiExtensionFunctionInfo" label="Extension Function Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9262 <field id="func">
a61af66fc99e Initial load
duke
parents:
diff changeset
9263 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9264 <struct>jvmtiExtensionFunction</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9265 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9266 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9267 The actual function to call
a61af66fc99e Initial load
duke
parents:
diff changeset
9268 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9269 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9270 <field id="id">
a61af66fc99e Initial load
duke
parents:
diff changeset
9271 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9272 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9273 The identifier for the extension function, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9274 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9275 Uses package name conventions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9276 For example, <code>com.sun.hotspot.bar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9277 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9278 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9279 <field id="short_description">
a61af66fc99e Initial load
duke
parents:
diff changeset
9280 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9281 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9282 A one sentence description of the function, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9283 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9284 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9285 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9286 <field id="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9287 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9288 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9289 The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9290 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9291 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9292 <field id="params">
a61af66fc99e Initial load
duke
parents:
diff changeset
9293 <allocfieldbuf outcount="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9294 <struct>jvmtiParamInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9295 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9296 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9297 Array of
a61af66fc99e Initial load
duke
parents:
diff changeset
9298 <fieldlink id="param_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9299 parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
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 <field id="error_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9303 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9304 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9305 The number of possible error returns (excluding universal errors)
a61af66fc99e Initial load
duke
parents:
diff changeset
9306 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9307 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9308 <field id="errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
9309 <allocfieldbuf outcount="error_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9310 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9311 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9312 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9313 Array of <fieldlink id="error_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9314 possible errors
a61af66fc99e Initial load
duke
parents:
diff changeset
9315 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9316 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9317 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9318
a61af66fc99e Initial load
duke
parents:
diff changeset
9319 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9320 Returns the set of extension functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9321 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9322 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9323 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9324 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9325 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9326 <param id="extension_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9327 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9328 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9329 On return, points to the number of extension functions
a61af66fc99e Initial load
duke
parents:
diff changeset
9330 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9331 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9332 <param id="extensions">
a61af66fc99e Initial load
duke
parents:
diff changeset
9333 <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionFunctionInfo</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9334 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9335 Returns an array of extension function info, one per function
a61af66fc99e Initial load
duke
parents:
diff changeset
9336 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9337 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9338 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9339 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9340 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9341 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9342
a61af66fc99e Initial load
duke
parents:
diff changeset
9343 <function id="GetExtensionEvents" phase="onload" num="125">
a61af66fc99e Initial load
duke
parents:
diff changeset
9344 <synopsis>Get Extension Events</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9345
a61af66fc99e Initial load
duke
parents:
diff changeset
9346 <typedef id="jvmtiExtensionEventInfo" label="Extension Event Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9347 <field id="extension_event_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
9348 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9349 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9350 The identifying index of the event
a61af66fc99e Initial load
duke
parents:
diff changeset
9351 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9352 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9353 <field id="id">
a61af66fc99e Initial load
duke
parents:
diff changeset
9354 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9355 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9356 The identifier for the extension event, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9357 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9358 Uses package name conventions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9359 For example, <code>com.sun.hotspot.bar</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="short_description">
a61af66fc99e Initial load
duke
parents:
diff changeset
9363 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9364 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9365 A one sentence description of the event, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9366 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9367 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9368 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9369 <field id="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9370 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9371 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9372 The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9373 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9374 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9375 <field id="params">
a61af66fc99e Initial load
duke
parents:
diff changeset
9376 <allocfieldbuf outcount="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9377 <struct>jvmtiParamInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9378 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9379 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9380 Array of
a61af66fc99e Initial load
duke
parents:
diff changeset
9381 <fieldlink id="param_count" struct="jvmtiExtensionEventInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9382 parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
a61af66fc99e Initial load
duke
parents:
diff changeset
9383 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9384 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9385 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9386
a61af66fc99e Initial load
duke
parents:
diff changeset
9387 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9388 Returns the set of extension events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9389 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9390 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9391 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9392 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9393 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9394 <param id="extension_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9395 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9396 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9397 On return, points to the number of extension events
a61af66fc99e Initial load
duke
parents:
diff changeset
9398 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9399 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9400 <param id="extensions">
a61af66fc99e Initial load
duke
parents:
diff changeset
9401 <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionEventInfo</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9402 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9403 Returns an array of extension event info, one per event
a61af66fc99e Initial load
duke
parents:
diff changeset
9404 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9405 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9406 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9407 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9408 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9409 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9410
a61af66fc99e Initial load
duke
parents:
diff changeset
9411 <callback id="jvmtiExtensionEvent">
a61af66fc99e Initial load
duke
parents:
diff changeset
9412 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9413 <synopsis>Extension Event</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9414 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9415 This is the implementation-specific event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9416 The event handler is set with
a61af66fc99e Initial load
duke
parents:
diff changeset
9417 <functionlink id="SetExtensionEventCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9418 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9419 Event handlers for extension events must be declared varargs to match this definition.
a61af66fc99e Initial load
duke
parents:
diff changeset
9420 Failure to do so could result in calling convention mismatch and undefined behavior
a61af66fc99e Initial load
duke
parents:
diff changeset
9421 on some platforms.
a61af66fc99e Initial load
duke
parents:
diff changeset
9422 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9423 For example, if the <code>jvmtiParamInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9424 returned by <functionlink id="GetExtensionEvents"/> indicates that
a61af66fc99e Initial load
duke
parents:
diff changeset
9425 there is a <code>jint</code> parameter, the event handler should be
a61af66fc99e Initial load
duke
parents:
diff changeset
9426 declared:
a61af66fc99e Initial load
duke
parents:
diff changeset
9427 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9428 void JNICALL myHandler(jvmtiEnv* jvmti_env, jint myInt, ...)
a61af66fc99e Initial load
duke
parents:
diff changeset
9429 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9430 Note the terminal "<code>...</code>" which indicates varargs.
a61af66fc99e Initial load
duke
parents:
diff changeset
9431 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9432 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9433 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
9434 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9435 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9436 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9437 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9438 The <jvmti/> environment is the only fixed parameter for extension events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9439 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9440 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9441 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9442 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9443 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9444 The extension event-specific parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9445 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9446 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9447 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9448 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
9449
a61af66fc99e Initial load
duke
parents:
diff changeset
9450 <function id="SetExtensionEventCallback" phase="onload" num="126">
a61af66fc99e Initial load
duke
parents:
diff changeset
9451 <synopsis>Set Extension Event Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9452
a61af66fc99e Initial load
duke
parents:
diff changeset
9453 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9454 Sets the callback function for an extension event and
a61af66fc99e Initial load
duke
parents:
diff changeset
9455 enables the event. Or, if the callback is <code>NULL</code>, disables
a61af66fc99e Initial load
duke
parents:
diff changeset
9456 the event. Note that unlike standard events, setting
a61af66fc99e Initial load
duke
parents:
diff changeset
9457 the callback and enabling the event are a single operation.
a61af66fc99e Initial load
duke
parents:
diff changeset
9458 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9459 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9460 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9461 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9462 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9463 <param id="extension_event_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
9464 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9465 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9466 Identifies which callback to set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9467 This index is the
a61af66fc99e Initial load
duke
parents:
diff changeset
9468 <fieldlink id="extension_event_index" struct="jvmtiExtensionEventInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9469 field of
a61af66fc99e Initial load
duke
parents:
diff changeset
9470 <datalink id="jvmtiExtensionEventInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9471 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9472 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9473 <param id="callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
9474 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9475 <struct>jvmtiExtensionEvent</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9476 <nullok>disable the event</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
9477 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9478 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9479 If <code>callback</code> is non-<code>NULL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9480 set <code>callback</code> to be the event callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
9481 and enable the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9482 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9483 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9484 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9485 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9486 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9487 <paramlink id="extension_event_index"/> is not an
a61af66fc99e Initial load
duke
parents:
diff changeset
9488 <fieldlink id="extension_event_index"
a61af66fc99e Initial load
duke
parents:
diff changeset
9489 struct="jvmtiExtensionEventInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9490 returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
9491 <functionlink id="GetExtensionEvents"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9492 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9493 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9494 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9495
a61af66fc99e Initial load
duke
parents:
diff changeset
9496 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
9497
a61af66fc99e Initial load
duke
parents:
diff changeset
9498 <category id="capability" label="Capability">
a61af66fc99e Initial load
duke
parents:
diff changeset
9499
a61af66fc99e Initial load
duke
parents:
diff changeset
9500 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9501 The capabilities functions allow you to change the
a61af66fc99e Initial load
duke
parents:
diff changeset
9502 functionality available to <jvmti/>--that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
9503 which <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9504 functions can be called, what events can be generated,
a61af66fc99e Initial load
duke
parents:
diff changeset
9505 and what functionality these events and functions can
a61af66fc99e Initial load
duke
parents:
diff changeset
9506 provide.
a61af66fc99e Initial load
duke
parents:
diff changeset
9507 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9508 The "Capabilities" section of each function and event describe which
a61af66fc99e Initial load
duke
parents:
diff changeset
9509 capabilities, if any, they are associated with. "Required Functionality"
a61af66fc99e Initial load
duke
parents:
diff changeset
9510 means it is available for use and no capabilities must be added to use it.
a61af66fc99e Initial load
duke
parents:
diff changeset
9511 "Optional Functionality" means the agent must possess the capability
a61af66fc99e Initial load
duke
parents:
diff changeset
9512 before it can be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
9513 To possess a capability, the agent must
a61af66fc99e Initial load
duke
parents:
diff changeset
9514 <functionlink id="AddCapabilities">add the capability</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9515 "Optional Features" describe capabilities which,
a61af66fc99e Initial load
duke
parents:
diff changeset
9516 if added, extend the feature set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9517 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9518 The potentially available capabilities of each <jvmti/> implementation are different.
a61af66fc99e Initial load
duke
parents:
diff changeset
9519 Depending on the implementation, a capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
9520 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9521 <li>may never be added</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9522 <li>may be added in either the <code>OnLoad</code> or live phase in any environment</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9523 <li>may be added only during the <code>OnLoad</code> phase</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9524 <li>may be possessed by only one environment at a time</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9525 <li>may be possessed by only one environment at a time,
a61af66fc99e Initial load
duke
parents:
diff changeset
9526 and only during the <code>OnLoad</code> phase</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9527 <li>and so on ...</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9528 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9529 Frequently, the addition of a capability may incur a cost in execution speed, start up
a61af66fc99e Initial load
duke
parents:
diff changeset
9530 time, and/or memory footprint. Note that the overhead of using a capability
a61af66fc99e Initial load
duke
parents:
diff changeset
9531 is completely different than the overhead of possessing a capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
9532 Take single stepping as an example. When single stepping is on (that
a61af66fc99e Initial load
duke
parents:
diff changeset
9533 is, when the event is enabled and thus actively sending events)
a61af66fc99e Initial load
duke
parents:
diff changeset
9534 the overhead of sending and processing an event
a61af66fc99e Initial load
duke
parents:
diff changeset
9535 on each instruction is huge in any implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
9536 However, the overhead of possessing the capability may be small or large,
a61af66fc99e Initial load
duke
parents:
diff changeset
9537 depending on the implementation. Also, when and if a capability is potentially
a61af66fc99e Initial load
duke
parents:
diff changeset
9538 available depends on the implementation. Some examples:
a61af66fc99e Initial load
duke
parents:
diff changeset
9539 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9540 <li>One VM might perform all execution by compiling bytecodes into
a61af66fc99e Initial load
duke
parents:
diff changeset
9541 native code and be unable to generate single step instructions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9542 In this implementation the capability can not be added.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9543 <li>Another VM may be able to switch execution to a single stepping
a61af66fc99e Initial load
duke
parents:
diff changeset
9544 interpreter at any time. In this implementation, having the capability has no
a61af66fc99e Initial load
duke
parents:
diff changeset
9545 overhead and could be added at any time.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9546 <li>Yet another VM might be able to choose a bytecode compiling or single stepping capable interpreted
a61af66fc99e Initial load
duke
parents:
diff changeset
9547 execution engine at start up, but be unable to switch between them.
a61af66fc99e Initial load
duke
parents:
diff changeset
9548 In this implementation the capability would need to be added
a61af66fc99e Initial load
duke
parents:
diff changeset
9549 during the <code>OnLoad</code> phase (before bytecode
a61af66fc99e Initial load
duke
parents:
diff changeset
9550 execution begins) and would have a large impact on execution speed
a61af66fc99e Initial load
duke
parents:
diff changeset
9551 even if single stepping was never used.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9552 <li>Still another VM might be able to add an "is single stepping on" check
a61af66fc99e Initial load
duke
parents:
diff changeset
9553 into compiled bytecodes or a generated interpreter. Again in this implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9554 the capability would need to be added during the <code>OnLoad</code> phase but the overhead (a test
a61af66fc99e Initial load
duke
parents:
diff changeset
9555 and branch on each instruction) would be considerably less.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9556 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9557 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9558 Each <jvmti/> <internallink id="environments">environment</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9559 has its own set of capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9560 Initially, that set is empty.
a61af66fc99e Initial load
duke
parents:
diff changeset
9561 Any desired capability must be added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9562 If possible, capabilities should be added during the <code>OnLoad</code> phase. For most
a61af66fc99e Initial load
duke
parents:
diff changeset
9563 virtual machines certain capabilities require special set up for
a61af66fc99e Initial load
duke
parents:
diff changeset
9564 the virtual machine and this set up must happen
a61af66fc99e Initial load
duke
parents:
diff changeset
9565 during the <code>OnLoad</code> phase, before the virtual machine begins execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
9566 Once a capability is added, it can
a61af66fc99e Initial load
duke
parents:
diff changeset
9567 only be removed if explicitly relinquished by the environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
9568 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9569 The agent can,
a61af66fc99e Initial load
duke
parents:
diff changeset
9570 <functionlink id="GetPotentialCapabilities">determine what
a61af66fc99e Initial load
duke
parents:
diff changeset
9571 capabilities this VM can potentially provide</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9572 <functionlink id="AddCapabilities">add the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9573 to be used</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9574 <functionlink id="RelinquishCapabilities">release capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9575 which are no longer needed</functionlink>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
9576 <functionlink id="GetCapabilities">examine the currently available
a61af66fc99e Initial load
duke
parents:
diff changeset
9577 capabilities</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9578 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9579
a61af66fc99e Initial load
duke
parents:
diff changeset
9580 <intro id="capabilityExamples" label="Capability Examples">
a61af66fc99e Initial load
duke
parents:
diff changeset
9581 For example, a freshly started agent (in the <code>OnLoad</code> function)
a61af66fc99e Initial load
duke
parents:
diff changeset
9582 wants to enable all possible capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9583 Note that, in general, this is not advisable as the agent may suffer
a61af66fc99e Initial load
duke
parents:
diff changeset
9584 a performance penalty for functionality it is not using.
a61af66fc99e Initial load
duke
parents:
diff changeset
9585 The code might look like this in C:
a61af66fc99e Initial load
duke
parents:
diff changeset
9586 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9587 jvmtiCapabilities capa;
a61af66fc99e Initial load
duke
parents:
diff changeset
9588 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
9589
a61af66fc99e Initial load
duke
parents:
diff changeset
9590 err = (*jvmti)-&gt;GetPotentialCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9591 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
9592 err = (*jvmti)-&gt;AddCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9593 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9594 For example, if an agent wants to check if it can get
a61af66fc99e Initial load
duke
parents:
diff changeset
9595 the bytecodes of a method (that is, it wants to check
a61af66fc99e Initial load
duke
parents:
diff changeset
9596 if it previously added this capability and has not
a61af66fc99e Initial load
duke
parents:
diff changeset
9597 relinquished it), the code might
a61af66fc99e Initial load
duke
parents:
diff changeset
9598 look like this in C:
a61af66fc99e Initial load
duke
parents:
diff changeset
9599 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9600 jvmtiCapabilities capa;
a61af66fc99e Initial load
duke
parents:
diff changeset
9601 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
9602
a61af66fc99e Initial load
duke
parents:
diff changeset
9603 err = (*jvmti)-&gt;GetCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9604 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
9605 if (capa.can_get_bytecodes) { ... } }
a61af66fc99e Initial load
duke
parents:
diff changeset
9606 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9607 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9608
a61af66fc99e Initial load
duke
parents:
diff changeset
9609 <capabilitiestypedef id="jvmtiCapabilities" label="The Capabilities Structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
9610 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9611 The functions in this category use this capabilities structure
a61af66fc99e Initial load
duke
parents:
diff changeset
9612 which contains boolean flags corresponding to each capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
9613 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9614 <capabilityfield id="can_tag_objects">
a61af66fc99e Initial load
duke
parents:
diff changeset
9615 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9616 Can set and get tags, as described in the
a61af66fc99e Initial load
duke
parents:
diff changeset
9617 <internallink id="Heap">Heap category</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9618 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9619 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9620 <capabilityfield id="can_generate_field_modification_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9621 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9622 Can set watchpoints on field modification -
a61af66fc99e Initial load
duke
parents:
diff changeset
9623 <functionlink id="SetFieldModificationWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9624 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9625 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9626 <capabilityfield id="can_generate_field_access_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9627 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9628 Can set watchpoints on field access -
a61af66fc99e Initial load
duke
parents:
diff changeset
9629 <functionlink id="SetFieldAccessWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9630 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9631 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9632 <capabilityfield id="can_get_bytecodes">
a61af66fc99e Initial load
duke
parents:
diff changeset
9633 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9634 Can get bytecodes of a method <functionlink id="GetBytecodes"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9635 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9636 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9637 <capabilityfield id="can_get_synthetic_attribute">
a61af66fc99e Initial load
duke
parents:
diff changeset
9638 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9639 Can test if a field or method is synthetic -
a61af66fc99e Initial load
duke
parents:
diff changeset
9640 <functionlink id="IsFieldSynthetic"></functionlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9641 <functionlink id="IsMethodSynthetic"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9642 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9643 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9644 <capabilityfield id="can_get_owned_monitor_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9645 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9646 Can get information about ownership of monitors -
a61af66fc99e Initial load
duke
parents:
diff changeset
9647 <functionlink id="GetOwnedMonitorInfo"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9648 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9649 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9650 <capabilityfield id="can_get_current_contended_monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
9651 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9652 Can <functionlink id="GetCurrentContendedMonitor"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9653 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9654 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9655 <capabilityfield id="can_get_monitor_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9656 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9657 Can <functionlink id="GetObjectMonitorUsage"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9658 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9659 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9660 <capabilityfield id="can_pop_frame">
a61af66fc99e Initial load
duke
parents:
diff changeset
9661 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9662 Can pop frames off the stack - <functionlink id="PopFrame"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9663 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9664 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9665 <capabilityfield id="can_redefine_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
9666 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9667 Can redefine classes with <functionlink id="RedefineClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9668 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9669 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9670 <capabilityfield id="can_signal_thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
9671 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9672 Can send stop or interrupt to threads
a61af66fc99e Initial load
duke
parents:
diff changeset
9673 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9674 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9675 <capabilityfield id="can_get_source_file_name">
a61af66fc99e Initial load
duke
parents:
diff changeset
9676 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9677 Can get the source file name of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
9678 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9679 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9680 <capabilityfield id="can_get_line_numbers">
a61af66fc99e Initial load
duke
parents:
diff changeset
9681 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9682 Can get the line number table of a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9683 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9684 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9685 <capabilityfield id="can_get_source_debug_extension">
a61af66fc99e Initial load
duke
parents:
diff changeset
9686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9687 Can get the source debug extension of a class
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_access_local_variables">
a61af66fc99e Initial load
duke
parents:
diff changeset
9691 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9692 Can set and get local variables
a61af66fc99e Initial load
duke
parents:
diff changeset
9693 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9694 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9695 <capabilityfield id="can_maintain_original_method_order">
a61af66fc99e Initial load
duke
parents:
diff changeset
9696 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9697 Can return methods in the order they occur in the class file
a61af66fc99e Initial load
duke
parents:
diff changeset
9698 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9699 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9700 <capabilityfield id="can_generate_single_step_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9701 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9702 Can get <eventlink id="SingleStep">single step</eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9703 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9704 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9705 <capabilityfield id="can_generate_exception_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9706 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9707 Can get <eventlink id="Exception">exception thrown</eventlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9708 <eventlink id="ExceptionCatch">exception catch</eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9709 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9710 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9711 <capabilityfield id="can_generate_frame_pop_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9712 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9713 Can <functionlink id="NotifyFramePop">set</functionlink> and thus get
a61af66fc99e Initial load
duke
parents:
diff changeset
9714 <eventlink id="FramePop"></eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9715 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9716 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9717 <capabilityfield id="can_generate_breakpoint_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9718 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9719 Can <functionlink id="SetBreakpoint">set</functionlink> and thus get
a61af66fc99e Initial load
duke
parents:
diff changeset
9720 <eventlink id="Breakpoint"></eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9721 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9722 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9723 <capabilityfield id="can_suspend">
a61af66fc99e Initial load
duke
parents:
diff changeset
9724 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9725 Can suspend and resume threads
a61af66fc99e Initial load
duke
parents:
diff changeset
9726 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9727 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9728 <capabilityfield id="can_redefine_any_class">
a61af66fc99e Initial load
duke
parents:
diff changeset
9729 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9730 Can modify (retransform or redefine) any non-primitive non-array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
9731 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9732 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9733 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9734 <capabilityfield id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
9735 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9736 Can <functionlink id="GetCurrentThreadCpuTime">get</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9737 current thread CPU time
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_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
9741 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9742 Can <functionlink id="GetThreadCpuTime">get</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9743 thread CPU time
a61af66fc99e Initial load
duke
parents:
diff changeset
9744 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9745 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9746 <capabilityfield id="can_generate_method_entry_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9747 disp1="can_generate" disp2="_method_entry_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9748 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9749 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9750 Can generate method entry events on entering a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9751 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9752 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9753 <capabilityfield id="can_generate_method_exit_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9754 disp1="can_generate" disp2="_method_exit_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9755 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9756 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9757 Can generate method exit events on leaving a method
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_generate_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9761 disp1="can_generate" disp2="_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9762 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9763 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9764 Can generate ClassFileLoadHook events for every loaded class.
a61af66fc99e Initial load
duke
parents:
diff changeset
9765 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9766 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9767 <capabilityfield id="can_generate_compiled_method_load_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9768 disp1="can_generate" disp2="_compiled_method_load_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9769 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9771 Can generate events when a method is compiled or unloaded
a61af66fc99e Initial load
duke
parents:
diff changeset
9772 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9773 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9774 <capabilityfield id="can_generate_monitor_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9775 disp1="can_generate" disp2="_monitor_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9776 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9777 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9778 Can generate events on monitor activity
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_vm_object_alloc_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9782 disp1="can_generate" disp2="_vm_object_alloc_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9783 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9784 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9785 Can generate events on VM allocation of an object
a61af66fc99e Initial load
duke
parents:
diff changeset
9786 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9787 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9788 <capabilityfield id="can_generate_native_method_bind_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9789 disp1="can_generate" disp2="_native_method_bind_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9790 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9791 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9792 Can generate events when a native method is bound to its
a61af66fc99e Initial load
duke
parents:
diff changeset
9793 implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9794 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9795 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9796 <capabilityfield id="can_generate_garbage_collection_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9797 disp1="can_generate" disp2="_garbage_collection_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9798 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9799 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9800 Can generate events when garbage collection begins or ends
a61af66fc99e Initial load
duke
parents:
diff changeset
9801 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9802 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9803 <capabilityfield id="can_generate_object_free_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9804 disp1="can_generate" disp2="_object_free_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9805 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9806 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9807 Can generate events when the garbage collector frees an object
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_force_early_return" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9811 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9812 Can return early from a method, as described in the
a61af66fc99e Initial load
duke
parents:
diff changeset
9813 <internallink id="ForceEarlyReturn">Force Early Return category</internallink>.
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_get_owned_monitor_stack_depth_info" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9817 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9818 Can get information about owned monitors with stack depth -
a61af66fc99e Initial load
duke
parents:
diff changeset
9819 <functionlink id="GetOwnedMonitorStackDepthInfo"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9820 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9821 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9822 <capabilityfield id="can_get_constant_pool" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9823 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9824 Can get the constant pool of a class -
a61af66fc99e Initial load
duke
parents:
diff changeset
9825 <functionlink id="GetConstantPool"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9826 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9827 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9828 <capabilityfield id="can_set_native_method_prefix" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9829 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9830 Can set prefix to be applied when native method cannot be resolved -
a61af66fc99e Initial load
duke
parents:
diff changeset
9831 <functionlink id="SetNativeMethodPrefix"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9832 <functionlink id="SetNativeMethodPrefixes"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9833 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9834 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9835 <capabilityfield id="can_retransform_classes" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9836 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9837 Can retransform classes with <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9838 In addition to the restrictions imposed by the specific
a61af66fc99e Initial load
duke
parents:
diff changeset
9839 implementation on this capability (see the
a61af66fc99e Initial load
duke
parents:
diff changeset
9840 <internallink id="capability">Capability</internallink> section),
a61af66fc99e Initial load
duke
parents:
diff changeset
9841 this capability must be set before the
a61af66fc99e Initial load
duke
parents:
diff changeset
9842 <eventlink id="ClassFileLoadHook"/> event is enabled for the
a61af66fc99e Initial load
duke
parents:
diff changeset
9843 first time in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
9844 An environment that possesses this capability at the time that
a61af66fc99e Initial load
duke
parents:
diff changeset
9845 <code>ClassFileLoadHook</code> is enabled for the first time is
a61af66fc99e Initial load
duke
parents:
diff changeset
9846 said to be <i>retransformation capable</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9847 An environment that does not possess this capability at the time that
a61af66fc99e Initial load
duke
parents:
diff changeset
9848 <code>ClassFileLoadHook</code> is enabled for the first time is
a61af66fc99e Initial load
duke
parents:
diff changeset
9849 said to be <i>retransformation incapable</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9850 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9851 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9852 <capabilityfield id="can_retransform_any_class" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9853 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9854 <functionlink id="RetransformClasses"/> can be called on any class
a61af66fc99e Initial load
duke
parents:
diff changeset
9855 (<fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9856 must also be set)
a61af66fc99e Initial load
duke
parents:
diff changeset
9857 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9858 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9859 <capabilityfield id="can_generate_resource_exhaustion_heap_events" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9860 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9861 Can generate events when the VM is unable to allocate memory from
a61af66fc99e Initial load
duke
parents:
diff changeset
9862 the <tm>Java</tm> platform heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
9863 See <eventlink id="ResourceExhausted"/>.
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_resource_exhaustion_threads_events" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9867 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9868 Can generate events when the VM is unable to create a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9869 See <eventlink id="ResourceExhausted"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9870 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9871 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9872 </capabilitiestypedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9873
a61af66fc99e Initial load
duke
parents:
diff changeset
9874 <function id="GetPotentialCapabilities" jkernel="yes" phase="onload" num="140">
a61af66fc99e Initial load
duke
parents:
diff changeset
9875 <synopsis>Get Potential Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9876 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9877 Returns via <paramlink id="capabilities_ptr"></paramlink> the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9878 features that can potentially be possessed by this environment
a61af66fc99e Initial load
duke
parents:
diff changeset
9879 at this time.
a61af66fc99e Initial load
duke
parents:
diff changeset
9880 The returned capabilities differ from the complete set of capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9881 implemented by the VM in two cases: another environment possesses
a61af66fc99e Initial load
duke
parents:
diff changeset
9882 capabilities that can only be possessed by one environment, or the
a61af66fc99e Initial load
duke
parents:
diff changeset
9883 current <functionlink id="GetPhase">phase</functionlink> is live,
a61af66fc99e Initial load
duke
parents:
diff changeset
9884 and certain capabilities can only be added during the <code>OnLoad</code> phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9885 The <functionlink id="AddCapabilities"></functionlink> function
a61af66fc99e Initial load
duke
parents:
diff changeset
9886 may be used to set any or all or these capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9887 Currently possessed capabilities are included.
a61af66fc99e Initial load
duke
parents:
diff changeset
9888 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9889 Typically this function is used in the <code>OnLoad</code> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9890 Some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
9891 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9892 In this case, the set of potentially available capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9893 will likely differ from the <code>OnLoad</code> phase set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9894 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9895 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
9896 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9897 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9898 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9899 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9900 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9901 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9902 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9903 <outptr><struct>jvmtiCapabilities</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9904 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9905 On return, points to the <jvmti/> capabilities that may be added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9906 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9907 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9908 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9909 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9910 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9911 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9912
a61af66fc99e Initial load
duke
parents:
diff changeset
9913 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
9914 <function id="EstimateCostOfCapabilities" phase="onload" num="141">
a61af66fc99e Initial load
duke
parents:
diff changeset
9915 <synopsis>Estimate Cost Of Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9916 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9917 <issue>There is strong opposition to this function. The concern is
a61af66fc99e Initial load
duke
parents:
diff changeset
9918 that it would be difficult or impossible to provide meaningful
a61af66fc99e Initial load
duke
parents:
diff changeset
9919 numbers, as the amount of impact is conditional on many factors
a61af66fc99e Initial load
duke
parents:
diff changeset
9920 that a single number could not represent. There is doubt that
a61af66fc99e Initial load
duke
parents:
diff changeset
9921 conditional implementations would be used or are even a good idea.
a61af66fc99e Initial load
duke
parents:
diff changeset
9922 The thought is that release documentation for the implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9923 would be the best means of exposing this information.
a61af66fc99e Initial load
duke
parents:
diff changeset
9924 Unless new arguments are presented, I intend to remove this
a61af66fc99e Initial load
duke
parents:
diff changeset
9925 function in the next revision.
a61af66fc99e Initial load
duke
parents:
diff changeset
9926 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
9927 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9928 Return via the <paramlink id="time_impact_ptr"></paramlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9929 <paramlink id="space_impact_ptr"></paramlink> an estimate of the impact
a61af66fc99e Initial load
duke
parents:
diff changeset
9930 of adding the capabilities pointed to by
a61af66fc99e Initial load
duke
parents:
diff changeset
9931 <paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9932 The returned estimates are in percentage of additional overhead, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
9933 a time impact of 100 mean the application might run
a61af66fc99e Initial load
duke
parents:
diff changeset
9934 at half the speed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9935 The estimates are very rough approximations and are not guaranteed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9936 Note also, that the estimates are of the impact of having the
a61af66fc99e Initial load
duke
parents:
diff changeset
9937 capability available--when and if it is used the impact may be
a61af66fc99e Initial load
duke
parents:
diff changeset
9938 much greater.
a61af66fc99e Initial load
duke
parents:
diff changeset
9939 Estimates can be for a single capability or for a set of
a61af66fc99e Initial load
duke
parents:
diff changeset
9940 capabilities. Note that the costs are not necessarily additive,
a61af66fc99e Initial load
duke
parents:
diff changeset
9941 adding support for one capability might make another available
a61af66fc99e Initial load
duke
parents:
diff changeset
9942 for free or conversely having two capabilities at once may
a61af66fc99e Initial load
duke
parents:
diff changeset
9943 have multiplicative impact.
a61af66fc99e Initial load
duke
parents:
diff changeset
9944 Estimates are relative to the current set of capabilities -
a61af66fc99e Initial load
duke
parents:
diff changeset
9945 that is, how much more impact given the currently possessed capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9946 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9947 Typically this function is used in the OnLoad function,
a61af66fc99e Initial load
duke
parents:
diff changeset
9948 some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
9949 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9950 In this case, the set of potentially available capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9951 will likely differ from the OnLoad phase set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9952 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9953 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
9954 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9955 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9956 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9957 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9958 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9959 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9960 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9961 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9962 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9963 points to the <jvmti/> capabilities to evaluate.
a61af66fc99e Initial load
duke
parents:
diff changeset
9964 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9965 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9966 <param id="time_impact_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9967 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9968 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9969 On return, points to the estimated percentage increase in
a61af66fc99e Initial load
duke
parents:
diff changeset
9970 run time if this capability was added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9971 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9972 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9973 <param id="space_impact_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9974 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9975 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9976 On return, points to the estimated percentage increase in
a61af66fc99e Initial load
duke
parents:
diff changeset
9977 memory space used if this capability was added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9978 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9979 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9980 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9981 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9982 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
9983 The desired capabilities are not even potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
9984 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9985 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9986 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9987 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
9988
a61af66fc99e Initial load
duke
parents:
diff changeset
9989 <function id="AddCapabilities" jkernel="yes" phase="onload" num="142">
a61af66fc99e Initial load
duke
parents:
diff changeset
9990 <synopsis>Add Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9991 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9992 Set new capabilities by adding the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9993 whose values are set to one (<code>1</code>) in
a61af66fc99e Initial load
duke
parents:
diff changeset
9994 <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9995 All previous capabilities are retained.
a61af66fc99e Initial load
duke
parents:
diff changeset
9996 Typically this function is used in the <code>OnLoad</code> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9997 Some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
9998 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9999 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10000 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10001 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10002 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10003 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10004 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10005 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10006 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10007 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10008 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10009 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10010 Points to the <jvmti/> capabilities to add.
a61af66fc99e Initial load
duke
parents:
diff changeset
10011 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10012 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10013 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10014 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10015 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10016 The desired capabilities are not even potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10017 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10018 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10019 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10020
a61af66fc99e Initial load
duke
parents:
diff changeset
10021
a61af66fc99e Initial load
duke
parents:
diff changeset
10022 <function id="RelinquishCapabilities" phase="onload" num="143">
a61af66fc99e Initial load
duke
parents:
diff changeset
10023 <synopsis>Relinquish Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10024 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10025 Relinquish the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10026 whose values are set to one (<code>1</code>) in
a61af66fc99e Initial load
duke
parents:
diff changeset
10027 <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10028 Some implementations may allow only one environment to have a capability
a61af66fc99e Initial load
duke
parents:
diff changeset
10029 (see the <internallink id="capability">capability introduction</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10030 This function releases capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10031 so that they may be used by other agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
10032 All other capabilities are retained.
a61af66fc99e Initial load
duke
parents:
diff changeset
10033 The capability will no longer be present in <functionlink id="GetCapabilities"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10034 Attempting to relinquish a capability that the agent does not possess is not an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
10035 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10036 It is possible for the agent to be actively using capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10037 which are being relinquished. For example, a thread is currently
a61af66fc99e Initial load
duke
parents:
diff changeset
10038 suspended and can_suspend is being relinquished or an event is currently
a61af66fc99e Initial load
duke
parents:
diff changeset
10039 enabled and can_generate_whatever is being relinquished.
a61af66fc99e Initial load
duke
parents:
diff changeset
10040 There are three possible ways we could spec this:
a61af66fc99e Initial load
duke
parents:
diff changeset
10041 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10042 <li>relinquish automatically releases them</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10043 <li>relinquish checks and returns some error code if held</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10044 <li>it is the agent's responsibility and it is not checked</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10045 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10046 One of these should be chosen.
a61af66fc99e Initial load
duke
parents:
diff changeset
10047 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10048 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10049 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10050 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10051 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10052 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10053 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10054 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10055 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10056 Points to the <jvmti/> capabilities to relinquish.
a61af66fc99e Initial load
duke
parents:
diff changeset
10057 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10058 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10059 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10060 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10061 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10062 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10063
a61af66fc99e Initial load
duke
parents:
diff changeset
10064
a61af66fc99e Initial load
duke
parents:
diff changeset
10065
a61af66fc99e Initial load
duke
parents:
diff changeset
10066 <function id="GetCapabilities" jkernel="yes" phase="any" num="89">
a61af66fc99e Initial load
duke
parents:
diff changeset
10067 <synopsis>Get Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10068 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10069 Returns via <paramlink id="capabilities_ptr"></paramlink> the optional <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10070 features which this environment currently possesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
10071 Each possessed capability is indicated by a one (<code>1</code>) in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10072 corresponding field of the <internallink id="jvmtiCapabilities">capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10073 structure</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10074 An environment does not possess a capability unless it has been successfully added with
a61af66fc99e Initial load
duke
parents:
diff changeset
10075 <functionlink id="AddCapabilities"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10076 An environment only loses possession of a capability if it has been relinquished with
a61af66fc99e Initial load
duke
parents:
diff changeset
10077 <functionlink id="RelinquishCapabilities"/>. Thus, this function returns the net result
a61af66fc99e Initial load
duke
parents:
diff changeset
10078 of the <code>AddCapabilities</code> and <code>RelinquishCapabilities</code> calls which
a61af66fc99e Initial load
duke
parents:
diff changeset
10079 have been made.
a61af66fc99e Initial load
duke
parents:
diff changeset
10080 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10081 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10082 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10083 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10084 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10085 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10086 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10087 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10088 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10089 <outptr><struct>jvmtiCapabilities</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10090 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10091 On return, points to the <jvmti/> capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
10092 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10093 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10094 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10095 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10096 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10097 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10098
a61af66fc99e Initial load
duke
parents:
diff changeset
10099 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10100
a61af66fc99e Initial load
duke
parents:
diff changeset
10101
a61af66fc99e Initial load
duke
parents:
diff changeset
10102 <category id="timers" label="Timers">
a61af66fc99e Initial load
duke
parents:
diff changeset
10103
a61af66fc99e Initial load
duke
parents:
diff changeset
10104 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10105 These functions provide timing information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10106 The resolution at which the time is updated is not specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
10107 They provides nanosecond precision, but not necessarily nanosecond accuracy.
a61af66fc99e Initial load
duke
parents:
diff changeset
10108 Details about the timers, such as their maximum values, can be accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
10109 the timer information functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
10110 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10111
a61af66fc99e Initial load
duke
parents:
diff changeset
10112 <typedef id="jvmtiTimerInfo" label="Timer Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
10113 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10114 The information function for each timer returns this data structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
10115 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10116 <field id="max_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
10117 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10118 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10119 The maximum value the timer can reach.
a61af66fc99e Initial load
duke
parents:
diff changeset
10120 After this value is reached the timer wraps back to zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
10121 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10122 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10123 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10124 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10125 <field id="may_skip_forward">
a61af66fc99e Initial load
duke
parents:
diff changeset
10126 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10127 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10128 If true, the timer can be externally adjusted and as a result skip forward.
a61af66fc99e Initial load
duke
parents:
diff changeset
10129 If false, the timer value will never increase faster than real time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10130 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10131 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10132 <field id="may_skip_backward">
a61af66fc99e Initial load
duke
parents:
diff changeset
10133 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10134 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10135 If true, the timer can be externally adjusted and as a result skip backward.
a61af66fc99e Initial load
duke
parents:
diff changeset
10136 If false, the timer value will be monotonically increasing.
a61af66fc99e Initial load
duke
parents:
diff changeset
10137 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10138 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10139 <field id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
10140 <enum>jvmtiTimerKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
10141 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10142 The kind of timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10143 On a platform that does not distinguish between user and system time, <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
10144 id="JVMTI_TIMER_TOTAL_CPU"><code>JVMTI_TIMER_TOTAL_CPU</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10145 is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10146 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10147 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10148 <field id="reserved1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10149 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10150 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10151 Reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
10152 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10153 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10154 <field id="reserved2">
a61af66fc99e Initial load
duke
parents:
diff changeset
10155 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10156 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10157 Reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
10158 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10159 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10160 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
10161
a61af66fc99e Initial load
duke
parents:
diff changeset
10162 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10163 Where the timer kind is --
a61af66fc99e Initial load
duke
parents:
diff changeset
10164
a61af66fc99e Initial load
duke
parents:
diff changeset
10165 <constants id="jvmtiTimerKind" label="Timer Kinds" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10166 <constant id="JVMTI_TIMER_USER_CPU" num="30">
a61af66fc99e Initial load
duke
parents:
diff changeset
10167 CPU time that a thread is in user mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
10168 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10169 <constant id="JVMTI_TIMER_TOTAL_CPU" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
10170 CPU time that a thread is in user or system mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
10171 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10172 <constant id="JVMTI_TIMER_ELAPSED" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
10173 Elapsed time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10174 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10175 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10176 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10177
a61af66fc99e Initial load
duke
parents:
diff changeset
10178 <function id="GetCurrentThreadCpuTimerInfo" callbacksafe="safe" impl="innative notrace" phase="start" num="134">
a61af66fc99e Initial load
duke
parents:
diff changeset
10179 <synopsis>Get Current Thread CPU Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10180 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10181 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10182 <functionlink id="GetCurrentThreadCpuTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10183 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10184 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10185 This information is specific to the platform and the implementation of
a61af66fc99e Initial load
duke
parents:
diff changeset
10186 <functionlink id="GetCurrentThreadCpuTime"/> and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10187 does not vary by thread nor does it vary
a61af66fc99e Initial load
duke
parents:
diff changeset
10188 during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10189 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10190 Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10191 and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10192 returned by <code>GetCurrentThreadCpuTimerInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10193 and <functionlink id="GetThreadCpuTimerInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10194 may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10195 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10196 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10197 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10198 <required id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10199 Can get current thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10200 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10201 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10202 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10203 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10204 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10205 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10206 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10207 returned by <functionlink id="GetCurrentThreadCpuTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10208 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10209 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10210 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10211 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10212 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10213 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10214
a61af66fc99e Initial load
duke
parents:
diff changeset
10215 <function id="GetCurrentThreadCpuTime" callbacksafe="safe" impl="innative notrace" phase="start" num="135">
a61af66fc99e Initial load
duke
parents:
diff changeset
10216 <synopsis>Get Current Thread CPU Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10217 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10218 Return the CPU time utilized by the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
10219 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10220 Note that the <functionlink id="GetThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10221 function provides CPU time for any thread, including
a61af66fc99e Initial load
duke
parents:
diff changeset
10222 the current thread. <code>GetCurrentThreadCpuTime</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10223 exists to support platforms which cannot
a61af66fc99e Initial load
duke
parents:
diff changeset
10224 supply CPU time for threads other than the current
a61af66fc99e Initial load
duke
parents:
diff changeset
10225 thread or which have more accurate information for
a61af66fc99e Initial load
duke
parents:
diff changeset
10226 the current thread (see
a61af66fc99e Initial load
duke
parents:
diff changeset
10227 <functionlink id="GetCurrentThreadCpuTimerInfo"/> vs
a61af66fc99e Initial load
duke
parents:
diff changeset
10228 <functionlink id="GetThreadCpuTimerInfo"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10229 On many platforms this call will be equivalent to:
a61af66fc99e Initial load
duke
parents:
diff changeset
10230 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
10231 GetThreadCpuTime(env, NULL, nanos_ptr)
a61af66fc99e Initial load
duke
parents:
diff changeset
10232 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
10233 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10234 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10235 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10236 <required id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10237 Can get current thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10238 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10239 If this capability is enabled after threads have started,
a61af66fc99e Initial load
duke
parents:
diff changeset
10240 the implementation may choose any time up
a61af66fc99e Initial load
duke
parents:
diff changeset
10241 to and including the time that the capability is enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
10242 as the point where CPU time collection starts.
a61af66fc99e Initial load
duke
parents:
diff changeset
10243 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10244 This capability must be potentially available on any
a61af66fc99e Initial load
duke
parents:
diff changeset
10245 platform where
a61af66fc99e Initial load
duke
parents:
diff changeset
10246 <internallink id="jvmtiCapabilities.can_get_thread_cpu_time"><code>can_get_thread_cpu_time</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10247 is potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10248 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10249 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10250 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10251 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10252 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10253 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10254 On return, points to the CPU time used by this thread
a61af66fc99e Initial load
duke
parents:
diff changeset
10255 in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10256 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10257 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10258 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10259 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10260 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10261 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10262 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10263 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10264
a61af66fc99e Initial load
duke
parents:
diff changeset
10265 <function id="GetThreadCpuTimerInfo" num="136">
a61af66fc99e Initial load
duke
parents:
diff changeset
10266 <synopsis>Get Thread CPU Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10267 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10268 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10269 <functionlink id="GetThreadCpuTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10270 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10271 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10272 This information is specific to the platform and the implementation of
a61af66fc99e Initial load
duke
parents:
diff changeset
10273 <functionlink id="GetThreadCpuTime"/> and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10274 does not vary by thread nor does it vary
a61af66fc99e Initial load
duke
parents:
diff changeset
10275 during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10276 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10277 Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10278 and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10279 returned by <functionlink id="GetCurrentThreadCpuTimerInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10280 and <code>GetThreadCpuTimerInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10281 may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10282 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10283 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10284 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10285 <required id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10286 Can get thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10287 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10288 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10289 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10290 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10291 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10292 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10293 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10294 returned by <functionlink id="GetThreadCpuTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10295 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10296 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10297 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10298 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10299 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10300 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10301
a61af66fc99e Initial load
duke
parents:
diff changeset
10302 <function id="GetThreadCpuTime" num="137">
a61af66fc99e Initial load
duke
parents:
diff changeset
10303 <synopsis>Get Thread CPU Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10304 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10305 Return the CPU time utilized by the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
10306 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10307 Get information about this timer with
a61af66fc99e Initial load
duke
parents:
diff changeset
10308 <functionlink id="GetThreadCpuTimerInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10309 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10310 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10311 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10312 <required id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10313 Can get thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10314 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10315 If this capability is enabled after threads have started,
a61af66fc99e Initial load
duke
parents:
diff changeset
10316 the implementation may choose any time up
a61af66fc99e Initial load
duke
parents:
diff changeset
10317 to and including the time that the capability is enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
10318 as the point where CPU time collection starts.
a61af66fc99e Initial load
duke
parents:
diff changeset
10319 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10320 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10321 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10322 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
10323 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10324 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10325 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
10326 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10327 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10328 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10329 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10330 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10331 On return, points to the CPU time used by the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
10332 in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10333 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10334 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10335 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10336 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10337 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10338 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10339 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10340 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10341
a61af66fc99e Initial load
duke
parents:
diff changeset
10342 <function id="GetTimerInfo" phase="any" callbacksafe="safe" num="138">
a61af66fc99e Initial load
duke
parents:
diff changeset
10343 <synopsis>Get Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10344 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10345 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10346 <functionlink id="GetTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10347 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10348 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10349 This information will not change during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10350 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10351 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10352 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10353 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10354 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10355 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10356 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10357 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10358 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10359 returned by <functionlink id="GetTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10360 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10361 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10362 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10363 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10364 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10365 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10366
a61af66fc99e Initial load
duke
parents:
diff changeset
10367 <function id="GetTime" phase="any" callbacksafe="safe" num="139">
a61af66fc99e Initial load
duke
parents:
diff changeset
10368 <synopsis>Get Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10369 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10370 Return the current value of the system timer, in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10371 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10372 The value returned represents nanoseconds since some fixed but
a61af66fc99e Initial load
duke
parents:
diff changeset
10373 arbitrary time (perhaps in the future, so values may be
a61af66fc99e Initial load
duke
parents:
diff changeset
10374 negative). This function provides nanosecond precision, but not
a61af66fc99e Initial load
duke
parents:
diff changeset
10375 necessarily nanosecond accuracy. No guarantees are made about
a61af66fc99e Initial load
duke
parents:
diff changeset
10376 how frequently values change.
a61af66fc99e Initial load
duke
parents:
diff changeset
10377 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10378 Get information about this timer with
a61af66fc99e Initial load
duke
parents:
diff changeset
10379 <functionlink id="GetTimerInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10380 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10381 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10382 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10383 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10384 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10385 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10386 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10387 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10388 On return, points to the time in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10389 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10390 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10391 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10392 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10393 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10394 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10395 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10396 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10397
a61af66fc99e Initial load
duke
parents:
diff changeset
10398 <function id="GetAvailableProcessors" phase="any" num="144">
a61af66fc99e Initial load
duke
parents:
diff changeset
10399 <synopsis>Get Available Processors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10400 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10401 Returns the number of processors available to the Java virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
10402 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10403 This value may change during a particular invocation of the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
10404 Applications that are sensitive to the number of available processors should
a61af66fc99e Initial load
duke
parents:
diff changeset
10405 therefore occasionally poll this property.
a61af66fc99e Initial load
duke
parents:
diff changeset
10406 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10407 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10408 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10409 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10410 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10411 <param id="processor_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10412 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10413 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10414 On return, points to the maximum number of processors available to the
a61af66fc99e Initial load
duke
parents:
diff changeset
10415 virtual machine; never smaller than one.
a61af66fc99e Initial load
duke
parents:
diff changeset
10416 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10417 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10418 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10419 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10420 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10421 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10422
a61af66fc99e Initial load
duke
parents:
diff changeset
10423 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10424
a61af66fc99e Initial load
duke
parents:
diff changeset
10425
a61af66fc99e Initial load
duke
parents:
diff changeset
10426 <category id="classLoaderSearch" label="Class Loader Search">
a61af66fc99e Initial load
duke
parents:
diff changeset
10427
a61af66fc99e Initial load
duke
parents:
diff changeset
10428 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10429 These functions allow the agent to add to the locations that a class loader searches for a class.
a61af66fc99e Initial load
duke
parents:
diff changeset
10430 This is useful for installing instrumentation under the correct class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
10431 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10432
a61af66fc99e Initial load
duke
parents:
diff changeset
10433 <function id="AddToBootstrapClassLoaderSearch" jkernel="yes" phase="onload" num="149">
a61af66fc99e Initial load
duke
parents:
diff changeset
10434 <synopsis>Add To Bootstrap Class Loader Search</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10435 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10436 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
10437 bootstrap class loader. See <vmspec chapter="5.3.1"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10438 After the bootstrap
a61af66fc99e Initial load
duke
parents:
diff changeset
10439 class loader unsuccessfully searches for a class, the specified platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10440 search path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in
a61af66fc99e Initial load
duke
parents:
diff changeset
10441 the <paramlink id="segment"/>. This function may be called multiple times to add multiple segments,
a61af66fc99e Initial load
duke
parents:
diff changeset
10442 the segments will be searched in the order that this function was called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10443 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10444 In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10445 search path segment to be searched after the bootstrap class loader unsuccessfully searches
a61af66fc99e Initial load
duke
parents:
diff changeset
10446 for a class. The segment is typically a directory or JAR file.
a61af66fc99e Initial load
duke
parents:
diff changeset
10447 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10448 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
10449 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
10450 JAR file</externallink>. The agent should take care that the JAR file does not
a61af66fc99e Initial load
duke
parents:
diff changeset
10451 contain any classes or resources other than those to be defined by the bootstrap
a61af66fc99e Initial load
duke
parents:
diff changeset
10452 class loader for the purposes of instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
10453 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
10454 <vmspec/> specifies that a subsequent attempt to resolve a symbolic
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10455 reference that the Java virtual machine has previously unsuccessfully attempted
a61af66fc99e Initial load
duke
parents:
diff changeset
10456 to resolve always fails with the same error that was thrown as a result of the
a61af66fc99e Initial load
duke
parents:
diff changeset
10457 initial resolution attempt. Consequently, if the JAR file contains an entry
a61af66fc99e Initial load
duke
parents:
diff changeset
10458 that corresponds to a class for which the Java virtual machine has
a61af66fc99e Initial load
duke
parents:
diff changeset
10459 unsuccessfully attempted to resolve a reference, then subsequent attempts to
a61af66fc99e Initial load
duke
parents:
diff changeset
10460 resolve that reference will fail with the same error as the initial attempt.
a61af66fc99e Initial load
duke
parents:
diff changeset
10461 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10462 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10463 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10464 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10465 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10466 <param id="segment">
a61af66fc99e Initial load
duke
parents:
diff changeset
10467 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10468 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10469 The platform-dependent search path segment, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10470 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10471 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10472 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10473 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10474 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10475 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
10476 <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
a61af66fc99e Initial load
duke
parents:
diff changeset
10477 existing JAR file is an invalid path.
a61af66fc99e Initial load
duke
parents:
diff changeset
10478 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10479 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10480 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10481
a61af66fc99e Initial load
duke
parents:
diff changeset
10482 <function id="AddToSystemClassLoaderSearch" jkernel="yes" phase="onload" num="151" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10483 <synopsis>Add To System Class Loader Search</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10484 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10485 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
10486 defined by the system class loader. See <vmspec chapter="5.3.2"/>.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10487 After the class loader unsuccessfully searches for a class, the specified platform-dependent search
a61af66fc99e Initial load
duke
parents:
diff changeset
10488 path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10489 <paramlink id="segment"/>. This function may be called multiple times to add multiple segments, the
a61af66fc99e Initial load
duke
parents:
diff changeset
10490 segments will be searched in the order that this function was called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10491 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10492 In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10493 search path segment to be searched after the system class loader unsuccessfully searches
a61af66fc99e Initial load
duke
parents:
diff changeset
10494 for a class. The segment is typically a directory or JAR file.
a61af66fc99e Initial load
duke
parents:
diff changeset
10495 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10496 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
10497 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
10498 searched after the system class loader unsuccessfully searches for a class. The agent should
a61af66fc99e Initial load
duke
parents:
diff changeset
10499 take care that the JAR file does not contain any classes or resources other than those to be
a61af66fc99e Initial load
duke
parents:
diff changeset
10500 defined by the system class loader for the purposes of instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
10501 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10502 In the live phase the system class loader supports adding a JAR file to be searched if
a61af66fc99e Initial load
duke
parents:
diff changeset
10503 the system class loader implements a method name <code>appendToClassPathForInstrumentation</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10504 which takes a single parameter of type <code>java.lang.String</code>. The method is not required
a61af66fc99e Initial load
duke
parents:
diff changeset
10505 to have <code>public</code> access.
a61af66fc99e Initial load
duke
parents:
diff changeset
10506 <p/>
3330
1d80a2429f59 7033669: JVM TI spec has to be changed to not contain URLS to the VM Spec
kamg
parents: 2125
diff changeset
10507 <vmspec/> specifies that a subsequent attempt to resolve a symbolic
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10508 reference that the Java virtual machine has previously unsuccessfully attempted
a61af66fc99e Initial load
duke
parents:
diff changeset
10509 to resolve always fails with the same error that was thrown as a result of the
a61af66fc99e Initial load
duke
parents:
diff changeset
10510 initial resolution attempt. Consequently, if the JAR file contains an entry
a61af66fc99e Initial load
duke
parents:
diff changeset
10511 that corresponds to a class for which the Java virtual machine has
a61af66fc99e Initial load
duke
parents:
diff changeset
10512 unsuccessfully attempted to resolve a reference, then subsequent attempts to
a61af66fc99e Initial load
duke
parents:
diff changeset
10513 resolve that reference will fail with the same error as the initial attempt.
a61af66fc99e Initial load
duke
parents:
diff changeset
10514 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10515 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10516 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10517 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10518 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10519 <param id="segment">
a61af66fc99e Initial load
duke
parents:
diff changeset
10520 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10521 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10522 The platform-dependent search path segment, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10523 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10524 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10525 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10526 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10527 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10528 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
10529 <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
a61af66fc99e Initial load
duke
parents:
diff changeset
10530 existing JAR file is an invalid path.
a61af66fc99e Initial load
duke
parents:
diff changeset
10531 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10532 <error id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED">
a61af66fc99e Initial load
duke
parents:
diff changeset
10533 Operation not supported by the system class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
10534 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10535 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10536 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10537
a61af66fc99e Initial load
duke
parents:
diff changeset
10538 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10539
a61af66fc99e Initial load
duke
parents:
diff changeset
10540
a61af66fc99e Initial load
duke
parents:
diff changeset
10541 <category id="props" label="System Properties">
a61af66fc99e Initial load
duke
parents:
diff changeset
10542
a61af66fc99e Initial load
duke
parents:
diff changeset
10543 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10544 These functions get and set system properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
10545 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10546
a61af66fc99e Initial load
duke
parents:
diff changeset
10547 <function id="GetSystemProperties" phase="onload" num="130">
a61af66fc99e Initial load
duke
parents:
diff changeset
10548 <synopsis>Get System Properties</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10549 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10550 The list of VM system property keys which may be used with
a61af66fc99e Initial load
duke
parents:
diff changeset
10551 <functionlink id="GetSystemProperty"/> is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10552 It is strongly recommended that virtual machines provide the
a61af66fc99e Initial load
duke
parents:
diff changeset
10553 following property keys:
a61af66fc99e Initial load
duke
parents:
diff changeset
10554 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10555 <li><code>java.vm.vendor</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10556 <li><code>java.vm.version</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10557 <li><code>java.vm.name</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10558 <li><code>java.vm.info</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10559 <li><code>java.library.path</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10560 <li><code>java.class.path</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10561 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10562 Provides access to system properties defined by and used
a61af66fc99e Initial load
duke
parents:
diff changeset
10563 by the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10564 Properties set on the command-line are included.
a61af66fc99e Initial load
duke
parents:
diff changeset
10565 This allows getting and setting of these properties
a61af66fc99e Initial load
duke
parents:
diff changeset
10566 before the VM even begins executing bytecodes.
a61af66fc99e Initial load
duke
parents:
diff changeset
10567 Since this is a VM view of system properties, the set of available
a61af66fc99e Initial load
duke
parents:
diff changeset
10568 properties will usually be different than that
a61af66fc99e Initial load
duke
parents:
diff changeset
10569 in <code>java.lang.System.getProperties</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10570 JNI method invocation may be used to access
a61af66fc99e Initial load
duke
parents:
diff changeset
10571 <code>java.lang.System.getProperties</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10572 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10573 The set of properties may grow during execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10574 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10575 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10576 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10577 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10578 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10579 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10580 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10581 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10582 On return, points to the number of property keys returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10583 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10584 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10585 <param id="property_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10586 <allocallocbuf outcount="count_ptr"><char/></allocallocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10587 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10588 On return, points to an array of property keys, encoded as
a61af66fc99e Initial load
duke
parents:
diff changeset
10589 <internallink id="mUTF">modified UTF-8</internallink> strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
10590 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10591 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10592 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10593 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10594 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10595 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10596
a61af66fc99e Initial load
duke
parents:
diff changeset
10597 <function id="GetSystemProperty" phase="onload" num="131">
a61af66fc99e Initial load
duke
parents:
diff changeset
10598 <synopsis>Get System Property</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10599 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10600 Return a VM system property value given the property key.
a61af66fc99e Initial load
duke
parents:
diff changeset
10601 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10602 The function <functionlink id="GetSystemProperties"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10603 returns the set of property keys which may be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
10604 The properties which can be retrieved may grow during
a61af66fc99e Initial load
duke
parents:
diff changeset
10605 execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10606 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10607 Since this is a VM view of system properties, the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10608 of properties may differ from that returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
10609 <code>java.lang.System.getProperty(String)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10610 A typical VM might copy the values of the VM system
a61af66fc99e Initial load
duke
parents:
diff changeset
10611 properties into the <code>Properties</code> held by
a61af66fc99e Initial load
duke
parents:
diff changeset
10612 <code>java.lang.System</code> during the initialization
a61af66fc99e Initial load
duke
parents:
diff changeset
10613 of that class. Thereafter any changes to the VM system
a61af66fc99e Initial load
duke
parents:
diff changeset
10614 properties (with <functionlink id="SetSystemProperty"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
10615 or the <code>java.lang.System</code> system properties
a61af66fc99e Initial load
duke
parents:
diff changeset
10616 (with <code>java.lang.System.setProperty(String,String)</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
10617 would cause the values to diverge.
a61af66fc99e Initial load
duke
parents:
diff changeset
10618 JNI method invocation may be used to access
a61af66fc99e Initial load
duke
parents:
diff changeset
10619 <code>java.lang.System.getProperty(String)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10620 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10621 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10622 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10623 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10624 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10625 <param id="property">
a61af66fc99e Initial load
duke
parents:
diff changeset
10626 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10627 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10628 The key of the property to retrieve, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10629 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10630 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10631 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10632 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10633 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10634 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10635 On return, points to the property value, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10636 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10637 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10638 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10639 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10640 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10641 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10642 This property is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10643 Use <functionlink id="GetSystemProperties"/> to find available properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
10644 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10645 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10646 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10647
a61af66fc99e Initial load
duke
parents:
diff changeset
10648 <function id="SetSystemProperty" phase="onloadOnly" num="132">
a61af66fc99e Initial load
duke
parents:
diff changeset
10649 <synopsis>Set System Property</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10650 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10651 Set a VM system property value.
a61af66fc99e Initial load
duke
parents:
diff changeset
10652 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10653 The function <functionlink id="GetSystemProperties"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10654 returns the set of property keys, some of these may be settable.
a61af66fc99e Initial load
duke
parents:
diff changeset
10655 See <functionlink id="GetSystemProperty"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10656 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10657 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10658 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10659 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10660 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10661 <param id="property">
a61af66fc99e Initial load
duke
parents:
diff changeset
10662 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10663 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10664 The key of the property, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10665 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10666 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10667 </param>
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 2019
diff changeset
10668 <param id="value_ptr">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10669 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10670 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10671 <nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10672 do not set the value, but return <errorlink id="JVMTI_ERROR_NOT_AVAILABLE"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10673 if the property is not writeable
a61af66fc99e Initial load
duke
parents:
diff changeset
10674 </nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10675 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10676 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10677 The property value to set, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10678 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10679 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10680 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10681 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10682 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10683 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10684 This property is not available or is not writeable.
a61af66fc99e Initial load
duke
parents:
diff changeset
10685 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10686 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10687 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10688
a61af66fc99e Initial load
duke
parents:
diff changeset
10689 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10690
a61af66fc99e Initial load
duke
parents:
diff changeset
10691 <category id="general" label="General">
a61af66fc99e Initial load
duke
parents:
diff changeset
10692
a61af66fc99e Initial load
duke
parents:
diff changeset
10693 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10694 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10695
a61af66fc99e Initial load
duke
parents:
diff changeset
10696 <function id="GetPhase" jkernel="yes" phase="any" num="133">
a61af66fc99e Initial load
duke
parents:
diff changeset
10697 <synopsis>Get Phase</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10698 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10699 Return the current phase of VM execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10700 The phases proceed in sequence:
a61af66fc99e Initial load
duke
parents:
diff changeset
10701 <constants id="jvmtiPhase" label="Phases of execution" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10702 <constant id="JVMTI_PHASE_ONLOAD" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10703 <code>OnLoad</code> phase: while in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10704 <internallink id="onload"><code>Agent_OnLoad</code></internallink> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10705 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10706 <constant id="JVMTI_PHASE_PRIMORDIAL" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
10707 Primordial phase: between return from <code>Agent_OnLoad</code> and the
a61af66fc99e Initial load
duke
parents:
diff changeset
10708 <code>VMStart</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
10709 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10710 <constant id="JVMTI_PHASE_START" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
10711 Start phase: when the <eventlink id="VMStart"><code>VMStart</code></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
10712 is sent and until the <code>VMInit</code> event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10713 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10714 <constant id="JVMTI_PHASE_LIVE" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
10715 Live phase: when the <eventlink id="VMInit"><code>VMInit</code></eventlink> event is sent
a61af66fc99e Initial load
duke
parents:
diff changeset
10716 and until the <eventlink id="VMDeath"></eventlink> event returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
10717 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10718 <constant id="JVMTI_PHASE_DEAD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
10719 Dead phase: after the <eventlink id="VMDeath"></eventlink> event returns or after
a61af66fc99e Initial load
duke
parents:
diff changeset
10720 start-up failure.
a61af66fc99e Initial load
duke
parents:
diff changeset
10721 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10722 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10723 In the case of start-up failure the VM will proceed directly to the dead
a61af66fc99e Initial load
duke
parents:
diff changeset
10724 phase skipping intermediate phases and neither a <code>VMInit</code> nor
a61af66fc99e Initial load
duke
parents:
diff changeset
10725 <code>VMDeath</code> event will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10726 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10727 Most <jvmti/> functions operate only in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10728 The following functions operate in either the <code>OnLoad</code> or live phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10729 <functionphaselist phase="onload"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10730 The following functions operate in only the <code>OnLoad</code> phase:
a61af66fc99e Initial load
duke
parents:
diff changeset
10731 <functionphaselist phase="onloadOnly"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10732 The following functions operate in the start or live phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10733 <functionphaselist phase="start"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10734 The following functions operate in any phase:
a61af66fc99e Initial load
duke
parents:
diff changeset
10735 <functionphaselist phase="any"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10736 JNI functions (except the Invocation API) must only be used in the start or live phases.
a61af66fc99e Initial load
duke
parents:
diff changeset
10737 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10738 Most <jvmti/> events are sent only in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10739 The following events operate in others phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10740 <eventphaselist phase="start"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10741 <eventphaselist phase="any"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10742 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10743 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10744 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10745 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10746 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10747 <param id="phase_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10748 <outptr><enum>jvmtiPhase</enum></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10749 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10750 On return, points to the phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10751 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10752 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10753 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10754 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10755 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10756 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10757
a61af66fc99e Initial load
duke
parents:
diff changeset
10758 <function id="DisposeEnvironment" jkernel="yes" phase="any" num="127">
a61af66fc99e Initial load
duke
parents:
diff changeset
10759 <synopsis>Dispose Environment</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10760 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10761 Shutdown a <jvmti/> connection created with JNI <code>GetEnv</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10762 (see <internallink id="environments"><jvmti/> Environments</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10763 Dispose of any resources held by the environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
10764 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10765 What resources are reclaimed? What is undone?
a61af66fc99e Initial load
duke
parents:
diff changeset
10766 Breakpoints,watchpoints removed?
a61af66fc99e Initial load
duke
parents:
diff changeset
10767 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10768 Threads suspended by this environment are not resumed by this call,
a61af66fc99e Initial load
duke
parents:
diff changeset
10769 this must be done explicitly by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10770 Memory allocated by this environment via calls to <jvmti/> functions
a61af66fc99e Initial load
duke
parents:
diff changeset
10771 is not released, this can be done explicitly by the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
10772 by calling <functionlink id="Deallocate"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10773 Raw monitors created by this environment are not destroyed,
a61af66fc99e Initial load
duke
parents:
diff changeset
10774 this can be done explicitly by the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
10775 by calling <functionlink id="DestroyRawMonitor"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10776 The state of threads waiting on raw monitors created by this environment
a61af66fc99e Initial load
duke
parents:
diff changeset
10777 are not affected.
a61af66fc99e Initial load
duke
parents:
diff changeset
10778 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10779 Any <functionlink id="SetNativeMethodPrefix">native method
a61af66fc99e Initial load
duke
parents:
diff changeset
10780 prefixes</functionlink> for this environment will be unset;
a61af66fc99e Initial load
duke
parents:
diff changeset
10781 the agent must remove any prefixed native methods before
a61af66fc99e Initial load
duke
parents:
diff changeset
10782 dispose is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10783 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10784 Any <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10785 held by this environment are relinquished.
a61af66fc99e Initial load
duke
parents:
diff changeset
10786 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10787 Events enabled by this environment will no longer be sent, however
a61af66fc99e Initial load
duke
parents:
diff changeset
10788 event handlers currently running will continue to run. Caution must
a61af66fc99e Initial load
duke
parents:
diff changeset
10789 be exercised in the design of event handlers whose environment may
a61af66fc99e Initial load
duke
parents:
diff changeset
10790 be disposed and thus become invalid during their execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10791 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10792 This environment may not be used after this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
10793 This call returns to the caller.
a61af66fc99e Initial load
duke
parents:
diff changeset
10794 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10795 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10796 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10797 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10798 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10799 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10800 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10801 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10802 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10803
a61af66fc99e Initial load
duke
parents:
diff changeset
10804 <function id="SetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="148">
a61af66fc99e Initial load
duke
parents:
diff changeset
10805 <synopsis>Set Environment Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10806 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10807 The VM stores a pointer value associated with each environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
10808 This pointer value is called <i>environment-local storage</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10809 This value is <code>NULL</code> unless set with this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10810 Agents can allocate memory in which they store environment specific
a61af66fc99e Initial load
duke
parents:
diff changeset
10811 information. By setting environment-local storage it can then be
a61af66fc99e Initial load
duke
parents:
diff changeset
10812 accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
10813 <functionlink id="GetEnvironmentLocalStorage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10814 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10815 Called by the agent to set the value of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10816 environment-local storage. <jvmti/> supplies to the agent a pointer-size
a61af66fc99e Initial load
duke
parents:
diff changeset
10817 environment-local storage that can be used to record per-environment
a61af66fc99e Initial load
duke
parents:
diff changeset
10818 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10819 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10820 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10821 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10822 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10823 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10824 <param id="data">
a61af66fc99e Initial load
duke
parents:
diff changeset
10825 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10826 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10827 <nullok>value is set to <code>NULL</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10828 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10829 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10830 The value to be entered into the environment-local storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
10831 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10832 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10833 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10834 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10835 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10836 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10837
a61af66fc99e Initial load
duke
parents:
diff changeset
10838 <function id="GetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="147">
a61af66fc99e Initial load
duke
parents:
diff changeset
10839 <synopsis>Get Environment Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10840 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10841 Called by the agent to get the value of the <jvmti/> environment-local
a61af66fc99e Initial load
duke
parents:
diff changeset
10842 storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
10843 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10844 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10845 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10846 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10847 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10848 <param id="data_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10849 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10850 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10851 Pointer through which the value of the environment local
a61af66fc99e Initial load
duke
parents:
diff changeset
10852 storage is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10853 If environment-local storage has not been set with
a61af66fc99e Initial load
duke
parents:
diff changeset
10854 <functionlink id="SetEnvironmentLocalStorage"></functionlink> returned
a61af66fc99e Initial load
duke
parents:
diff changeset
10855 pointer is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10856 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10857 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10858 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10859 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10860 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10861 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10862
a61af66fc99e Initial load
duke
parents:
diff changeset
10863 <function id="GetVersionNumber" jkernel="yes" phase="any" num="88">
a61af66fc99e Initial load
duke
parents:
diff changeset
10864 <synopsis>Get Version Number</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10865 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10866 Return the <jvmti/> version via <code>version_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10867 The return value is the version identifier.
a61af66fc99e Initial load
duke
parents:
diff changeset
10868 The version identifier includes major, minor and micro
a61af66fc99e Initial load
duke
parents:
diff changeset
10869 version as well as the interface type.
a61af66fc99e Initial load
duke
parents:
diff changeset
10870 <constants id="jvmtiVersionInterfaceTypes" label="Version Interface Types" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10871 <constant id="JVMTI_VERSION_INTERFACE_JNI" num="0x00000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10872 Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
10873 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10874 <constant id="JVMTI_VERSION_INTERFACE_JVMTI" num="0x30000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10875 Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10876 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10877 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10878 <constants id="jvmtiVersionMasks" label="Version Masks" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10879 <constant id="JVMTI_VERSION_MASK_INTERFACE_TYPE" num="0x70000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10880 Mask to extract interface type.
a61af66fc99e Initial load
duke
parents:
diff changeset
10881 The value of the version returned by this function masked with
a61af66fc99e Initial load
duke
parents:
diff changeset
10882 <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> is always
a61af66fc99e Initial load
duke
parents:
diff changeset
10883 <code>JVMTI_VERSION_INTERFACE_JVMTI</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10884 since this is a <jvmti/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10885 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10886 <constant id="JVMTI_VERSION_MASK_MAJOR" num="0x0FFF0000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10887 Mask to extract major version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10888 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10889 <constant id="JVMTI_VERSION_MASK_MINOR" num="0x0000FF00">
a61af66fc99e Initial load
duke
parents:
diff changeset
10890 Mask to extract minor version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10891 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10892 <constant id="JVMTI_VERSION_MASK_MICRO" num="0x000000FF">
a61af66fc99e Initial load
duke
parents:
diff changeset
10893 Mask to extract micro version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10894 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10895 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10896 <constants id="jvmtiVersionShifts" label="Version Shifts" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10897 <constant id="JVMTI_VERSION_SHIFT_MAJOR" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
10898 Shift to extract major version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10899 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10900 <constant id="JVMTI_VERSION_SHIFT_MINOR" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
10901 Shift to extract minor version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10902 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10903 <constant id="JVMTI_VERSION_SHIFT_MICRO" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
10904 Shift to extract micro version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10905 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10906 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10907 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10908 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10909 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10910 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10911 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10912 <param id="version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10913 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10914 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10915 On return, points to the <jvmti/> version.
a61af66fc99e Initial load
duke
parents:
diff changeset
10916 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10917 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10918 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10919 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10920 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10921 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10922
a61af66fc99e Initial load
duke
parents:
diff changeset
10923
a61af66fc99e Initial load
duke
parents:
diff changeset
10924 <function id="GetErrorName" phase="any" num="128">
a61af66fc99e Initial load
duke
parents:
diff changeset
10925 <synopsis>Get Error Name</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10926 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10927 Return the symbolic name for an
a61af66fc99e Initial load
duke
parents:
diff changeset
10928 <internallink id="ErrorSection">error code</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10929 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10930 For example
a61af66fc99e Initial load
duke
parents:
diff changeset
10931 <code>GetErrorName(env, JVMTI_ERROR_NONE, &amp;err_name)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10932 would return in <code>err_name</code> the string
a61af66fc99e Initial load
duke
parents:
diff changeset
10933 <code>"JVMTI_ERROR_NONE"</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10934 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10935 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10936 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10937 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10938 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10939 <param id="error">
a61af66fc99e Initial load
duke
parents:
diff changeset
10940 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
10941 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10942 The error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
10943 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10944 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10945 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10946 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10947 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10948 On return, points to the error name.
a61af66fc99e Initial load
duke
parents:
diff changeset
10949 The name is encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10950 <internallink id="mUTF">modified UTF-8</internallink> string,
a61af66fc99e Initial load
duke
parents:
diff changeset
10951 but is restricted to the ASCII subset.
a61af66fc99e Initial load
duke
parents:
diff changeset
10952 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10953 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10954 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10955 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10956 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10957 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10958
a61af66fc99e Initial load
duke
parents:
diff changeset
10959 <function id="SetVerboseFlag" phase="any" num="150">
a61af66fc99e Initial load
duke
parents:
diff changeset
10960 <synopsis>Set Verbose Flag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10961 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10962 <constants id="jvmtiVerboseFlag" label="Verbose Flag Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10963 <constant id="JVMTI_VERBOSE_OTHER" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
10964 Verbose output other than the below.
a61af66fc99e Initial load
duke
parents:
diff changeset
10965 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10966 <constant id="JVMTI_VERBOSE_GC" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10967 Verbose garbage collector output, like that specified with <code>-verbose:gc</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10968 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10969 <constant id="JVMTI_VERBOSE_CLASS" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
10970 Verbose class loading output, like that specified with <code>-verbose:class</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10971 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10972 <constant id="JVMTI_VERBOSE_JNI" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
10973 Verbose JNI output, like that specified with <code>-verbose:jni</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10974 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10975 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10976 Control verbose output.
a61af66fc99e Initial load
duke
parents:
diff changeset
10977 This is the output which typically is sent to <code>stderr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10978 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10979 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10980 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10981 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10982 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10983 <param id="flag">
a61af66fc99e Initial load
duke
parents:
diff changeset
10984 <enum>jvmtiVerboseFlag</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
10985 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10986 Which verbose flag to set.
a61af66fc99e Initial load
duke
parents:
diff changeset
10987 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10988 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10989 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
10990 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10991 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10992 New value of the flag.
a61af66fc99e Initial load
duke
parents:
diff changeset
10993 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10994 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10995 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10996 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10997 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10998 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10999
a61af66fc99e Initial load
duke
parents:
diff changeset
11000
a61af66fc99e Initial load
duke
parents:
diff changeset
11001 <function id="GetJLocationFormat" phase="any" num="129">
a61af66fc99e Initial load
duke
parents:
diff changeset
11002 <synopsis>Get JLocation Format</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
11003 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11004 Although the greatest functionality is achieved with location information
a61af66fc99e Initial load
duke
parents:
diff changeset
11005 referencing the virtual machine bytecode index, the definition of
a61af66fc99e Initial load
duke
parents:
diff changeset
11006 <code>jlocation</code> has intentionally been left unconstrained to allow VM
a61af66fc99e Initial load
duke
parents:
diff changeset
11007 implementations that do not have this information.
a61af66fc99e Initial load
duke
parents:
diff changeset
11008 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11009 This function describes the representation of <code>jlocation</code> used in this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
11010 If the returned format is <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11011 <code>jlocation</code>s can
a61af66fc99e Initial load
duke
parents:
diff changeset
11012 be used as in indices into the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
11013 <functionlink id="GetBytecodes"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11014 <constants id="jvmtiJlocationFormat" label="JLocation Format Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
11015 <constant id="JVMTI_JLOCATION_JVMBCI" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
11016 <code>jlocation</code> values represent virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
11017 bytecode indices--that is, offsets into the
a61af66fc99e Initial load
duke
parents:
diff changeset
11018 virtual machine code for a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11019 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11020 <constant id="JVMTI_JLOCATION_MACHINEPC" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
11021 <code>jlocation</code> values represent native machine
a61af66fc99e Initial load
duke
parents:
diff changeset
11022 program counter values.
a61af66fc99e Initial load
duke
parents:
diff changeset
11023 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11024 <constant id="JVMTI_JLOCATION_OTHER" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11025 <code>jlocation</code> values have some other representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11026 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11027 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
11028 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11029 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11030 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11031 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11032 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11033 <param id="format_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11034 <outptr><enum>jvmtiJlocationFormat</enum></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11036 On return, points to the format identifier for <code>jlocation</code> values.
a61af66fc99e Initial load
duke
parents:
diff changeset
11037 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11038 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11039 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11040 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11041 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11042 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
11043
a61af66fc99e Initial load
duke
parents:
diff changeset
11044 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
11045
a61af66fc99e Initial load
duke
parents:
diff changeset
11046 </functionsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
11047
a61af66fc99e Initial load
duke
parents:
diff changeset
11048 <errorsection label="Error Reference">
a61af66fc99e Initial load
duke
parents:
diff changeset
11049 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11050 Every <jvmti/> function returns a <b><code>jvmtiError</code></b> error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
11051 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11052 It is the responsibility of the agent to call <jvmti/> functions with
a61af66fc99e Initial load
duke
parents:
diff changeset
11053 valid parameters and in the proper context (calling thread is attached,
a61af66fc99e Initial load
duke
parents:
diff changeset
11054 phase is correct, etc.).
a61af66fc99e Initial load
duke
parents:
diff changeset
11055 Detecting some error conditions may be difficult, inefficient, or
a61af66fc99e Initial load
duke
parents:
diff changeset
11056 impossible for an implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11057 The errors listed in
a61af66fc99e Initial load
duke
parents:
diff changeset
11058 <internallink id="reqerrors">Function Specific Required Errors</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11059 must be detected by the implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11060 All other errors represent the recommended response to the error
a61af66fc99e Initial load
duke
parents:
diff changeset
11061 condition.
a61af66fc99e Initial load
duke
parents:
diff changeset
11062 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11063
a61af66fc99e Initial load
duke
parents:
diff changeset
11064 <errorcategory id="universal-error" label="Universal Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11065 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11066 The following errors may be returned by any function
a61af66fc99e Initial load
duke
parents:
diff changeset
11067 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11068
a61af66fc99e Initial load
duke
parents:
diff changeset
11069 <errorid id="JVMTI_ERROR_NONE" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11070 No error has occurred. This is the error code that is returned
a61af66fc99e Initial load
duke
parents:
diff changeset
11071 on successful completion of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11072 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11073 <errorid id="JVMTI_ERROR_NULL_POINTER" num="100">
a61af66fc99e Initial load
duke
parents:
diff changeset
11074 Pointer is unexpectedly <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11075 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11076 <errorid id="JVMTI_ERROR_OUT_OF_MEMORY" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
11077 The function attempted to allocate memory and no more memory was
a61af66fc99e Initial load
duke
parents:
diff changeset
11078 available for allocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11079 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11080 <errorid id="JVMTI_ERROR_ACCESS_DENIED" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
11081 The desired functionality has not been enabled in this virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
11082 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11083 <errorid id="JVMTI_ERROR_UNATTACHED_THREAD" num="115">
a61af66fc99e Initial load
duke
parents:
diff changeset
11084 The thread being used to call this function is not attached
a61af66fc99e Initial load
duke
parents:
diff changeset
11085 to the virtual machine. Calls must be made from attached threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
11086 See <code>AttachCurrentThread</code> in the JNI invocation API.
a61af66fc99e Initial load
duke
parents:
diff changeset
11087 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11088 <errorid id="JVMTI_ERROR_INVALID_ENVIRONMENT" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
11089 The <jvmti/> environment provided is no longer connected or is
a61af66fc99e Initial load
duke
parents:
diff changeset
11090 not an environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
11091 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11092 <errorid id="JVMTI_ERROR_WRONG_PHASE" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
11093 The desired functionality is not available in the current
a61af66fc99e Initial load
duke
parents:
diff changeset
11094 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11095 Always returned if the virtual machine has completed running.
a61af66fc99e Initial load
duke
parents:
diff changeset
11096 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11097 <errorid id="JVMTI_ERROR_INTERNAL" num="113">
a61af66fc99e Initial load
duke
parents:
diff changeset
11098 An unexpected internal error has occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
11099 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11100 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11101
a61af66fc99e Initial load
duke
parents:
diff changeset
11102 <errorcategory id="reqerrors" label="Function Specific Required Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11103 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11104 The following errors are returned by some <jvmti/> functions and must
a61af66fc99e Initial load
duke
parents:
diff changeset
11105 be returned by the implementation when the condition occurs.
a61af66fc99e Initial load
duke
parents:
diff changeset
11106 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11107
a61af66fc99e Initial load
duke
parents:
diff changeset
11108 <errorid id="JVMTI_ERROR_INVALID_PRIORITY" num="12">
a61af66fc99e Initial load
duke
parents:
diff changeset
11109 Invalid priority.
a61af66fc99e Initial load
duke
parents:
diff changeset
11110 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11111 <errorid id="JVMTI_ERROR_THREAD_NOT_SUSPENDED" num="13">
a61af66fc99e Initial load
duke
parents:
diff changeset
11112 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
11113 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11114 <errorid id="JVMTI_ERROR_THREAD_SUSPENDED" num="14">
a61af66fc99e Initial load
duke
parents:
diff changeset
11115 Thread already suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
11116 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11117 <errorid id="JVMTI_ERROR_THREAD_NOT_ALIVE" num="15">
a61af66fc99e Initial load
duke
parents:
diff changeset
11118 This operation requires the thread to be alive--that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
11119 it must be started and not yet have died.
a61af66fc99e Initial load
duke
parents:
diff changeset
11120 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11121 <errorid id="JVMTI_ERROR_CLASS_NOT_PREPARED" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
11122 The class has been loaded but not yet prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
11123 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11124 <errorid id="JVMTI_ERROR_NO_MORE_FRAMES" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
11125 There are no Java programming language or JNI stack frames at the specified depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
11126 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11127 <errorid id="JVMTI_ERROR_OPAQUE_FRAME" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
11128 Information about the frame is not available (e.g. for native frames).
a61af66fc99e Initial load
duke
parents:
diff changeset
11129 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11130 <errorid id="JVMTI_ERROR_DUPLICATE" num="40">
a61af66fc99e Initial load
duke
parents:
diff changeset
11131 Item already set.
a61af66fc99e Initial load
duke
parents:
diff changeset
11132 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11133 <errorid id="JVMTI_ERROR_NOT_FOUND" num="41">
a61af66fc99e Initial load
duke
parents:
diff changeset
11134 Desired element (e.g. field or breakpoint) not found
a61af66fc99e Initial load
duke
parents:
diff changeset
11135 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11136 <errorid id="JVMTI_ERROR_NOT_MONITOR_OWNER" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
11137 This thread doesn't own the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
11138 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11139 <errorid id="JVMTI_ERROR_INTERRUPT" num="52">
a61af66fc99e Initial load
duke
parents:
diff changeset
11140 The call has been interrupted before completion.
a61af66fc99e Initial load
duke
parents:
diff changeset
11141 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11142 <errorid id="JVMTI_ERROR_UNMODIFIABLE_CLASS" num="79">
a61af66fc99e Initial load
duke
parents:
diff changeset
11143 The class cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
11144 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11145 <errorid id="JVMTI_ERROR_NOT_AVAILABLE" num="98">
a61af66fc99e Initial load
duke
parents:
diff changeset
11146 The functionality is not available in this virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
11147 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11148 <errorid id="JVMTI_ERROR_ABSENT_INFORMATION" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
11149 The requested information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11150 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11151 <errorid id="JVMTI_ERROR_INVALID_EVENT_TYPE" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
11152 The specified event type ID is not recognized.
a61af66fc99e Initial load
duke
parents:
diff changeset
11153 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11154 <errorid id="JVMTI_ERROR_NATIVE_METHOD" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
11155 The requested information is not available for native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11156 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11157 <errorid id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
11158 The class loader does not support this operation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11159 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11160 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11161
a61af66fc99e Initial load
duke
parents:
diff changeset
11162 <errorcategory id="function-specific-errors" label="Function Specific Agent Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11163 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11164 The following errors are returned by some <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
11165 They are returned in the event of invalid parameters passed by the
a61af66fc99e Initial load
duke
parents:
diff changeset
11166 agent or usage in an invalid context.
a61af66fc99e Initial load
duke
parents:
diff changeset
11167 An implementation is not required to detect these errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
11168 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11169
a61af66fc99e Initial load
duke
parents:
diff changeset
11170 <errorid id="JVMTI_ERROR_INVALID_THREAD" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
11171 The passed thread is not a valid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11172 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11173 <errorid id="JVMTI_ERROR_INVALID_FIELDID" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
11174 Invalid field.
a61af66fc99e Initial load
duke
parents:
diff changeset
11175 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11176 <errorid id="JVMTI_ERROR_INVALID_METHODID" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
11177 Invalid method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11178 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11179 <errorid id="JVMTI_ERROR_INVALID_LOCATION" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
11180 Invalid location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11181 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11182 <errorid id="JVMTI_ERROR_INVALID_OBJECT" num="20">
a61af66fc99e Initial load
duke
parents:
diff changeset
11183 Invalid object.
a61af66fc99e Initial load
duke
parents:
diff changeset
11184 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11185 <errorid id="JVMTI_ERROR_INVALID_CLASS" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
11186 Invalid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
11187 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11188 <errorid id="JVMTI_ERROR_TYPE_MISMATCH" num="34">
a61af66fc99e Initial load
duke
parents:
diff changeset
11189 The variable is not an appropriate type for the function used.
a61af66fc99e Initial load
duke
parents:
diff changeset
11190 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11191 <errorid id="JVMTI_ERROR_INVALID_SLOT" num="35">
a61af66fc99e Initial load
duke
parents:
diff changeset
11192 Invalid slot.
a61af66fc99e Initial load
duke
parents:
diff changeset
11193 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11194 <errorid id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY" num="99">
a61af66fc99e Initial load
duke
parents:
diff changeset
11195 The capability being used is false in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
11196 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11197 <errorid id="JVMTI_ERROR_INVALID_THREAD_GROUP" num="11">
a61af66fc99e Initial load
duke
parents:
diff changeset
11198 Thread group invalid.
a61af66fc99e Initial load
duke
parents:
diff changeset
11199 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11200 <errorid id="JVMTI_ERROR_INVALID_MONITOR" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
11201 Invalid raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
11202 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11203 <errorid id="JVMTI_ERROR_ILLEGAL_ARGUMENT" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
11204 Illegal argument.
a61af66fc99e Initial load
duke
parents:
diff changeset
11205 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11206 <errorid id="JVMTI_ERROR_INVALID_TYPESTATE" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
11207 The state of the thread has been modified, and is now inconsistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
11208 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11209 <errorid id="JVMTI_ERROR_UNSUPPORTED_VERSION" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
11210 A new class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
11211 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11212 <errorid id="JVMTI_ERROR_INVALID_CLASS_FORMAT" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
11213 A new class file is malformed (the VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11214 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11215 <errorid id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
11216 The new class file definitions would lead to a circular
a61af66fc99e Initial load
duke
parents:
diff changeset
11217 definition (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11218 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11219 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
11220 A new class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11221 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11222 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
11223 A new class version changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
11224 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11225 <errorid id="JVMTI_ERROR_FAILS_VERIFICATION" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
11226 The class bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
11227 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11228 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
11229 A direct superclass is different for the new class
a61af66fc99e Initial load
duke
parents:
diff changeset
11230 version, or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
11231 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
11232 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11233 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
11234 A new class version does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
11235 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
11236 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11237 <errorid id="JVMTI_ERROR_NAMES_DONT_MATCH" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
11238 The class name defined in the new class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
11239 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
11240 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11241 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
11242 A new class version has different modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
11243 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11244 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
11245 A method in the new class version has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
11246 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
11247 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11248 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11249 </errorsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
11250
a61af66fc99e Initial load
duke
parents:
diff changeset
11251 <eventsection label="Events">
a61af66fc99e Initial load
duke
parents:
diff changeset
11252 <intro label="Handling Events" id="eventIntro">
a61af66fc99e Initial load
duke
parents:
diff changeset
11253 Agents can be informed of many events that occur in application
a61af66fc99e Initial load
duke
parents:
diff changeset
11254 programs.
a61af66fc99e Initial load
duke
parents:
diff changeset
11255 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11256 To handle events, designate a set of callback functions with
a61af66fc99e Initial load
duke
parents:
diff changeset
11257 <functionlink id="SetEventCallbacks"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11258 For each event the corresponding callback function will be
a61af66fc99e Initial load
duke
parents:
diff changeset
11259 called.
a61af66fc99e Initial load
duke
parents:
diff changeset
11260 Arguments to the callback function provide additional
a61af66fc99e Initial load
duke
parents:
diff changeset
11261 information about the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11262 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11263 The callback function is usually called from within an application
a61af66fc99e Initial load
duke
parents:
diff changeset
11264 thread. The <jvmti/> implementation does not
a61af66fc99e Initial load
duke
parents:
diff changeset
11265 queue events in any way. This means
a61af66fc99e Initial load
duke
parents:
diff changeset
11266 that event callback functions must be written
a61af66fc99e Initial load
duke
parents:
diff changeset
11267 carefully. Here are some general guidelines. See
a61af66fc99e Initial load
duke
parents:
diff changeset
11268 the individual event descriptions for further
a61af66fc99e Initial load
duke
parents:
diff changeset
11269 suggestions.
a61af66fc99e Initial load
duke
parents:
diff changeset
11270 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11271 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11272 <li>Any exception thrown during the execution of an event callback can
a61af66fc99e Initial load
duke
parents:
diff changeset
11273 overwrite any current pending exception in the current application thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11274 Care must be taken to preserve a pending exception
a61af66fc99e Initial load
duke
parents:
diff changeset
11275 when an event callback makes a JNI call that might generate an exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11276 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11277 <li>Event callback functions must be re-entrant. The <jvmti/> implementation does
a61af66fc99e Initial load
duke
parents:
diff changeset
11278 not queue events. If an agent needs to process events one at a time, it
a61af66fc99e Initial load
duke
parents:
diff changeset
11279 can use a raw monitor inside the
a61af66fc99e Initial load
duke
parents:
diff changeset
11280 event callback functions to serialize event processing.
a61af66fc99e Initial load
duke
parents:
diff changeset
11281 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11282 <li>Event callback functions that execute JNI's FindClass function to load
a61af66fc99e Initial load
duke
parents:
diff changeset
11283 classes need to note that FindClass locates the class loader associated
a61af66fc99e Initial load
duke
parents:
diff changeset
11284 with the current native method. For the purposes of class loading, an
a61af66fc99e Initial load
duke
parents:
diff changeset
11285 event callback that includes a JNI environment as a parameter to the
a61af66fc99e Initial load
duke
parents:
diff changeset
11286 callback will treated as if it is a native call, where the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11287 is in the class of the event thread's current frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
11288 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11289 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11290 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11291 Some <jvmti/> events identify objects with JNI references.
a61af66fc99e Initial load
duke
parents:
diff changeset
11292 All references
a61af66fc99e Initial load
duke
parents:
diff changeset
11293 in <jvmti/> events are JNI local references and will become invalid
a61af66fc99e Initial load
duke
parents:
diff changeset
11294 after the event callback returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
11295 Unless stated otherwise, memory referenced by pointers sent in event
a61af66fc99e Initial load
duke
parents:
diff changeset
11296 callbacks may not be referenced after the event callback returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
11297 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11298 Except where stated otherwise, events are delivered on the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11299 that caused the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11300 Events are sent at the time they occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
11301 The specification for each event includes the set of
a61af66fc99e Initial load
duke
parents:
diff changeset
11302 <functionlink id="GetPhase">phases</functionlink> in which it can be sent;
a61af66fc99e Initial load
duke
parents:
diff changeset
11303 if an event triggering activity occurs during another phase, no event
a61af66fc99e Initial load
duke
parents:
diff changeset
11304 is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
11305 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11306 A thread that generates an event does not change its execution status
a61af66fc99e Initial load
duke
parents:
diff changeset
11307 (for example, the event does not cause the thread to be suspended).
a61af66fc99e Initial load
duke
parents:
diff changeset
11308 If an agent wishes the event to result in suspension, then the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
11309 is responsible for explicitly suspending the thread with
a61af66fc99e Initial load
duke
parents:
diff changeset
11310 <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11311 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11312 If an event is enabled in multiple environments, the event will be sent
a61af66fc99e Initial load
duke
parents:
diff changeset
11313 to each agent in the order that the environments were created.
a61af66fc99e Initial load
duke
parents:
diff changeset
11314 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11315
a61af66fc99e Initial load
duke
parents:
diff changeset
11316 <intro label="Enabling Events" id="enablingevents">
a61af66fc99e Initial load
duke
parents:
diff changeset
11317 All events are initially disabled. In order to receive any
a61af66fc99e Initial load
duke
parents:
diff changeset
11318 event:
a61af66fc99e Initial load
duke
parents:
diff changeset
11319 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11320 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11321 If the event requires a capability, that capability must
a61af66fc99e Initial load
duke
parents:
diff changeset
11322 be added with
a61af66fc99e Initial load
duke
parents:
diff changeset
11323 <functionlink id="AddCapabilities"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11324 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11325 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11326 A callback for the event must be set with
a61af66fc99e Initial load
duke
parents:
diff changeset
11327 <functionlink id="SetEventCallbacks"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11328 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11329 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11330 The event must be enabled with
a61af66fc99e Initial load
duke
parents:
diff changeset
11331 <functionlink id="SetEventNotificationMode"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11332 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11333 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11334 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11335
a61af66fc99e Initial load
duke
parents:
diff changeset
11336 <intro label="Multiple Co-located Events" id="eventorder">
a61af66fc99e Initial load
duke
parents:
diff changeset
11337 In many situations it is possible for multiple events to occur
a61af66fc99e Initial load
duke
parents:
diff changeset
11338 at the same location in one thread. When this happens, all the events
a61af66fc99e Initial load
duke
parents:
diff changeset
11339 are reported through the event callbacks in the order specified in this section.
a61af66fc99e Initial load
duke
parents:
diff changeset
11340 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11341 If the current location is at the entry point of a method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11342 <eventlink id="MethodEntry"></eventlink> event is reported before
a61af66fc99e Initial load
duke
parents:
diff changeset
11343 any other event at the current location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11344 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11345 If an exception catch has been detected at the current location,
a61af66fc99e Initial load
duke
parents:
diff changeset
11346 either because it is the beginning of a catch clause or a native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11347 that cleared a pending exception has returned, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11348 <code>exceptionCatch</code> event is reported before
a61af66fc99e Initial load
duke
parents:
diff changeset
11349 any other event at the current location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11350 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11351 If a <code>singleStep</code> event or
a61af66fc99e Initial load
duke
parents:
diff changeset
11352 <code>breakpoint</code> event is triggered at the
a61af66fc99e Initial load
duke
parents:
diff changeset
11353 current location, the event is defined to occur
a61af66fc99e Initial load
duke
parents:
diff changeset
11354 immediately before the code at the current location is executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
11355 These events are reported before any events which are triggered
a61af66fc99e Initial load
duke
parents:
diff changeset
11356 by the execution of code at the current location in the same
a61af66fc99e Initial load
duke
parents:
diff changeset
11357 thread (specifically:
a61af66fc99e Initial load
duke
parents:
diff changeset
11358 <code>exception</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11359 <code>fieldAccess</code>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
11360 <code>fieldModification</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11361 If both a step and breakpoint event are triggered for the same thread and
a61af66fc99e Initial load
duke
parents:
diff changeset
11362 location, the step event is reported before the breakpoint event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11363 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11364 If the current location is the exit point of a method (that is, the last
a61af66fc99e Initial load
duke
parents:
diff changeset
11365 location before returning to the caller), the
a61af66fc99e Initial load
duke
parents:
diff changeset
11366 <eventlink id="MethodExit"></eventlink> event and
a61af66fc99e Initial load
duke
parents:
diff changeset
11367 the <eventlink id="FramePop"></eventlink> event (if requested)
a61af66fc99e Initial load
duke
parents:
diff changeset
11368 are reported after all other events at the current location in the same
a61af66fc99e Initial load
duke
parents:
diff changeset
11369 thread. There is no specified ordering of these two events
a61af66fc99e Initial load
duke
parents:
diff changeset
11370 with respect to each other.
a61af66fc99e Initial load
duke
parents:
diff changeset
11371 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11372 Co-located events can be triggered during the processing of some other
a61af66fc99e Initial load
duke
parents:
diff changeset
11373 event by the agent at the same location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11374 If such an event, of type <i>y</i>, is triggered during the processing of
a61af66fc99e Initial load
duke
parents:
diff changeset
11375 an event of type <i>x</i>, and if <i>x</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
11376 precedes <i>y</i> in the ordering specified above, the co-located event
a61af66fc99e Initial load
duke
parents:
diff changeset
11377 <i>y</i> is reported for the current thread and location. If <i>x</i> does not precede
a61af66fc99e Initial load
duke
parents:
diff changeset
11378 <i>y</i>, <i>y</i> is not reported for the current thread and location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11379 For example, if a breakpoint is set at the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
11380 during the processing of <eventlink id="SingleStep"></eventlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11381 that breakpoint will be reported before the thread moves off the current
a61af66fc99e Initial load
duke
parents:
diff changeset
11382 location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11383 <p/>The following events are never considered to be co-located with
a61af66fc99e Initial load
duke
parents:
diff changeset
11384 other events.
a61af66fc99e Initial load
duke
parents:
diff changeset
11385 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11386 <li><eventlink id="VMStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11387 <li><eventlink id="VMInit"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11388 <li><eventlink id="VMDeath"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11389 <li><eventlink id="ThreadStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11390 <li><eventlink id="ThreadEnd"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11391 <li><eventlink id="ClassLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11392 <li><eventlink id="ClassPrepare"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11393 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11394 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11395
a61af66fc99e Initial load
duke
parents:
diff changeset
11396 <intro label="Event Callbacks" id="jvmtiEventCallbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
11397 The event callback structure below is used to specify the handler function
a61af66fc99e Initial load
duke
parents:
diff changeset
11398 for events. It is set with the
a61af66fc99e Initial load
duke
parents:
diff changeset
11399 <functionlink id="SetEventCallbacks"></functionlink> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11400 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11401
a61af66fc99e Initial load
duke
parents:
diff changeset
11402 <event label="Single Step"
a61af66fc99e Initial load
duke
parents:
diff changeset
11403 id="SingleStep" const="JVMTI_EVENT_SINGLE_STEP" filtered="thread" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
11404 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11405 Single step events allow the agent to trace thread execution
a61af66fc99e Initial load
duke
parents:
diff changeset
11406 at the finest granularity allowed by the VM. A single step event is
a61af66fc99e Initial load
duke
parents:
diff changeset
11407 generated whenever a thread reaches a new location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11408 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
11409 instruction as defined in <vmspec/>. However, some implementations
0
a61af66fc99e Initial load
duke
parents:
diff changeset
11410 may define locations differently. In any case the
a61af66fc99e Initial load
duke
parents:
diff changeset
11411 <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11412 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11413 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11414 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11415 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11416 No single step events are generated from within native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
11417 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11418 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11419 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11420 <required id="can_generate_single_step_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11421 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11422 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11423 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11424 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11425 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11426 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11427 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11428 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11429 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11430 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11431 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11432 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11433 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11434 Thread about to execution a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11435 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11436 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11437 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11438 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11439 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11440 Class of the method about to execute a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11441 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11442 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11443 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11444 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11445 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11446 Method about to execute a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11447 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11448 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11449 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11450 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11451 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11452 Location of the new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11453 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11454 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11455 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11456 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11457
a61af66fc99e Initial load
duke
parents:
diff changeset
11458 <event label="Breakpoint"
a61af66fc99e Initial load
duke
parents:
diff changeset
11459 id="Breakpoint" const="JVMTI_EVENT_BREAKPOINT" filtered="thread" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
11460 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11461 Breakpoint events are generated whenever a thread reaches a location
a61af66fc99e Initial load
duke
parents:
diff changeset
11462 designated as a breakpoint with <functionlink id="SetBreakpoint"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11463 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11464 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11465 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11466 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11467 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11468 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11469 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11470 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11471 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11472 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11473 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11474 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11475 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11476 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11477 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11478 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11479 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11480 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11481 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11482 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11483 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11484 Thread that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11485 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11486 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11487 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11488 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11489 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11490 Class of the method that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11491 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11492 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11493 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11494 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11495 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11496 Method that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11497 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11498 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11499 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11500 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11501 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11502 location of the breakpoint
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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11506 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11507
a61af66fc99e Initial load
duke
parents:
diff changeset
11508 <event label="Field Access"
a61af66fc99e Initial load
duke
parents:
diff changeset
11509 id="FieldAccess" const="JVMTI_EVENT_FIELD_ACCESS" filtered="thread" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
11510 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11511 Field access events are generated whenever a thread accesses
a61af66fc99e Initial load
duke
parents:
diff changeset
11512 a field that was designated as a watchpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11513 with <functionlink id="SetFieldAccessWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11514 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11515 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11516 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11517 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11518 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11519 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11520 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11521 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11522 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11523 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11524 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11525 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11526 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11527 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11528 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11529 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11530 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11531 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11532 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11533 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11534 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11535 Thread accessing the field
a61af66fc99e Initial load
duke
parents:
diff changeset
11536 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11537 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11538 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11539 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11540 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11541 Class of the method where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11542 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11543 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11544 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11545 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11546 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11547 Method where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11548 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11549 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11550 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11551 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11552 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11553 Location where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11554 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11555 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11556 <param id="field_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11557 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11558 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11559 Class of the field being accessed
a61af66fc99e Initial load
duke
parents:
diff changeset
11560 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11561 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11562 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
11563 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11564 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11565 Object with the field being accessed if the field is an
a61af66fc99e Initial load
duke
parents:
diff changeset
11566 instance field; <code>NULL</code> otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
11567 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11568 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11569 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
11570 <jfieldID class="field_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11571 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11572 Field being accessed
a61af66fc99e Initial load
duke
parents:
diff changeset
11573 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11574 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11575 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11576 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11577
a61af66fc99e Initial load
duke
parents:
diff changeset
11578 <event label="Field Modification"
a61af66fc99e Initial load
duke
parents:
diff changeset
11579 id="FieldModification" const="JVMTI_EVENT_FIELD_MODIFICATION" filtered="thread" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
11580 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11581 Field modification events are generated whenever a thread modifies
a61af66fc99e Initial load
duke
parents:
diff changeset
11582 a field that was designated as a watchpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11583 with <functionlink id="SetFieldModificationWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11584 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11585 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11586 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11587 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11588 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11589 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11590 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11591 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11592 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11593 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11594 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11595 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11596 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11597 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11598 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11599 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11600 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11601 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11602 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11603 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11604 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11605 Thread modifying the field
a61af66fc99e Initial load
duke
parents:
diff changeset
11606 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11607 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11608 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11609 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11610 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11611 Class of the method where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11612 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11613 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11614 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11615 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11616 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11617 Method where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11618 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11619 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11620 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11621 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11622 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11623 Location where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11624 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11625 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11626 <param id="field_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11627 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11628 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11629 Class of the field being modified
a61af66fc99e Initial load
duke
parents:
diff changeset
11630 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11631 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11632 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
11633 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11634 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11635 Object with the field being modified if the field is an
a61af66fc99e Initial load
duke
parents:
diff changeset
11636 instance field; <code>NULL</code> otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
11637 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11638 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11639 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
11640 <jfieldID class="field_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11641 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11642 Field being modified
a61af66fc99e Initial load
duke
parents:
diff changeset
11643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11644 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11645 <param id="signature_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
11646 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11647 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11648 Signature type of the new value
a61af66fc99e Initial load
duke
parents:
diff changeset
11649 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11650 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11651 <param id="new_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11652 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11653 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11654 The new value
a61af66fc99e Initial load
duke
parents:
diff changeset
11655 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11656 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11657 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11658 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11659
a61af66fc99e Initial load
duke
parents:
diff changeset
11660 <event label="Frame Pop"
a61af66fc99e Initial load
duke
parents:
diff changeset
11661 id="FramePop" const="JVMTI_EVENT_FRAME_POP" filtered="thread" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
11662 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11663 Frame pop events are generated upon exit from a single method
a61af66fc99e Initial load
duke
parents:
diff changeset
11664 in a single frame as specified
a61af66fc99e Initial load
duke
parents:
diff changeset
11665 in a call to <functionlink id="NotifyFramePop"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11666 This is true whether termination is caused by
a61af66fc99e Initial load
duke
parents:
diff changeset
11667 executing its return instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11668 or by throwing an exception to its caller
a61af66fc99e Initial load
duke
parents:
diff changeset
11669 (see <paramlink id="was_popped_by_exception"></paramlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11670 However, frame pops caused by the <functionlink id="PopFrame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11671 function are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
11672 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11673 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11674 identifies the executable location in the returning method,
a61af66fc99e Initial load
duke
parents:
diff changeset
11675 immediately prior to the return.
a61af66fc99e Initial load
duke
parents:
diff changeset
11676 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11677 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11678 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11679 <required id="can_generate_frame_pop_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11680 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11681 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11682 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11683 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11684 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11685 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11687 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11688 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11689 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11690 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11691 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11692 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11693 Thread that is popping the frame
a61af66fc99e Initial load
duke
parents:
diff changeset
11694 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11695 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11696 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11697 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11698 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11699 Class of the method being popped
a61af66fc99e Initial load
duke
parents:
diff changeset
11700 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11701 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11702 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11703 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11704 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11705 Method being popped
a61af66fc99e Initial load
duke
parents:
diff changeset
11706 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11707 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11708 <param id="was_popped_by_exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
11709 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11710 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11711 True if frame was popped by a thrown exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11712 False if method exited through its return instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
11713 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11714 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11715 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11716 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11717
a61af66fc99e Initial load
duke
parents:
diff changeset
11718 <event label="Method Entry"
a61af66fc99e Initial load
duke
parents:
diff changeset
11719 id="MethodEntry" const="JVMTI_EVENT_METHOD_ENTRY" filtered="thread" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
11720 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11721 Method entry events are generated upon entry of Java
a61af66fc99e Initial load
duke
parents:
diff changeset
11722 programming language methods (including native methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
11723 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11724 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11725 identifies the initial executable location in
a61af66fc99e Initial load
duke
parents:
diff changeset
11726 the method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11727 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11728 Enabling method
a61af66fc99e Initial load
duke
parents:
diff changeset
11729 entry or exit events will significantly degrade performance on many platforms and is thus
a61af66fc99e Initial load
duke
parents:
diff changeset
11730 not advised for performance critical usage (such as profiling).
a61af66fc99e Initial load
duke
parents:
diff changeset
11731 <internallink id="bci">Bytecode instrumentation</internallink> should be
a61af66fc99e Initial load
duke
parents:
diff changeset
11732 used in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
11733 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11734 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11735 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11736 <required id="can_generate_method_entry_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11737 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11738 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11739 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11740 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11741 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11742 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11743 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11744 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11745 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11746 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11747 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11748 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11749 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11750 Thread entering the method
a61af66fc99e Initial load
duke
parents:
diff changeset
11751 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11752 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11753 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11754 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11755 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11756 Class of the method being entered
a61af66fc99e Initial load
duke
parents:
diff changeset
11757 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11758 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11759 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11760 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11761 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11762 Method being entered
a61af66fc99e Initial load
duke
parents:
diff changeset
11763 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11764 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11765 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11766 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11767
a61af66fc99e Initial load
duke
parents:
diff changeset
11768 <event label="Method Exit"
a61af66fc99e Initial load
duke
parents:
diff changeset
11769 id="MethodExit" const="JVMTI_EVENT_METHOD_EXIT" filtered="thread" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
11770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11771 Method exit events are generated upon exit from Java
a61af66fc99e Initial load
duke
parents:
diff changeset
11772 programming language methods (including native methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
11773 This is true whether termination is caused by
a61af66fc99e Initial load
duke
parents:
diff changeset
11774 executing its return instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11775 or by throwing an exception to its caller
a61af66fc99e Initial load
duke
parents:
diff changeset
11776 (see <paramlink id="was_popped_by_exception"></paramlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11777 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11778 The <code>method</code> field uniquely identifies the
a61af66fc99e Initial load
duke
parents:
diff changeset
11779 method being entered or exited. The <code>frame</code> field provides
a61af66fc99e Initial load
duke
parents:
diff changeset
11780 access to the stack frame for the method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11781 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11782 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11783 identifies the executable location in the returning method
a61af66fc99e Initial load
duke
parents:
diff changeset
11784 immediately prior to the return.
a61af66fc99e Initial load
duke
parents:
diff changeset
11785 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11786 Enabling method
a61af66fc99e Initial load
duke
parents:
diff changeset
11787 entry or exit events will significantly degrade performance on many platforms and is thus
a61af66fc99e Initial load
duke
parents:
diff changeset
11788 not advised for performance critical usage (such as profiling).
a61af66fc99e Initial load
duke
parents:
diff changeset
11789 <internallink id="bci">Bytecode instrumentation</internallink> should be
a61af66fc99e Initial load
duke
parents:
diff changeset
11790 used in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
11791 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11792 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11793 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11794 <required id="can_generate_method_exit_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11795 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11796 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11797 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11798 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11799 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11800 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11801 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11802 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11803 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11804 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11805 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11806 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11807 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11808 Thread exiting the method
a61af66fc99e Initial load
duke
parents:
diff changeset
11809 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11810 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11811 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11812 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11813 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11814 Class of the method being exited
a61af66fc99e Initial load
duke
parents:
diff changeset
11815 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11816 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11817 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11818 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11819 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11820 Method being exited
a61af66fc99e Initial load
duke
parents:
diff changeset
11821 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11822 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11823 <param id="was_popped_by_exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
11824 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11825 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11826 True if frame was popped by a thrown exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11827 False if method exited through its return instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
11828 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11829 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11830 <param id="return_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11831 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11832 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11833 The return value of the method being exited.
a61af66fc99e Initial load
duke
parents:
diff changeset
11834 Undefined and should not be used if
a61af66fc99e Initial load
duke
parents:
diff changeset
11835 <paramlink id="was_popped_by_exception"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11836 is true.
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="Native Method Bind" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
11843 id="NativeMethodBind" const="JVMTI_EVENT_NATIVE_METHOD_BIND" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
11844 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11845 A Native Method Bind event is sent when a VM binds a
a61af66fc99e Initial load
duke
parents:
diff changeset
11846 Java programming language native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11847 to the address of a function that implements the native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11848 This will occur when the native method is called for the first time
a61af66fc99e Initial load
duke
parents:
diff changeset
11849 and also occurs when the JNI function <code>RegisterNatives</code> is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
11850 This event allows the bind to be redirected to an agent-specified
a61af66fc99e Initial load
duke
parents:
diff changeset
11851 proxy function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11852 This event is not sent when the native method is unbound.
a61af66fc99e Initial load
duke
parents:
diff changeset
11853 Typically, this proxy function will need to be specific to a
a61af66fc99e Initial load
duke
parents:
diff changeset
11854 particular method or, to handle the general case, automatically
a61af66fc99e Initial load
duke
parents:
diff changeset
11855 generated assembly code, since after instrumentation code is
a61af66fc99e Initial load
duke
parents:
diff changeset
11856 executed the function at the original binding
a61af66fc99e Initial load
duke
parents:
diff changeset
11857 address will usually be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
11858 The original binding can be restored or the redirection changed
a61af66fc99e Initial load
duke
parents:
diff changeset
11859 by use of the JNI function <code>RegisterNatives</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11860 Some events may be sent during the primordial phase, JNI and
a61af66fc99e Initial load
duke
parents:
diff changeset
11861 most of <jvmti/> cannot be used at this time but the method and
a61af66fc99e Initial load
duke
parents:
diff changeset
11862 address can be saved for use later.
a61af66fc99e Initial load
duke
parents:
diff changeset
11863 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11864 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11865 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11866 <required id="can_generate_native_method_bind_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11867 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11868 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11869 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11870 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11871 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11872 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11873 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11874 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11875 Will be <code>NULL</code> if sent during the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
11876 <functionlink id="GetPhase">phase</functionlink>.
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 requesting the bind
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 bound
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 Native method being bound
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="address">
a61af66fc99e Initial load
duke
parents:
diff changeset
11898 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11899 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11900 The address the VM is about to bind to--that is, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11901 address of the implementation of the native method
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="new_address_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11905 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
11906 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11907 if the referenced address is changed (that is, if
a61af66fc99e Initial load
duke
parents:
diff changeset
11908 <code>*new_address_ptr</code> is set), the binding
a61af66fc99e Initial load
duke
parents:
diff changeset
11909 will instead be made to the supplied address.
a61af66fc99e Initial load
duke
parents:
diff changeset
11910 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11911 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11912 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11913 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11914
a61af66fc99e Initial load
duke
parents:
diff changeset
11915 <event label="Exception"
a61af66fc99e Initial load
duke
parents:
diff changeset
11916 id="Exception" const="JVMTI_EVENT_EXCEPTION" filtered="thread" num="58">
a61af66fc99e Initial load
duke
parents:
diff changeset
11917 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11918 Exception events are generated whenever an exception is first detected
a61af66fc99e Initial load
duke
parents:
diff changeset
11919 in a Java programming language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11920 Where "exception" means any <code>java.lang.Throwable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11921 The exception may have been thrown by a Java programming language or native
a61af66fc99e Initial load
duke
parents:
diff changeset
11922 method, but in the case of native methods, the event is not generated
a61af66fc99e Initial load
duke
parents:
diff changeset
11923 until the exception is first seen by a Java programming language method. If an exception is
a61af66fc99e Initial load
duke
parents:
diff changeset
11924 set and cleared in a native method (and thus is never visible to Java programming language code),
a61af66fc99e Initial load
duke
parents:
diff changeset
11925 no exception event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
11926 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11927 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11928 parameters uniquely identify the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
11929 (where the exception was detected) and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11930 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11931 available. The <code>exception</code> field identifies the thrown
a61af66fc99e Initial load
duke
parents:
diff changeset
11932 exception object. The <code>catch_method</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11933 and <code>catch_location</code> identify the location of the catch clause,
a61af66fc99e Initial load
duke
parents:
diff changeset
11934 if any, that handles the thrown exception. If there is no such catch clause,
a61af66fc99e Initial load
duke
parents:
diff changeset
11935 each field is set to 0. There is no guarantee that the thread will ever
a61af66fc99e Initial load
duke
parents:
diff changeset
11936 reach this catch clause. If there are native methods on the call stack
a61af66fc99e Initial load
duke
parents:
diff changeset
11937 between the throw location and the catch clause, the exception may
a61af66fc99e Initial load
duke
parents:
diff changeset
11938 be reset by one of those native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
11939 Similarly, exceptions that are reported as uncaught (<code>catch_klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11940 et al. set to 0) may in fact be caught by native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
11941 Agents can check for these occurrences by monitoring
a61af66fc99e Initial load
duke
parents:
diff changeset
11942 <eventlink id="ExceptionCatch"></eventlink> events.
a61af66fc99e Initial load
duke
parents:
diff changeset
11943 Note that finally clauses are implemented as catch and re-throw. Therefore they
a61af66fc99e Initial load
duke
parents:
diff changeset
11944 will be reported in the catch location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11945 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11946 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11947 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11948 <required id="can_generate_exception_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11949 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11950 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11951 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11952 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11953 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11954 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11955 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11956 The JNI environment of the event (current) thread
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="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11960 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11961 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11962 Thread generating the exception
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="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11966 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11967 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11968 Class generating the exception
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="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11972 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11973 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11974 Method generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
11975 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11976 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11977 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11978 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11979 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11980 Location where exception occurred
a61af66fc99e Initial load
duke
parents:
diff changeset
11981 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11982 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11983 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
11984 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11985 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11986 The exception being thrown
a61af66fc99e Initial load
duke
parents:
diff changeset
11987 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11988 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11989 <param id="catch_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11990 <jclass method="catch_method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11991 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11992 Class that will catch the exception, or <code>NULL</code> if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
11993 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11994 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11995 <param id="catch_method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11996 <jmethodID class="catch_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11997 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11998 Method that will catch the exception, or <code>NULL</code> if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
11999 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12000 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12001 <param id="catch_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12002 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12003 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12004 location which will catch the exception or zero if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12005 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12006 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12007 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12008 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12009
a61af66fc99e Initial load
duke
parents:
diff changeset
12010 <event label="Exception Catch"
a61af66fc99e Initial load
duke
parents:
diff changeset
12011 id="ExceptionCatch" const="JVMTI_EVENT_EXCEPTION_CATCH" filtered="thread" num="59">
a61af66fc99e Initial load
duke
parents:
diff changeset
12012 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12013 Exception catch events are generated whenever a thrown exception is caught.
a61af66fc99e Initial load
duke
parents:
diff changeset
12014 Where "exception" means any <code>java.lang.Throwable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12015 If the exception is caught in a Java programming language method, the event is generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12016 when the catch clause is reached. If the exception is caught in a native
a61af66fc99e Initial load
duke
parents:
diff changeset
12017 method, the event is generated as soon as control is returned to a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12018 method. Exception catch events are generated for any exception for which
a61af66fc99e Initial load
duke
parents:
diff changeset
12019 a throw was detected in a Java programming language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
12020 Note that finally clauses are implemented as catch and re-throw. Therefore they
a61af66fc99e Initial load
duke
parents:
diff changeset
12021 will generate exception catch events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12022 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12023 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12024 parameters uniquely identify the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
12025 and allow the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
12026 available. For exceptions caught in a Java programming language method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
12027 <code>exception</code> object identifies the exception object. Exceptions
a61af66fc99e Initial load
duke
parents:
diff changeset
12028 caught in native methods are not necessarily available by the time the
a61af66fc99e Initial load
duke
parents:
diff changeset
12029 exception catch is reported, so the <code>exception</code> field is set
a61af66fc99e Initial load
duke
parents:
diff changeset
12030 to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12031 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12032 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12033 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12034 <required id="can_generate_exception_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12035 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12036 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12037 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12038 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12039 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12040 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12041 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12042 The JNI environment of the event (current) thread
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="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12046 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12047 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12048 Thread catching 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="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12052 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12053 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12054 Class catching the exception
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="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12058 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12059 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12060 Method catching the exception
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="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12064 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12065 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12066 Location where exception is being caught
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="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
12070 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12071 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12072 Exception being caught
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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12076 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12077
a61af66fc99e Initial load
duke
parents:
diff changeset
12078 <event label="Thread Start"
a61af66fc99e Initial load
duke
parents:
diff changeset
12079 id="ThreadStart" const="JVMTI_EVENT_THREAD_START" num="52" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12080 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12081 Thread start events are generated by a new thread before its initial
a61af66fc99e Initial load
duke
parents:
diff changeset
12082 method executes.
a61af66fc99e Initial load
duke
parents:
diff changeset
12083 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12084 A thread may be listed in the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
12085 <functionlink id="GetAllThreads"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12086 before its thread start event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12087 It is possible for other events to be generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12088 on a thread before its thread start event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12089 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12090 The event is sent on the newly started <paramlink id="thread"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12091 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12092 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12093 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12094 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12095 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12096 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12097 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12098 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12099 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12100 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12101 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12102 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12103 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12104 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12105 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12106 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12107 Thread starting
a61af66fc99e Initial load
duke
parents:
diff changeset
12108 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12109 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12110 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12111 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12112
a61af66fc99e Initial load
duke
parents:
diff changeset
12113 <event label="Thread End"
a61af66fc99e Initial load
duke
parents:
diff changeset
12114 id="ThreadEnd" const="JVMTI_EVENT_THREAD_END" filtered="thread" num="53" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12115 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12116 Thread end events are generated by a terminating thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12117 after its initial method has finished execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
12118 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12119 A thread may be listed in the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
12120 <functionlink id="GetAllThreads"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12121 after its thread end event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12122 No events are generated on a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12123 after its thread end event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12124 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12125 The event is sent on the dying <paramlink id="thread"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12126 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12127 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12128 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12129 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12130 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12131 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12132 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12133 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12134 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12135 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12136 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12137 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12138 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12139 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12140 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12141 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12142 Thread ending
a61af66fc99e Initial load
duke
parents:
diff changeset
12143 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12144 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12145 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12146 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12147
a61af66fc99e Initial load
duke
parents:
diff changeset
12148 <event label="Class Load"
a61af66fc99e Initial load
duke
parents:
diff changeset
12149 id="ClassLoad" const="JVMTI_EVENT_CLASS_LOAD" filtered="thread" phase="start" num="55">
a61af66fc99e Initial load
duke
parents:
diff changeset
12150 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12151 A class load event is generated when a class is first loaded. The order
a61af66fc99e Initial load
duke
parents:
diff changeset
12152 of class load events generated by a particular thread are guaranteed
a61af66fc99e Initial load
duke
parents:
diff changeset
12153 to match the order of class loading within that thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12154 Array class creation does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12155 The creation of a primitive class (for example, java.lang.Integer.TYPE)
a61af66fc99e Initial load
duke
parents:
diff changeset
12156 does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12157 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12158 This event is sent at an early stage in loading the class. As
a61af66fc99e Initial load
duke
parents:
diff changeset
12159 a result the class should be used carefully. Note, for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
12160 that methods and fields are not yet loaded, so queries for methods,
a61af66fc99e Initial load
duke
parents:
diff changeset
12161 fields, subclasses, and so on will not give correct results.
a61af66fc99e Initial load
duke
parents:
diff changeset
12162 See "Loading of Classes and Interfaces" in the <i>Java Language
a61af66fc99e Initial load
duke
parents:
diff changeset
12163 Specification</i>. For most
a61af66fc99e Initial load
duke
parents:
diff changeset
12164 purposes the <eventlink id="ClassPrepare"></eventlink> event will
a61af66fc99e Initial load
duke
parents:
diff changeset
12165 be more useful.
a61af66fc99e Initial load
duke
parents:
diff changeset
12166 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12167 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12168 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12169 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12170 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12171 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12172 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12173 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12174 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12175 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12176 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12177 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12178 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12179 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12180 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12181 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12182 Thread loading the class
a61af66fc99e Initial load
duke
parents:
diff changeset
12183 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12184 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12185 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12186 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12187 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12188 Class being loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12189 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12190 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12191 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12192 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12193
a61af66fc99e Initial load
duke
parents:
diff changeset
12194 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
12195 <event label="Class Unload"
a61af66fc99e Initial load
duke
parents:
diff changeset
12196 id="ClassUnload" const="JVMTI_EVENT_CLASS_UNLOAD" num="57">
a61af66fc99e Initial load
duke
parents:
diff changeset
12197 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12198 A class unload event is generated when the class is about to be unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12199 Class unload events take place during garbage collection and must be
a61af66fc99e Initial load
duke
parents:
diff changeset
12200 handled extremely carefully. The garbage collector holds many locks
a61af66fc99e Initial load
duke
parents:
diff changeset
12201 and has suspended all other threads, so the event handler cannot depend
a61af66fc99e Initial load
duke
parents:
diff changeset
12202 on the ability to acquire any locks. The class unload event handler should
a61af66fc99e Initial load
duke
parents:
diff changeset
12203 do as little as possible, perhaps by queuing information to be processed
a61af66fc99e Initial load
duke
parents:
diff changeset
12204 later. In particular, the <code>jclass</code> should be used only in
a61af66fc99e Initial load
duke
parents:
diff changeset
12205 the JNI function <code>isSameObject</code> or in the following <jvmti/> functions:
a61af66fc99e Initial load
duke
parents:
diff changeset
12206 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12207 <li><functionlink id="GetClassSignature"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12208 <li><functionlink id="GetSourceFileName"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12209 <li><functionlink id="IsInterface"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12210 <li><functionlink id="IsArrayClass"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12211 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12212 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12213 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12214 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12215 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12216 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12217 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12218 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12219 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12220 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12221 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12222 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12223 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12224 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12225 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12226 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12227 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12228 Thread generating the class unload
a61af66fc99e Initial load
duke
parents:
diff changeset
12229 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12230 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12231 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12232 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12233 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12234 Class being unloaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12235 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12236 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12237 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12238 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12239 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
12240
a61af66fc99e Initial load
duke
parents:
diff changeset
12241 <event label="Class Prepare"
a61af66fc99e Initial load
duke
parents:
diff changeset
12242 id="ClassPrepare" const="JVMTI_EVENT_CLASS_PREPARE" filtered="thread" phase="start" num="56">
a61af66fc99e Initial load
duke
parents:
diff changeset
12243 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12244 A class prepare event is generated when class preparation is complete.
a61af66fc99e Initial load
duke
parents:
diff changeset
12245 At this point, class fields, methods, and implemented interfaces are
a61af66fc99e Initial load
duke
parents:
diff changeset
12246 available, and no code from the class has been executed. Since array
a61af66fc99e Initial load
duke
parents:
diff changeset
12247 classes never have fields or methods, class prepare events are not
a61af66fc99e Initial load
duke
parents:
diff changeset
12248 generated for them. Class prepare events are not generated for
a61af66fc99e Initial load
duke
parents:
diff changeset
12249 primitive classes (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
12250 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12251 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12252 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12253 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12254 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12255 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12256 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12257 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12258 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12259 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12260 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12261 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12262 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12263 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12264 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12265 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12266 Thread generating the class prepare
a61af66fc99e Initial load
duke
parents:
diff changeset
12267 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12268 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12269 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12270 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12271 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12272 Class being prepared
a61af66fc99e Initial load
duke
parents:
diff changeset
12273 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12274 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12275 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12276 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12277
a61af66fc99e Initial load
duke
parents:
diff changeset
12278 <event label="Class File Load Hook" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
12279 id="ClassFileLoadHook" const="JVMTI_EVENT_CLASS_FILE_LOAD_HOOK" num="54">
a61af66fc99e Initial load
duke
parents:
diff changeset
12280 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12281 This event is sent when the VM obtains class file data,
a61af66fc99e Initial load
duke
parents:
diff changeset
12282 but before it constructs
a61af66fc99e Initial load
duke
parents:
diff changeset
12283 the in-memory representation for that class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12284 This event is also sent when the class is being modified by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12285 <functionlink id="RetransformClasses"/> function or
a61af66fc99e Initial load
duke
parents:
diff changeset
12286 the <functionlink id="RedefineClasses"/> function,
a61af66fc99e Initial load
duke
parents:
diff changeset
12287 called in any <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
12288 The agent can instrument
a61af66fc99e Initial load
duke
parents:
diff changeset
12289 the existing class file data sent by the VM to include profiling/debugging hooks.
a61af66fc99e Initial load
duke
parents:
diff changeset
12290 See the description of
a61af66fc99e Initial load
duke
parents:
diff changeset
12291 <internallink id="bci">bytecode instrumentation</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12292 for usage information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12293 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12294 This event may be sent before the VM is initialized (the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
12295 <functionlink id="GetPhase">phase</functionlink>). During this time
a61af66fc99e Initial load
duke
parents:
diff changeset
12296 no VM resources should be created. Some classes might not be compatible
a61af66fc99e Initial load
duke
parents:
diff changeset
12297 with the function (eg. ROMized classes) and this event will not be
a61af66fc99e Initial load
duke
parents:
diff changeset
12298 generated for these classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
12299 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12300 The agent must allocate the space for the modified
a61af66fc99e Initial load
duke
parents:
diff changeset
12301 class file data buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
12302 using the memory allocation function
a61af66fc99e Initial load
duke
parents:
diff changeset
12303 <functionlink id="Allocate"></functionlink> because the
a61af66fc99e Initial load
duke
parents:
diff changeset
12304 VM is responsible for freeing the new class file data buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
12305 using <functionlink id="Deallocate"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12306 Note that <functionlink id="Allocate"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12307 is permitted during the primordial phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
12308 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12309 If the agent wishes to modify the class file, it must set
a61af66fc99e Initial load
duke
parents:
diff changeset
12310 <code>new_class_data</code> to point
a61af66fc99e Initial load
duke
parents:
diff changeset
12311 to the newly instrumented class file data buffer and set
a61af66fc99e Initial load
duke
parents:
diff changeset
12312 <code>new_class_data_len</code> to the length of that
a61af66fc99e Initial load
duke
parents:
diff changeset
12313 buffer before returning
a61af66fc99e Initial load
duke
parents:
diff changeset
12314 from this call. If no modification is desired, the agent simply
a61af66fc99e Initial load
duke
parents:
diff changeset
12315 does not set <code>new_class_data</code>. If multiple agents
a61af66fc99e Initial load
duke
parents:
diff changeset
12316 have enabled this event the results are chained. That is, if
a61af66fc99e Initial load
duke
parents:
diff changeset
12317 <code>new_class_data</code> has been set, it becomes the
a61af66fc99e Initial load
duke
parents:
diff changeset
12318 <code>class_data</code> for the next agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12319 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12320 The order that this event is sent to each environment differs
a61af66fc99e Initial load
duke
parents:
diff changeset
12321 from other events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12322 This event is sent to environments in the following order:
a61af66fc99e Initial load
duke
parents:
diff changeset
12323 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12324 <li><fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12325 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12326 incapable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12327 environments, in the
a61af66fc99e Initial load
duke
parents:
diff changeset
12328 order in which they were created
a61af66fc99e Initial load
duke
parents:
diff changeset
12329 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12330 <li><fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12331 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12332 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12333 environments, in the
a61af66fc99e Initial load
duke
parents:
diff changeset
12334 order in which they were created
a61af66fc99e Initial load
duke
parents:
diff changeset
12335 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12336 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12337 When triggered by <functionlink id="RetransformClasses"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
12338 this event is sent only to <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12339 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12340 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12341 environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
12342 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12343 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12344 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12345 <capability id="can_generate_all_class_hook_events"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12346 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12347 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12348 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12349 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12350 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12351 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12352 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12353 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12354 Will be <code>NULL</code> if sent during the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
12355 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12356 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12357 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12358 <param id="class_being_redefined">
a61af66fc99e Initial load
duke
parents:
diff changeset
12359 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12360 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12361 The class being
a61af66fc99e Initial load
duke
parents:
diff changeset
12362 <functionlink id="RedefineClasses">redefined</functionlink> or
a61af66fc99e Initial load
duke
parents:
diff changeset
12363 <functionlink id="RetransformClasses">retransformed</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12364 <code>NULL</code> if sent by class load.
a61af66fc99e Initial load
duke
parents:
diff changeset
12365 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12366 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12367 <param id="loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
12368 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12369 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12370 The class loader loading the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12371 <code>NULL</code> if the bootstrap class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
12372 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12373 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12374 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
12375 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12376 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12377 Name of class being loaded as a VM internal qualified name
a61af66fc99e Initial load
duke
parents:
diff changeset
12378 (for example, "java/util/List"), encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12379 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12380 Note: if the class is defined with a <code>NULL</code> name or
a61af66fc99e Initial load
duke
parents:
diff changeset
12381 without a name specified, <code>name</code> will be <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12382 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12383 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12384 <param id="protection_domain">
a61af66fc99e Initial load
duke
parents:
diff changeset
12385 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12386 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12387 The <code>ProtectionDomain</code> of the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12388 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12389 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12390 <param id="class_data_len">
a61af66fc99e Initial load
duke
parents:
diff changeset
12391 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12392 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12393 Length of current class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12394 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12395 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12396 <param id="class_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
12397 <vmbuf><uchar/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12398 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12399 Pointer to the current class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12400 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12401 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12402 <param id="new_class_data_len">
a61af66fc99e Initial load
duke
parents:
diff changeset
12403 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12404 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12405 Pointer to the length of the new class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12406 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12407 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12408 <param id="new_class_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
12409 <agentbuf incount="new_class_data_len"><uchar/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12410 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12411 Pointer to the pointer to the instrumented class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12412 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12413 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12414 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12415 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12416
a61af66fc99e Initial load
duke
parents:
diff changeset
12417 <event label="VM Start Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12418 id="VMStart" const="JVMTI_EVENT_VM_START" num="57" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12419 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12420 The VM initialization event signals the start of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12421 At this time JNI is live but the VM is not yet fully initialized.
a61af66fc99e Initial load
duke
parents:
diff changeset
12422 Once this event is generated, the agent is free to call any JNI function.
a61af66fc99e Initial load
duke
parents:
diff changeset
12423 This event signals the beginning of the start phase,
a61af66fc99e Initial load
duke
parents:
diff changeset
12424 <jvmti/> functions permitted in the start phase may be called.
a61af66fc99e Initial load
duke
parents:
diff changeset
12425 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12426 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12427 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12428 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12429 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12430 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12431 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12432 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12433 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12434 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12435 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12436 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12437 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12438 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12439 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12440 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12441 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12442
a61af66fc99e Initial load
duke
parents:
diff changeset
12443 <event label="VM Initialization Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12444 id="VMInit" const="JVMTI_EVENT_VM_INIT" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
12445 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12446 The VM initialization event signals the completion of VM initialization. Once
a61af66fc99e Initial load
duke
parents:
diff changeset
12447 this event is generated, the agent is free to call any JNI or <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12448 function. The VM initialization event can be preceded by or can be concurrent
a61af66fc99e Initial load
duke
parents:
diff changeset
12449 with other events, but
a61af66fc99e Initial load
duke
parents:
diff changeset
12450 the preceding events should be handled carefully, if at all, because the
a61af66fc99e Initial load
duke
parents:
diff changeset
12451 VM has not completed its initialization. The thread start event for the
a61af66fc99e Initial load
duke
parents:
diff changeset
12452 main application thread is guaranteed not to occur until after the
a61af66fc99e Initial load
duke
parents:
diff changeset
12453 handler for the VM initialization event returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
12454 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12455 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12456 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12457 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12458 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12459 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12460 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12461 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12462 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12463 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12464 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12465 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12466 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12467 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12468 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12469 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12470 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12471 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12472 The initial thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12473 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12474 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12475 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12476 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12477
a61af66fc99e Initial load
duke
parents:
diff changeset
12478 <event label="VM Death Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12479 id="VMDeath" const="JVMTI_EVENT_VM_DEATH" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
12480 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12481 The VM death event notifies the agent of the termination of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12482 No events will occur after the VMDeath event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12483 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12484 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12485 Note that <internallink id="onunload">Agent_OnUnload</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12486 will still be called in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
12487 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12488 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12489 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12490 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12491 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12492 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12493 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12494 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12495 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12496 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12497 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12498 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12499 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12500 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12501 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12502
a61af66fc99e Initial load
duke
parents:
diff changeset
12503 <event label="Compiled Method Load"
a61af66fc99e Initial load
duke
parents:
diff changeset
12504 id="CompiledMethodLoad" const="JVMTI_EVENT_COMPILED_METHOD_LOAD" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
12505 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12506 Sent when a method is compiled and loaded into memory by the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12507 If it is unloaded, the <eventlink id="CompiledMethodUnload"/> event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12508 If it is moved, the <eventlink id="CompiledMethodUnload"/> event is sent,
a61af66fc99e Initial load
duke
parents:
diff changeset
12509 followed by a new <code>CompiledMethodLoad</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12510 Note that a single method may have multiple compiled forms, and that
a61af66fc99e Initial load
duke
parents:
diff changeset
12511 this event will be sent for each form.
a61af66fc99e Initial load
duke
parents:
diff changeset
12512 Note also that several methods may be inlined into a single
a61af66fc99e Initial load
duke
parents:
diff changeset
12513 address range, and that this event will be sent for each method.
a61af66fc99e Initial load
duke
parents:
diff changeset
12514 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12515 These events can be sent after their initial occurrence with
a61af66fc99e Initial load
duke
parents:
diff changeset
12516 <functionlink id="GenerateEvents"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12517 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12518 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12519 <typedef id="jvmtiAddrLocationMap" label="Native address to location entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
12520 <field id="start_address">
a61af66fc99e Initial load
duke
parents:
diff changeset
12521 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12522 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12523 Starting native address of code corresponding to a location
a61af66fc99e Initial load
duke
parents:
diff changeset
12524 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12525 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
12526 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12527 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12528 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12529 Corresponding location. See
a61af66fc99e Initial load
duke
parents:
diff changeset
12530 <functionlink id="GetJLocationFormat"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12531 for the meaning of location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12532 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12533 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
12534 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
12535 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12536 <required id="can_generate_compiled_method_load_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12537 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12538 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12539 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12540 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12541 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12542 Class of the method being compiled and loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12543 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12544 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12545 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12546 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12547 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12548 Method being compiled and loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12549 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12550 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12551 <param id="code_size">
a61af66fc99e Initial load
duke
parents:
diff changeset
12552 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12553 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12554 Size of compiled code
a61af66fc99e Initial load
duke
parents:
diff changeset
12555 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12556 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12557 <param id="code_addr">
a61af66fc99e Initial load
duke
parents:
diff changeset
12558 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12559 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12560 Address where compiled method code is loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12561 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12562 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12563 <param id="map_length">
a61af66fc99e Initial load
duke
parents:
diff changeset
12564 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12565 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12566 Number of <typelink id="jvmtiAddrLocationMap"></typelink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12567 entries in the address map.
a61af66fc99e Initial load
duke
parents:
diff changeset
12568 Zero if mapping information cannot be supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
12569 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12570 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12571 <param id="map">
a61af66fc99e Initial load
duke
parents:
diff changeset
12572 <vmbuf><struct>jvmtiAddrLocationMap</struct></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12573 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12574 Map from native addresses to location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12575 The native address range of each entry is from
a61af66fc99e Initial load
duke
parents:
diff changeset
12576 <fieldlink id="start_address" struct="jvmtiAddrLocationMap"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12577 to <code>start_address-1</code> of the next entry.
a61af66fc99e Initial load
duke
parents:
diff changeset
12578 <code>NULL</code> if mapping information cannot be supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
12579 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12580 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12581 <param id="compile_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
12582 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12583 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12584 VM-specific compilation information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12585 The referenced compile information is managed by the VM
a61af66fc99e Initial load
duke
parents:
diff changeset
12586 and must not depend on the agent for collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
12587 A VM implementation defines the content and lifetime
a61af66fc99e Initial load
duke
parents:
diff changeset
12588 of the information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12589 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12590 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12591 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12592 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12593
a61af66fc99e Initial load
duke
parents:
diff changeset
12594 <event label="Compiled Method Unload"
a61af66fc99e Initial load
duke
parents:
diff changeset
12595 id="CompiledMethodUnload" const="JVMTI_EVENT_COMPILED_METHOD_UNLOAD" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
12596 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12597 Sent when a compiled method is unloaded from memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
12598 This event might not be sent on the thread which performed the unload.
a61af66fc99e Initial load
duke
parents:
diff changeset
12599 This event may be sent sometime after the unload occurs, but
a61af66fc99e Initial load
duke
parents:
diff changeset
12600 will be sent before the memory is reused
a61af66fc99e Initial load
duke
parents:
diff changeset
12601 by a newly generated compiled method. This event may be sent after
a61af66fc99e Initial load
duke
parents:
diff changeset
12602 the class is unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12603 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12604 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12605 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12606 <required id="can_generate_compiled_method_load_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12607 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12608 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12609 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12610 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12611 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12612 Class of the compiled method being unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12613 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12614 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12615 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12616 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12617 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12618 Compiled method being unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12619 For identification of the compiled method only -- the class
a61af66fc99e Initial load
duke
parents:
diff changeset
12620 may be unloaded and therefore the method should not be used
a61af66fc99e Initial load
duke
parents:
diff changeset
12621 as an argument to further JNI or <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
12622 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12623 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12624 <param id="code_addr">
a61af66fc99e Initial load
duke
parents:
diff changeset
12625 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12626 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12627 Address where compiled method code was loaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12628 For identification of the compiled method only --
a61af66fc99e Initial load
duke
parents:
diff changeset
12629 the space may have been reclaimed.
a61af66fc99e Initial load
duke
parents:
diff changeset
12630 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12631 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12632 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12633 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12634
a61af66fc99e Initial load
duke
parents:
diff changeset
12635 <event label="Dynamic Code Generated" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
12636 id="DynamicCodeGenerated" const="JVMTI_EVENT_DYNAMIC_CODE_GENERATED" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
12637 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12638 Sent when a component of the virtual machine is generated dynamically.
a61af66fc99e Initial load
duke
parents:
diff changeset
12639 This does not correspond to Java programming language code that is
a61af66fc99e Initial load
duke
parents:
diff changeset
12640 compiled--see <eventlink id="CompiledMethodLoad"></eventlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12641 This is for native code--for example, an interpreter that is generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12642 differently depending on command-line options.
a61af66fc99e Initial load
duke
parents:
diff changeset
12643 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12644 Note that this event has no controlling capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
12645 If a VM cannot generate these events, it simply does not send any.
a61af66fc99e Initial load
duke
parents:
diff changeset
12646 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12647 These events can be sent after their initial occurrence with
a61af66fc99e Initial load
duke
parents:
diff changeset
12648 <functionlink id="GenerateEvents"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12649 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12650 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12651 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12652 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12653 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12654 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
12655 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12656 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12657 Name of the code, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12658 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12659 Intended for display to an end-user.
a61af66fc99e Initial load
duke
parents:
diff changeset
12660 The name might not be unique.
a61af66fc99e Initial load
duke
parents:
diff changeset
12661 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12662 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12663 <param id="address">
a61af66fc99e Initial load
duke
parents:
diff changeset
12664 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12665 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12666 Native address of the code
a61af66fc99e Initial load
duke
parents:
diff changeset
12667 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12668 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12669 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
12670 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12671 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12672 Length in bytes of the code
a61af66fc99e Initial load
duke
parents:
diff changeset
12673 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12674 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12675 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12676 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12677
a61af66fc99e Initial load
duke
parents:
diff changeset
12678 <event label="Data Dump Request"
a61af66fc99e Initial load
duke
parents:
diff changeset
12679 id="DataDumpRequest" const="JVMTI_EVENT_DATA_DUMP_REQUEST" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
12680 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12681 Sent by the VM to request the agent to dump its data. This
a61af66fc99e Initial load
duke
parents:
diff changeset
12682 is just a hint and the agent need not react to this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12683 This is useful for processing command-line signals from users. For
a61af66fc99e Initial load
duke
parents:
diff changeset
12684 example, in the Java 2 SDK a CTRL-Break on Win32 and a CTRL-\ on Solaris
a61af66fc99e Initial load
duke
parents:
diff changeset
12685 causes the VM to send this event to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12686 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12687 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12688 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12689 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12690 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12691 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12692 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12693
a61af66fc99e Initial load
duke
parents:
diff changeset
12694 <event label="Monitor Contended Enter"
a61af66fc99e Initial load
duke
parents:
diff changeset
12695 id="MonitorContendedEnter" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTER" filtered="thread" num="75">
a61af66fc99e Initial load
duke
parents:
diff changeset
12696 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12697 Sent when a thread is attempting to enter a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12698 monitor already acquired by another thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12699 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12700 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12701 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12702 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12703 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12704 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12705 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12706 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12707 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12708 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12709 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12710 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12711 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12712 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12713 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12714 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12715 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12716 JNI local reference to the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12717 attempting to enter the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12718 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12719 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12720 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12721 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12722 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12723 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12724 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12725 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12726 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12727 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12728
a61af66fc99e Initial load
duke
parents:
diff changeset
12729 <event label="Monitor Contended Entered"
a61af66fc99e Initial load
duke
parents:
diff changeset
12730 id="MonitorContendedEntered" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTERED" filtered="thread" num="76">
a61af66fc99e Initial load
duke
parents:
diff changeset
12731 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12732 Sent when a thread enters a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12733 monitor after waiting for it to be released by another thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12734 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12735 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12736 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12737 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12738 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12739 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12740 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12741 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12742 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12743 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12744 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12745 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12746 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12747 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12748 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12749 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12750 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12751 JNI local reference to the thread entering
a61af66fc99e Initial load
duke
parents:
diff changeset
12752 the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12753 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12754 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12755 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12756 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12757 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12758 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12759 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12760 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12761 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12762 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12763
a61af66fc99e Initial load
duke
parents:
diff changeset
12764 <event label="Monitor Wait"
a61af66fc99e Initial load
duke
parents:
diff changeset
12765 id="MonitorWait" const="JVMTI_EVENT_MONITOR_WAIT" filtered="thread" num="73">
a61af66fc99e Initial load
duke
parents:
diff changeset
12766 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12767 Sent when a thread is about to wait on an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12768 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12769 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12770 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12771 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12772 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12773 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12774 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12775 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12776 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12777 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12778 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12779 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12780 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12781 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12782 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12783 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12784 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12785 JNI local reference to the thread about to wait
a61af66fc99e Initial load
duke
parents:
diff changeset
12786 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12787 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12788 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12789 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12790 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12791 JNI local reference to 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="timeout">
a61af66fc99e Initial load
duke
parents:
diff changeset
12795 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12796 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12797 The number of milliseconds the thread will wait
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 Waited"
a61af66fc99e Initial load
duke
parents:
diff changeset
12804 id="MonitorWaited" const="JVMTI_EVENT_MONITOR_WAITED" filtered="thread" num="74">
a61af66fc99e Initial load
duke
parents:
diff changeset
12805 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12806 Sent when a thread finishes waiting on an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12807 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12808 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12809 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12810 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12811 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12812 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12813 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12814 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12815 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12816 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12817 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12818 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12819 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12820 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12821 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12822 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12823 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12824 JNI local reference to the thread that was finished waiting
a61af66fc99e Initial load
duke
parents:
diff changeset
12825 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12826 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12827 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12828 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12829 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12830 JNI local reference to the monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
12831 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12832 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12833 <param id="timed_out">
a61af66fc99e Initial load
duke
parents:
diff changeset
12834 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12835 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12836 True if the monitor timed out
a61af66fc99e Initial load
duke
parents:
diff changeset
12837 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12838 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12839 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12840 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12841
a61af66fc99e Initial load
duke
parents:
diff changeset
12842 <event label="Resource Exhausted"
a61af66fc99e Initial load
duke
parents:
diff changeset
12843 id="ResourceExhausted" const="JVMTI_EVENT_RESOURCE_EXHAUSTED" num="80"
a61af66fc99e Initial load
duke
parents:
diff changeset
12844 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
12845 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12846 Sent when a VM resource needed by a running application has been exhausted.
a61af66fc99e Initial load
duke
parents:
diff changeset
12847 Except as required by the optional capabilities, the set of resources
a61af66fc99e Initial load
duke
parents:
diff changeset
12848 which report exhaustion is implementation dependent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12849 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12850 The following bit flags define the properties of the resource exhaustion:
a61af66fc99e Initial load
duke
parents:
diff changeset
12851 <constants id="jvmtiResourceExhaustionFlags"
a61af66fc99e Initial load
duke
parents:
diff changeset
12852 label="Resource Exhaustion Flags"
a61af66fc99e Initial load
duke
parents:
diff changeset
12853 kind="bits"
a61af66fc99e Initial load
duke
parents:
diff changeset
12854 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
12855 <constant id="JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR" num="0x0001">
a61af66fc99e Initial load
duke
parents:
diff changeset
12856 After this event returns, the VM will throw a
a61af66fc99e Initial load
duke
parents:
diff changeset
12857 <code>java.lang.OutOfMemoryError</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12858 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12859 <constant id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP" num="0x0002">
a61af66fc99e Initial load
duke
parents:
diff changeset
12860 The VM was unable to allocate memory from the <tm>Java</tm>
a61af66fc99e Initial load
duke
parents:
diff changeset
12861 platform <i>heap</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12862 The <i>heap</i> is the runtime
a61af66fc99e Initial load
duke
parents:
diff changeset
12863 data area from which memory for all class instances and
a61af66fc99e Initial load
duke
parents:
diff changeset
12864 arrays are allocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12865 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12866 <constant id="JVMTI_RESOURCE_EXHAUSTED_THREADS" num="0x0004">
a61af66fc99e Initial load
duke
parents:
diff changeset
12867 The VM was unable to create a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12868 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12869 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
12870 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12871 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12872 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12873 <capability id="can_generate_resource_exhaustion_heap_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
12874 Can generate events when the VM is unable to allocate memory from the
a61af66fc99e Initial load
duke
parents:
diff changeset
12875 <internallink id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP">heap</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12876 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12877 <capability id="can_generate_resource_exhaustion_threads_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
12878 Can generate events when the VM is unable to
a61af66fc99e Initial load
duke
parents:
diff changeset
12879 <internallink id="JVMTI_RESOURCE_EXHAUSTED_THREADS">create
a61af66fc99e Initial load
duke
parents:
diff changeset
12880 a thread</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12881 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12882 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12883 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12884 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12885 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12886 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12887 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12888 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12889 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12890 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12891 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12892 <param id="flags">
a61af66fc99e Initial load
duke
parents:
diff changeset
12893 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12894 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12895 Flags defining the properties of the of resource exhaustion
a61af66fc99e Initial load
duke
parents:
diff changeset
12896 as specified by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12897 <internallink id="jvmtiResourceExhaustionFlags">Resource
a61af66fc99e Initial load
duke
parents:
diff changeset
12898 Exhaustion Flags</internallink>.
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="reserved">
a61af66fc99e Initial load
duke
parents:
diff changeset
12902 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12903 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12904 Reserved.
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="description">
a61af66fc99e Initial load
duke
parents:
diff changeset
12908 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12909 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12910 Description of the resource exhaustion, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12911 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12912 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12913 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12914 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12915 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12916
a61af66fc99e Initial load
duke
parents:
diff changeset
12917 <event label="VM Object Allocation"
a61af66fc99e Initial load
duke
parents:
diff changeset
12918 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
a61af66fc99e Initial load
duke
parents:
diff changeset
12919 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12920 Sent when a method causes the virtual machine to allocate an
a61af66fc99e Initial load
duke
parents:
diff changeset
12921 Object visible to Java programming language code and the
a61af66fc99e Initial load
duke
parents:
diff changeset
12922 allocation is not detectable by other intrumentation mechanisms.
a61af66fc99e Initial load
duke
parents:
diff changeset
12923 Generally object allocation should be detected by instrumenting
a61af66fc99e Initial load
duke
parents:
diff changeset
12924 the bytecodes of allocating methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
12925 Object allocation generated in native code by JNI function
a61af66fc99e Initial load
duke
parents:
diff changeset
12926 calls should be detected using
a61af66fc99e Initial load
duke
parents:
diff changeset
12927 <internallink id="jniIntercept">JNI function interception</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12928 Some methods might not have associated bytecodes and are not
a61af66fc99e Initial load
duke
parents:
diff changeset
12929 native methods, they instead are executed directly by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12930 VM. These methods should send this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12931 Virtual machines which are incapable of bytecode instrumentation
a61af66fc99e Initial load
duke
parents:
diff changeset
12932 for some or all of their methods can send this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12933 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12934 Typical examples where this event might be sent:
a61af66fc99e Initial load
duke
parents:
diff changeset
12935 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12936 <li>Reflection -- for example, <code>java.lang.Class.newInstance()</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12937 <li>Methods not represented by bytecodes -- for example, VM intrinsics and
a61af66fc99e Initial load
duke
parents:
diff changeset
12938 J2ME preloaded classes</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12939 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12940 Cases where this event would not be generated:
a61af66fc99e Initial load
duke
parents:
diff changeset
12941 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12942 <li>Allocation due to bytecodes -- for example, the <code>new</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12943 and <code>newarray</code> VM instructions</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12944 <li>Allocation due to JNI function calls -- for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
12945 <code>AllocObject</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12946 <li>Allocations during VM initialization</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12947 <li>VM internal objects</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12948 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12949 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12950 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12951 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12952 <required id="can_generate_vm_object_alloc_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12953 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12954 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12955 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12956 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12957 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12958 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12959 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12960 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12961 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12962 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12963 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12964 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12965 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12966 Thread allocating the object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12967 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12968 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12969 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12970 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12971 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12972 JNI local reference to the object that was allocated
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="object_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12976 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12977 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12978 JNI local reference to the class of the object
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="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
12982 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12983 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12984 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12985 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12986 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12987 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12988 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12989
a61af66fc99e Initial load
duke
parents:
diff changeset
12990 <event label="Object Free"
a61af66fc99e Initial load
duke
parents:
diff changeset
12991 id="ObjectFree" const="JVMTI_EVENT_OBJECT_FREE" num="83">
a61af66fc99e Initial load
duke
parents:
diff changeset
12992 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12993 An Object Free event is sent when the garbage collector frees an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12994 Events are only sent for tagged objects--see
a61af66fc99e Initial load
duke
parents:
diff changeset
12995 <internallink id="Heap">heap functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12996 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12997 The event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
12998 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
12999 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13000 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13001 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13002 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13003 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13004 <required id="can_generate_object_free_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13005 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13006 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13007 <param id="tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
13008 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13009 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13010 The freed object's tag
a61af66fc99e Initial load
duke
parents:
diff changeset
13011 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13012 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13013 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13014 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13015
a61af66fc99e Initial load
duke
parents:
diff changeset
13016 <event label="Garbage Collection Start"
a61af66fc99e Initial load
duke
parents:
diff changeset
13017 id="GarbageCollectionStart" const="JVMTI_EVENT_GARBAGE_COLLECTION_START" num="81">
a61af66fc99e Initial load
duke
parents:
diff changeset
13018 <description>
2125
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13019 A Garbage Collection Start event is sent when a
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13020 garbage collection pause begins.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13021 Only stop-the-world collections are reported--that is, collections during
a61af66fc99e Initial load
duke
parents:
diff changeset
13022 which all threads cease to modify the state of the Java virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
13023 This means that some collectors will never generate these events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13024 This event is sent while the VM is still stopped, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
13025 the event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13026 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13027 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13028 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13029 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13030 This event is always sent as a matched pair with
a61af66fc99e Initial load
duke
parents:
diff changeset
13031 <eventlink id="GarbageCollectionFinish"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13032 (assuming both events are enabled) and no garbage collection
a61af66fc99e Initial load
duke
parents:
diff changeset
13033 events will occur between them.
a61af66fc99e Initial load
duke
parents:
diff changeset
13034 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13035 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13036 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13037 <required id="can_generate_garbage_collection_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13038 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13039 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13040 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13041 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13042
a61af66fc99e Initial load
duke
parents:
diff changeset
13043 <event label="Garbage Collection Finish"
a61af66fc99e Initial load
duke
parents:
diff changeset
13044 id="GarbageCollectionFinish" const="JVMTI_EVENT_GARBAGE_COLLECTION_FINISH" num="82">
a61af66fc99e Initial load
duke
parents:
diff changeset
13045 <description>
2125
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13046 A Garbage Collection Finish event is sent when a
7246a374a9f2 6458402: 3 jvmti tests fail with CMS and +ExplicitGCInvokesConcurrent
kamg
parents: 2100
diff changeset
13047 garbage collection pause ends.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13048 This event is sent while the VM is still stopped, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
13049 the event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13050 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13051 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13052 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13053 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13054 Some agents may need to do post garbage collection operations that
a61af66fc99e Initial load
duke
parents:
diff changeset
13055 require the use of the disallowed <jvmti/> or JNI functions. For these
a61af66fc99e Initial load
duke
parents:
diff changeset
13056 cases an agent thread can be created which waits on a raw monitor,
a61af66fc99e Initial load
duke
parents:
diff changeset
13057 and the handler for the Garbage Collection Finish event simply
a61af66fc99e Initial load
duke
parents:
diff changeset
13058 notifies the raw monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13059 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13060 This event is always sent as a matched pair with
a61af66fc99e Initial load
duke
parents:
diff changeset
13061 <eventlink id="GarbageCollectionStart"/> (assuming both events are enabled).
a61af66fc99e Initial load
duke
parents:
diff changeset
13062 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13063 The most important use of this event is to provide timing information,
a61af66fc99e Initial load
duke
parents:
diff changeset
13064 and thus additional information is not required. However,
a61af66fc99e Initial load
duke
parents:
diff changeset
13065 information about the collection which is "free" should be included -
a61af66fc99e Initial load
duke
parents:
diff changeset
13066 what that information is needs to be determined.
a61af66fc99e Initial load
duke
parents:
diff changeset
13067 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13068 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13069 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13070 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13071 <required id="can_generate_garbage_collection_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13072 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13073 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13074 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13075 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13076
a61af66fc99e Initial load
duke
parents:
diff changeset
13077 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
13078 <event label="Verbose Output" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
13079 id="VerboseOutput" const="JVMTI_EVENT_VERBOSE_OUTPUT" num="85">
a61af66fc99e Initial load
duke
parents:
diff changeset
13080 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13081 Send verbose messages as strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
13082 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13083 This format is extremely fragile, as it can change with each
a61af66fc99e Initial load
duke
parents:
diff changeset
13084 platform, collector and version. Alternatives include:
a61af66fc99e Initial load
duke
parents:
diff changeset
13085 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13086 <li>building off Java programming language M and M APIs</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13087 <li>XML</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13088 <li>key/value pairs</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13089 <li>removing it</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13090 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13091 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13092 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13093 Though this seemed trivial to implement.
a61af66fc99e Initial load
duke
parents:
diff changeset
13094 In the RI it appears this will be quite complex.
a61af66fc99e Initial load
duke
parents:
diff changeset
13095 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13096 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13097 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13098 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13099 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13100 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13101 <param id="flag">
a61af66fc99e Initial load
duke
parents:
diff changeset
13102 <enum>jvmtiVerboseFlag</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
13103 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13104 Which verbose output is being sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13105 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13106 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13107 <param id="message">
a61af66fc99e Initial load
duke
parents:
diff changeset
13108 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
13109 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13110 Message text, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
13111 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
13112 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13113 </param>
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 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
13117
a61af66fc99e Initial load
duke
parents:
diff changeset
13118 </eventsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13119
a61af66fc99e Initial load
duke
parents:
diff changeset
13120 <datasection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13121 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13122 <jvmti/> extends the data types defined by JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
13123 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13124 <basetypes id="jniTypes" label="JNI Types Used in the JVM Tool Interface">
a61af66fc99e Initial load
duke
parents:
diff changeset
13125 <basetype id="jboolean">
a61af66fc99e Initial load
duke
parents:
diff changeset
13126 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13127 Holds a Java programming language <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13128 Unsigned 8 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13129 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13130 </basetype>
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13131 <basetype id="jchar">
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13132 <description>
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13133 Holds a Java programming language <code>char</code>.
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13134 Unsigned 16 bits.
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13135 </description>
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13136 </basetype>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13137 <basetype id="jint">
a61af66fc99e Initial load
duke
parents:
diff changeset
13138 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13139 Holds a Java programming language <code>int</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13140 Signed 32 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13141 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13142 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13143 <basetype id="jlong">
a61af66fc99e Initial load
duke
parents:
diff changeset
13144 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13145 Holds a Java programming language <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13146 Signed 64 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13147 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13148 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13149 <basetype id="jfloat">
a61af66fc99e Initial load
duke
parents:
diff changeset
13150 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13151 Holds a Java programming language <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13152 32 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13153 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13154 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13155 <basetype id="jdouble">
a61af66fc99e Initial load
duke
parents:
diff changeset
13156 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13157 Holds a Java programming language <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13158 64 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13159 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13160 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13161 <basetype id="jobject">
a61af66fc99e Initial load
duke
parents:
diff changeset
13162 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13163 Holds a Java programming language object.
a61af66fc99e Initial load
duke
parents:
diff changeset
13164 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13165 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13166 <basetype id="jclass">
a61af66fc99e Initial load
duke
parents:
diff changeset
13167 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13168 Holds a Java programming language class.
a61af66fc99e Initial load
duke
parents:
diff changeset
13169 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13170 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13171 <basetype id="jvalue">
a61af66fc99e Initial load
duke
parents:
diff changeset
13172 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13173 Is a union of all primitive types and <code>jobject</code>. Thus, holds any Java
a61af66fc99e Initial load
duke
parents:
diff changeset
13174 programming language value.
a61af66fc99e Initial load
duke
parents:
diff changeset
13175 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13176 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13177 <basetype id="jfieldID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13178 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13179 Identifies a Java programming language field.
a61af66fc99e Initial load
duke
parents:
diff changeset
13180 <code>jfieldID</code>s returned by <jvmti/> functions and events may be
a61af66fc99e Initial load
duke
parents:
diff changeset
13181 safely stored.
a61af66fc99e Initial load
duke
parents:
diff changeset
13182 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13183 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13184 <basetype id="jmethodID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13185 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13186 Identifies a Java programming language method, initializer, or constructor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13187 <code>jmethodID</code>s returned by <jvmti/> functions and events may be
a61af66fc99e Initial load
duke
parents:
diff changeset
13188 safely stored. However, if the class is unloaded, they become invalid
a61af66fc99e Initial load
duke
parents:
diff changeset
13189 and must not be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
13190 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13191 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13192 <basetype id="JNIEnv">
a61af66fc99e Initial load
duke
parents:
diff changeset
13193 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13194 Pointer to the JNI function table. Pointer to this (<code>JNIEnv *</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
13195 is a JNI environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
13196 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13197 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13198 </basetypes>
a61af66fc99e Initial load
duke
parents:
diff changeset
13199
a61af66fc99e Initial load
duke
parents:
diff changeset
13200 <basetypes id="jvmtiTypes" label="JVM Tool Interface Base Types">
a61af66fc99e Initial load
duke
parents:
diff changeset
13201 <basetype id="jvmtiEnv">
a61af66fc99e Initial load
duke
parents:
diff changeset
13202 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13203 The <jvmti/> <internallink id="environments">environment</internallink> pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13204 See the <internallink id="FunctionSection">Function Section</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13205 <code>jvmtiEnv</code> points to the
a61af66fc99e Initial load
duke
parents:
diff changeset
13206 <internallink id="FunctionTable">function table</internallink> pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13207 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13208 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13209 <basetype id="jthread">
a61af66fc99e Initial load
duke
parents:
diff changeset
13210 <definition>typedef jobject jthread;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13211 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13212 Subtype of <datalink id="jobject"></datalink> that holds a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13213 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13214 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13215 <basetype id="jthreadGroup">
a61af66fc99e Initial load
duke
parents:
diff changeset
13216 <definition>typedef jobject jthreadGroup;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13217 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13218 Subtype of <datalink id="jobject"></datalink> that holds a thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
13219 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13220 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13221 <basetype id="jlocation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13222 <definition>typedef jlong jlocation;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13223 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13224 A 64 bit value, representing a monotonically increasing
a61af66fc99e Initial load
duke
parents:
diff changeset
13225 executable position within a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13226 <code>-1</code> indicates a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13227 See <functionlink id="GetJLocationFormat"></functionlink> for the format on a
a61af66fc99e Initial load
duke
parents:
diff changeset
13228 given VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
13229 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13230 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13231 <basetype id="jrawMonitorID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13232 <definition>struct _jrawMonitorID;
a61af66fc99e Initial load
duke
parents:
diff changeset
13233 typedef struct _jrawMonitorID *jrawMonitorID;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13234 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13235 A raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13236 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13237 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13238 <basetype id="jvmtiError">
a61af66fc99e Initial load
duke
parents:
diff changeset
13239 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13240 Holds an error return code.
a61af66fc99e Initial load
duke
parents:
diff changeset
13241 See the <internallink id="ErrorSection">Error section</internallink> for possible values.
a61af66fc99e Initial load
duke
parents:
diff changeset
13242 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13243 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
13244 JVMTI_ERROR_NONE = 0,
a61af66fc99e Initial load
duke
parents:
diff changeset
13245 JVMTI_ERROR_INVALID_THREAD = 10,
a61af66fc99e Initial load
duke
parents:
diff changeset
13246 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13247 } jvmtiError;
a61af66fc99e Initial load
duke
parents:
diff changeset
13248 </example>
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="jvmtiEvent">
a61af66fc99e Initial load
duke
parents:
diff changeset
13252 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13253 An identifier for an event type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13254 See the <internallink id="EventSection">Event section</internallink> for possible values.
a61af66fc99e Initial load
duke
parents:
diff changeset
13255 It is guaranteed that future versions of this specification will
a61af66fc99e Initial load
duke
parents:
diff changeset
13256 never assign zero as an event type identifier.
a61af66fc99e Initial load
duke
parents:
diff changeset
13257 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13258 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
13259 JVMTI_EVENT_SINGLE_STEP = 1,
a61af66fc99e Initial load
duke
parents:
diff changeset
13260 JVMTI_EVENT_BREAKPOINT = 2,
a61af66fc99e Initial load
duke
parents:
diff changeset
13261 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13262 } jvmtiEvent;
a61af66fc99e Initial load
duke
parents:
diff changeset
13263 </example>
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="jvmtiEventCallbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
13267 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13268 The callbacks used for events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13269 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13270 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
13271 jvmtiEventVMInit VMInit;
a61af66fc99e Initial load
duke
parents:
diff changeset
13272 jvmtiEventVMDeath VMDeath;
a61af66fc99e Initial load
duke
parents:
diff changeset
13273 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13274 } jvmtiEventCallbacks;
a61af66fc99e Initial load
duke
parents:
diff changeset
13275 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13276 See <internallink id="jvmtiEventCallbacks">event callbacks</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13277 for the complete structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
13278 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13279 Where, for example, the VM initialization callback is defined:
a61af66fc99e Initial load
duke
parents:
diff changeset
13280 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13281 typedef void (JNICALL *jvmtiEventVMInit)
a61af66fc99e Initial load
duke
parents:
diff changeset
13282 (jvmtiEnv *jvmti_env,
a61af66fc99e Initial load
duke
parents:
diff changeset
13283 JNIEnv* jni_env,
a61af66fc99e Initial load
duke
parents:
diff changeset
13284 jthread thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
13285 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13286 See the individual events for the callback function definition.
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="jniNativeInterface">
a61af66fc99e Initial load
duke
parents:
diff changeset
13290 <definition>typedef struct JNINativeInterface_ jniNativeInterface;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13291 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13292 Typedef for the JNI function table <code>JNINativeInterface</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
13293 defined in the
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
13294 <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
13295 The JNI reference implementation defines this with an underscore.
a61af66fc99e Initial load
duke
parents:
diff changeset
13296 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13297 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13298 </basetypes>
a61af66fc99e Initial load
duke
parents:
diff changeset
13299
a61af66fc99e Initial load
duke
parents:
diff changeset
13300 </datasection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13301
a61af66fc99e Initial load
duke
parents:
diff changeset
13302 <issuessection label="Issues">
a61af66fc99e Initial load
duke
parents:
diff changeset
13303 <intro id="suspendRequired" label="Resolved Issue: Suspend - Required or Automatic">
a61af66fc99e Initial load
duke
parents:
diff changeset
13304 JVMDI requires that the agent suspend threads before calling
a61af66fc99e Initial load
duke
parents:
diff changeset
13305 certain sensitive functions. JVMPI requires garbage collection to be
a61af66fc99e Initial load
duke
parents:
diff changeset
13306 disabled before calling certain sensitive functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13307 It was suggested that rather than have this requirement, that
a61af66fc99e Initial load
duke
parents:
diff changeset
13308 VM place itself in a suitable state before performing an
a61af66fc99e Initial load
duke
parents:
diff changeset
13309 operation. This makes considerable sense since each VM
a61af66fc99e Initial load
duke
parents:
diff changeset
13310 knows its requirements and can most easily arrange a
a61af66fc99e Initial load
duke
parents:
diff changeset
13311 safe state.
a61af66fc99e Initial load
duke
parents:
diff changeset
13312 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13313 The ability to externally suspend/resume threads will, of
a61af66fc99e Initial load
duke
parents:
diff changeset
13314 course, remain. The ability to enable/disable garbage collection will not.
a61af66fc99e Initial load
duke
parents:
diff changeset
13315 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13316 This issue is resolved--suspend will not
a61af66fc99e Initial load
duke
parents:
diff changeset
13317 be required. The spec has been updated to reflect this.
a61af66fc99e Initial load
duke
parents:
diff changeset
13318 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13319
a61af66fc99e Initial load
duke
parents:
diff changeset
13320 <intro id="stackSampling" label="Resolved Issue: Call Stack Sampling">
a61af66fc99e Initial load
duke
parents:
diff changeset
13321 There are a variety of approaches to sampling call stacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13322 The biggest bifurcation is between VM controlled and agent
a61af66fc99e Initial load
duke
parents:
diff changeset
13323 controlled.
a61af66fc99e Initial load
duke
parents:
diff changeset
13324 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13325 This issue is resolved--agent controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
13326 sampling will be the approach.
a61af66fc99e Initial load
duke
parents:
diff changeset
13327 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13328
a61af66fc99e Initial load
duke
parents:
diff changeset
13329 <intro id="threadRepresentation" label="Resolved Issue: Thread Representation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13330 JVMDI represents threads as jthread. JVMPI primarily
a61af66fc99e Initial load
duke
parents:
diff changeset
13331 uses JNIEnv* to represent threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13332 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13333 The Expert Group has chosen jthread as the representation
a61af66fc99e Initial load
duke
parents:
diff changeset
13334 for threads in <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13335 JNIEnv* is sent by
a61af66fc99e Initial load
duke
parents:
diff changeset
13336 events since it is needed to JNI functions. JNIEnv, per the
a61af66fc99e Initial load
duke
parents:
diff changeset
13337 JNI spec, are not supposed to be used outside their thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13338 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13339
a61af66fc99e Initial load
duke
parents:
diff changeset
13340 <intro id="design" label="Resolved Issue: Method Representation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13341 The JNI spec allows an implementation to depend on jclass/jmethodID
a61af66fc99e Initial load
duke
parents:
diff changeset
13342 pairs, rather than simply a jmethodID, to reference a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13343 JVMDI, for consistency, choose the same representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13344 JVMPI, however, specifies that a jmethodID alone maps to a
a61af66fc99e Initial load
duke
parents:
diff changeset
13345 method. Both of the Sun <tm>J2SE</tm> virtual machines (Classic and <tm>HotSpot</tm>) store
a61af66fc99e Initial load
duke
parents:
diff changeset
13346 pointers in jmethodIDs, and as a result, a jmethodID is sufficient.
a61af66fc99e Initial load
duke
parents:
diff changeset
13347 In fact, any JVM implementation that supports JVMPI must have
a61af66fc99e Initial load
duke
parents:
diff changeset
13348 such a representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13349 <jvmti/> will use jmethodID as a unique representation of a method
a61af66fc99e Initial load
duke
parents:
diff changeset
13350 (no jclass is used).
a61af66fc99e Initial load
duke
parents:
diff changeset
13351 There should be efficiency gains, particularly in
a61af66fc99e Initial load
duke
parents:
diff changeset
13352 functionality like stack dumping, to this representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13353 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13354 Note that fields were not used in JVMPI and that the access profile
a61af66fc99e Initial load
duke
parents:
diff changeset
13355 of fields differs from methods--for implementation efficiency
a61af66fc99e Initial load
duke
parents:
diff changeset
13356 reasons, a jclass/jfieldID pair will still be needed for field
a61af66fc99e Initial load
duke
parents:
diff changeset
13357 reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
13358 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13359
a61af66fc99e Initial load
duke
parents:
diff changeset
13360 <intro id="localReferenceIssue" label="Resolved Issue: Local References">
a61af66fc99e Initial load
duke
parents:
diff changeset
13361 Functions return local references.
a61af66fc99e Initial load
duke
parents:
diff changeset
13362 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13363
a61af66fc99e Initial load
duke
parents:
diff changeset
13364 <intro id="frameRep" label="Resolved Issue: Representation of frames">
a61af66fc99e Initial load
duke
parents:
diff changeset
13365 In JVMDI, a frame ID is used to represent a frame. Problem with this
a61af66fc99e Initial load
duke
parents:
diff changeset
13366 is that a VM must track when a frame becomes invalid, a far better
a61af66fc99e Initial load
duke
parents:
diff changeset
13367 approach, and the one used in <jvmti/>, is to reference frames by depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
13368 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13369
a61af66fc99e Initial load
duke
parents:
diff changeset
13370 <intro id="requiredCapabilities" label="Issue: Required Capabilities">
a61af66fc99e Initial load
duke
parents:
diff changeset
13371 Currently, having a required capabilities means that the functionality
a61af66fc99e Initial load
duke
parents:
diff changeset
13372 is optional. Capabilities are useful even for required functionality
a61af66fc99e Initial load
duke
parents:
diff changeset
13373 since they can inform the VM is needed set-up. Thus, there should be
a61af66fc99e Initial load
duke
parents:
diff changeset
13374 a set of capabilities that a conformant implementation must provide
a61af66fc99e Initial load
duke
parents:
diff changeset
13375 (if requested during Agent_OnLoad).
a61af66fc99e Initial load
duke
parents:
diff changeset
13376 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13377
a61af66fc99e Initial load
duke
parents:
diff changeset
13378 <intro id="taghint" label="Proposal: add tag hint function">
a61af66fc99e Initial load
duke
parents:
diff changeset
13379 A hint of the percentage of objects that will be tagged would
a61af66fc99e Initial load
duke
parents:
diff changeset
13380 help the VM pick a good implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13381 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13382
a61af66fc99e Initial load
duke
parents:
diff changeset
13383 <intro id="moreMonitorQueries" label="Request: More Monitor Quires">
a61af66fc99e Initial load
duke
parents:
diff changeset
13384 How difficult or easy would be to extend the monitor_info category to include
a61af66fc99e Initial load
duke
parents:
diff changeset
13385 <pre>
a61af66fc99e Initial load
duke
parents:
diff changeset
13386 - current number of monitors
a61af66fc99e Initial load
duke
parents:
diff changeset
13387 - enumeration of monitors
a61af66fc99e Initial load
duke
parents:
diff changeset
13388 - enumeration of threads waiting on a given monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13389 </pre>
a61af66fc99e Initial load
duke
parents:
diff changeset
13390 The reason for my question is the fact that current get_monitor_info support
a61af66fc99e Initial load
duke
parents:
diff changeset
13391 requires the agent to specify a given thread to get the info which is probably
a61af66fc99e Initial load
duke
parents:
diff changeset
13392 OK in the profiling/debugging space, while in the monitoring space the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
13393 could be watching the monitor list and then decide which thread to ask for
a61af66fc99e Initial load
duke
parents:
diff changeset
13394 the info. You might ask why is this important for monitoring .... I think it
a61af66fc99e Initial load
duke
parents:
diff changeset
13395 can aid in the detection/prediction of application contention caused by hot-locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13396 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13397 </issuessection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13398
a61af66fc99e Initial load
duke
parents:
diff changeset
13399 <changehistory id="ChangeHistory" update="09/05/07">
a61af66fc99e Initial load
duke
parents:
diff changeset
13400 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13401 The <jvmti/> specification is an evolving document with major, minor,
a61af66fc99e Initial load
duke
parents:
diff changeset
13402 and micro version numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13403 A released version of the specification is uniquely identified
a61af66fc99e Initial load
duke
parents:
diff changeset
13404 by its major and minor version.
a61af66fc99e Initial load
duke
parents:
diff changeset
13405 The functions, events, and capabilities in this specification
a61af66fc99e Initial load
duke
parents:
diff changeset
13406 indicate a "Since" value which is the major and minor version in
a61af66fc99e Initial load
duke
parents:
diff changeset
13407 which it was introduced.
a61af66fc99e Initial load
duke
parents:
diff changeset
13408 The version of the specification implemented by the VM can
a61af66fc99e Initial load
duke
parents:
diff changeset
13409 be retrieved at runtime with the <functionlink id="GetVersionNumber"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13410 function.
a61af66fc99e Initial load
duke
parents:
diff changeset
13411 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13412 <change date="14 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13413 Converted to XML document.
a61af66fc99e Initial load
duke
parents:
diff changeset
13414 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13415 <change date="14 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13416 Elided heap dump functions (for now) since what was there
a61af66fc99e Initial load
duke
parents:
diff changeset
13417 was wrong.
a61af66fc99e Initial load
duke
parents:
diff changeset
13418 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13419 <change date="18 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13420 Added detail throughout.
a61af66fc99e Initial load
duke
parents:
diff changeset
13421 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13422 <change date="18 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13423 Changed JVMTI_THREAD_STATUS_RUNNING to JVMTI_THREAD_STATUS_RUNNABLE.
a61af66fc99e Initial load
duke
parents:
diff changeset
13424 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13425 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13426 Added AsyncGetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13427 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13428 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13429 Added jframeID return to GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13430 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13431 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13432 Elided GetCurrentFrame and GetCallingFrame functions (for now) since what was there
a61af66fc99e Initial load
duke
parents:
diff changeset
13433 since they are redundant with GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13434 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13435 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13436 Elided ClearAllBreakpoints since it has always been redundant.
a61af66fc99e Initial load
duke
parents:
diff changeset
13437 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13438 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13439 Added GetSystemProperties.
a61af66fc99e Initial load
duke
parents:
diff changeset
13440 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13441 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13442 Changed the thread local storage functions to use jthread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13443 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13444 <change date="20 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13445 Added GetJLocationFormat.
a61af66fc99e Initial load
duke
parents:
diff changeset
13446 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13447 <change date="22 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13448 Added events and introductory text.
a61af66fc99e Initial load
duke
parents:
diff changeset
13449 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13450 <change date="22 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13451 Cross reference type and constant definitions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13452 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13453 <change date="24 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13454 Added DTD.
a61af66fc99e Initial load
duke
parents:
diff changeset
13455 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13456 <change date="24 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13457 Added capabilities function section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13458 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13459 <change date="29 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13460 Assign capabilities to each function and event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13461 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13462 <change date="29 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13463 Add <internallink id="jniIntercept">JNI interception functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13464 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13465 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13466 Auto generate SetEventNotificationMode capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13467 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13468 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13469 Add <eventlink id="VMObjectAlloc"></eventlink> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13470 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13471 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13472 Add <eventlink id="DynamicCodeGenerated"></eventlink> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13473 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13474 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13475 Add const to declarations.
a61af66fc99e Initial load
duke
parents:
diff changeset
13476 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13477 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13478 Change method exit and frame pop to send on exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
13479 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13480 <change date="1 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13481 Add ForceGarbageCollection.
a61af66fc99e Initial load
duke
parents:
diff changeset
13482 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13483 <change date="2 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13484 Redo Xrun section; clarify GetStackTrace and add example;
a61af66fc99e Initial load
duke
parents:
diff changeset
13485 Fix width problems; use "agent" consistently.
a61af66fc99e Initial load
duke
parents:
diff changeset
13486 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13487 <change date="8 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13488 Remove previous start-up intro.
a61af66fc99e Initial load
duke
parents:
diff changeset
13489 Add <internallink id="environments"><jvmti/> Environments</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13490 section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13491 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13492 <change date="8 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13493 Add <functionlink id="DisposeEnvironment"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13494 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13495 <change date="9 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13496 Numerous minor updates.
a61af66fc99e Initial load
duke
parents:
diff changeset
13497 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13498 <change date="15 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13499 Add heap profiling functions added:
a61af66fc99e Initial load
duke
parents:
diff changeset
13500 get/set annotation, iterate live objects/heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
13501 Add heap profiling functions place holder added:
a61af66fc99e Initial load
duke
parents:
diff changeset
13502 heap roots.
a61af66fc99e Initial load
duke
parents:
diff changeset
13503 Heap profiling event added: object free.
a61af66fc99e Initial load
duke
parents:
diff changeset
13504 Heap profiling event redesigned: vm object allocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13505 Heap profiling event placeholders added: garbage collection start/finish.
a61af66fc99e Initial load
duke
parents:
diff changeset
13506 Native method bind event added.
a61af66fc99e Initial load
duke
parents:
diff changeset
13507 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13508 <change date="19 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13509 Revamp suspend/resume functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13510 Add origin information with jvmdi tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
13511 Misc fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13512 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13513 <change date="24 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13514 Add semantics to types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13515 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13516 <change date="27 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13517 Add local reference section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13518 Autogenerate parameter descriptions from types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13519 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13520 <change date="28 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13521 Document that RunAgentThread sends threadStart.
a61af66fc99e Initial load
duke
parents:
diff changeset
13522 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13523 <change date="29 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13524 Remove redundant local ref and dealloc warning.
a61af66fc99e Initial load
duke
parents:
diff changeset
13525 Convert GetRawMonitorName to allocated buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13526 Add GenerateEvents.
a61af66fc99e Initial load
duke
parents:
diff changeset
13527 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13528 <change date="30 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13529 Make raw monitors a type and rename to "jrawMonitorID".
a61af66fc99e Initial load
duke
parents:
diff changeset
13530 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13531 <change date="1 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13532 Include origin information.
a61af66fc99e Initial load
duke
parents:
diff changeset
13533 Clean-up JVMDI issue references.
a61af66fc99e Initial load
duke
parents:
diff changeset
13534 Remove Deallocate warnings which are now automatically generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
13535 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13536 <change date="2 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13537 Fix representation issues for jthread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13538 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13539 <change date="3 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13540 Make capabilities buffered out to 64 bits - and do it automatically.
a61af66fc99e Initial load
duke
parents:
diff changeset
13541 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13542 <change date="4 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13543 Make constants which are enumeration into enum types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13544 Parameters now of enum type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13545 Clean-up and index type section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13546 Replace remaining datadef entities with callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
13547 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13548 <change date="7 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13549 Correct GenerateEvents description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13550 More internal semantics work.
a61af66fc99e Initial load
duke
parents:
diff changeset
13551 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13552 <change date="9 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13553 Replace previous GetSystemProperties with two functions
a61af66fc99e Initial load
duke
parents:
diff changeset
13554 which use allocated information instead fixed.
a61af66fc99e Initial load
duke
parents:
diff changeset
13555 Add SetSystemProperty.
a61af66fc99e Initial load
duke
parents:
diff changeset
13556 More internal semantics work.
a61af66fc99e Initial load
duke
parents:
diff changeset
13557 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13558 <change date="12 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13559 Add varargs to end of SetEventNotificationMode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13560 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13561 <change date="20 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13562 Finish fixing spec to reflect that alloc sizes are jlong.
a61af66fc99e Initial load
duke
parents:
diff changeset
13563 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13564 <change date="22 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13565 Allow NULL as RunAgentThread arg.
a61af66fc99e Initial load
duke
parents:
diff changeset
13566 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13567 <change date="22 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13568 Fixed names to standardized naming convention
a61af66fc99e Initial load
duke
parents:
diff changeset
13569 Removed AsyncGetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13570 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13571 <change date="29 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13572 Since we are using jthread, removed GetThread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13573 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13574 <change date="31 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13575 Change GetFieldName to allow NULLs like GetMethodName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13576 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13577 <change date="29 Feb 2003" version="v40">
a61af66fc99e Initial load
duke
parents:
diff changeset
13578 Rewrite the introductory text, adding sections on
a61af66fc99e Initial load
duke
parents:
diff changeset
13579 start-up, environments and bytecode instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13580 Change the command line arguments per EG discussions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13581 Add an introduction to the capabilities section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13582 Add the extension mechanism category and functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13583 Mark for deletion, but clarified anyhow, SuspendAllThreads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13584 Rename IterateOverLiveObjects to IterateOverReachableObjects and
a61af66fc99e Initial load
duke
parents:
diff changeset
13585 change the text accordingly.
a61af66fc99e Initial load
duke
parents:
diff changeset
13586 Clarify IterateOverHeap.
a61af66fc99e Initial load
duke
parents:
diff changeset
13587 Clarify CompiledMethodLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13588 Discuss prerequisite state for Calling Functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13589 Clarify SetAllocationHooks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13590 Added issues ("To be resolved:") through-out.
a61af66fc99e Initial load
duke
parents:
diff changeset
13591 And so on...
a61af66fc99e Initial load
duke
parents:
diff changeset
13592 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13593 <change date="6 Mar 2003" version="v41">
a61af66fc99e Initial load
duke
parents:
diff changeset
13594 Remove struct from the call to GetOwnedMonitorInfo.
a61af66fc99e Initial load
duke
parents:
diff changeset
13595 Automatically generate most error documentation, remove
a61af66fc99e Initial load
duke
parents:
diff changeset
13596 (rather broken) hand written error doc.
a61af66fc99e Initial load
duke
parents:
diff changeset
13597 Better describe capability use (empty initial set).
a61af66fc99e Initial load
duke
parents:
diff changeset
13598 Add min value to jint params.
a61af66fc99e Initial load
duke
parents:
diff changeset
13599 Remove the capability can_access_thread_local_storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
13600 Rename error JVMTI_ERROR_NOT_IMPLEMENTED to JVMTI_ERROR_MUST_POSSESS_CAPABILITY;
a61af66fc99e Initial load
duke
parents:
diff changeset
13601 same for *NOT_IMPLEMENTED.
a61af66fc99e Initial load
duke
parents:
diff changeset
13602 Description fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13603 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13604 <change date="8 Mar 2003" version="v42">
a61af66fc99e Initial load
duke
parents:
diff changeset
13605 Rename GetClassSignature to GetClassName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13606 Rename IterateOverClassObjects to IterateOverInstancesOfClass.
a61af66fc99e Initial load
duke
parents:
diff changeset
13607 Remove GetMaxStack (operand stack isn't used in <jvmti/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
13608 Description fixes: define launch-time, remove native frame pop
a61af66fc99e Initial load
duke
parents:
diff changeset
13609 from PopFrame, and assorted clarifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
13610 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13611 <change date="8 Mar 2003" version="v43">
a61af66fc99e Initial load
duke
parents:
diff changeset
13612 Fix minor editing problem.
a61af66fc99e Initial load
duke
parents:
diff changeset
13613 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13614 <change date="10 Mar 2003" version="v44">
a61af66fc99e Initial load
duke
parents:
diff changeset
13615 Add phase information.
a61af66fc99e Initial load
duke
parents:
diff changeset
13616 Remap (compact) event numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13617 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13618 <change date="11 Mar 2003" version="v45">
a61af66fc99e Initial load
duke
parents:
diff changeset
13619 More phase information - allow "any".
a61af66fc99e Initial load
duke
parents:
diff changeset
13620 Elide raw monitor queries and events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13621 Minor description fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13622 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13623 <change date="12 Mar 2003" version="v46">
a61af66fc99e Initial load
duke
parents:
diff changeset
13624 Add GetPhase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13625 Use "phase" through document.
a61af66fc99e Initial load
duke
parents:
diff changeset
13626 Elide GetRawMonitorName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13627 Elide GetObjectMonitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13628 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13629 <change date="12 Mar 2003" version="v47">
a61af66fc99e Initial load
duke
parents:
diff changeset
13630 Fixes from link, XML, and spell checking.
a61af66fc99e Initial load
duke
parents:
diff changeset
13631 Auto-generate the callback structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
13632 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13633 <change date="13 Mar 2003" version="v48">
a61af66fc99e Initial load
duke
parents:
diff changeset
13634 One character XML fix.
a61af66fc99e Initial load
duke
parents:
diff changeset
13635 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13636 <change date="13 Mar 2003" version="v49">
a61af66fc99e Initial load
duke
parents:
diff changeset
13637 Change function parameter names to be consistent with
a61af66fc99e Initial load
duke
parents:
diff changeset
13638 event parameters (fooBarBaz becomes foo_bar_baz).
a61af66fc99e Initial load
duke
parents:
diff changeset
13639 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13640 <change date="14 Mar 2003" version="v50">
a61af66fc99e Initial load
duke
parents:
diff changeset
13641 Fix broken link. Fix thread markers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13642 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13643 <change date="14 Mar 2003" version="v51">
a61af66fc99e Initial load
duke
parents:
diff changeset
13644 Change constants so they are under 128 to workaround
a61af66fc99e Initial load
duke
parents:
diff changeset
13645 compiler problems.
a61af66fc99e Initial load
duke
parents:
diff changeset
13646 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13647 <change date="23 Mar 2003" version="v52">
a61af66fc99e Initial load
duke
parents:
diff changeset
13648 Overhaul capabilities. Separate GetStackTrace into
a61af66fc99e Initial load
duke
parents:
diff changeset
13649 GetStackTrace and GetStackFrames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13650 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13651 <change date="8 Apr 2003" version="v54">
a61af66fc99e Initial load
duke
parents:
diff changeset
13652 Use depth instead of jframeID to reference frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13653 Remove the now irrelevant GetCurrentFrame, GetCallerFrame and GetStackFrames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13654 Remove frame arg from events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13655 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13656 <change date="9 Apr 2003" version="v55">
a61af66fc99e Initial load
duke
parents:
diff changeset
13657 Remove GetObjectWithAnnotation since tests show bufferred approach more efficient.
a61af66fc99e Initial load
duke
parents:
diff changeset
13658 Add missing annotation_count to GetObjectsWithAnnotations
a61af66fc99e Initial load
duke
parents:
diff changeset
13659 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13660 <change date="10 Apr 2003" version="v56">
a61af66fc99e Initial load
duke
parents:
diff changeset
13661 Remove confusing parenthetical statement in GetObjectsWithAnnotations
a61af66fc99e Initial load
duke
parents:
diff changeset
13662 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13663 <change date="13 Apr 2003" version="v58">
a61af66fc99e Initial load
duke
parents:
diff changeset
13664 Replace jclass/jmethodID representation of method with simply jmethodID;
a61af66fc99e Initial load
duke
parents:
diff changeset
13665 Pass JvmtiEnv* as first arg of every event; remove JNIEnv* where inappropriate.
a61af66fc99e Initial load
duke
parents:
diff changeset
13666 Replace can_access_frames with can_access_local_variables; remove from purely stack access.
a61af66fc99e Initial load
duke
parents:
diff changeset
13667 Use can_get_synthetic_attribute; fix description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13668 Clarify that zero length arrays must be deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
13669 Clarify RelinquishCapabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13670 Generalize JVMTI_ERROR_VM_DEAD to JVMTI_ERROR_WRONG_PHASE.
a61af66fc99e Initial load
duke
parents:
diff changeset
13671 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13672 <change date="27 Apr 2003" version="v59">
a61af66fc99e Initial load
duke
parents:
diff changeset
13673 Remove lingering indirect references to OBSOLETE_METHOD_ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
13674 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13675 <change date="4 May 2003" version="v60">
a61af66fc99e Initial load
duke
parents:
diff changeset
13676 Allow DestroyRawMonitor during OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13677 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13678 <change date="7 May 2003" version="v61">
a61af66fc99e Initial load
duke
parents:
diff changeset
13679 Added not monitor owner error return to DestroyRawMonitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13680 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13681 <change date="13 May 2003" version="v62">
a61af66fc99e Initial load
duke
parents:
diff changeset
13682 Clarify semantics of raw monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13683 Change flags on <code>GetThreadStatus</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13684 <code>GetClassLoader</code> return NULL for the bootstrap class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
13685 Add <code>GetClassName</code> issue.
a61af66fc99e Initial load
duke
parents:
diff changeset
13686 Define local variable signature.
a61af66fc99e Initial load
duke
parents:
diff changeset
13687 Disallow zero in annotations array of <code>GetObjectsWithAnnotations</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13688 Remove over specification in <code>GetObjectsWithAnnotations</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13689 Elide <code>SetAllocationHooks</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13690 Elide <code>SuspendAllThreads</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13691 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13692 <change date="14 May 2003" version="v63">
a61af66fc99e Initial load
duke
parents:
diff changeset
13693 Define the data type <code>jvmtiEventCallbacks</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13694 Zero length allocations return NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13695 Keep SetAllocationHooks in JVMDI, but remove from <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13696 Add JVMTI_THREAD_STATUS_FLAG_INTERRUPTED.
a61af66fc99e Initial load
duke
parents:
diff changeset
13697 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13698 <change date="15 May 2003" version="v64">
a61af66fc99e Initial load
duke
parents:
diff changeset
13699 Better wording, per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13700 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13701 <change date="15 May 2003" version="v65">
a61af66fc99e Initial load
duke
parents:
diff changeset
13702 First Alpha.
a61af66fc99e Initial load
duke
parents:
diff changeset
13703 Make jmethodID and jfieldID unique, jclass not used.
a61af66fc99e Initial load
duke
parents:
diff changeset
13704 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13705 <change date="27 May 2003" version="v66">
a61af66fc99e Initial load
duke
parents:
diff changeset
13706 Fix minor XSLT errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13707 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13708 <change date="13 June 2003" version="v67">
a61af66fc99e Initial load
duke
parents:
diff changeset
13709 Undo making jfieldID unique (jmethodID still is).
a61af66fc99e Initial load
duke
parents:
diff changeset
13710 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13711 <change date="17 June 2003" version="v68">
a61af66fc99e Initial load
duke
parents:
diff changeset
13712 Changes per June 11th Expert Group meeting --
a61af66fc99e Initial load
duke
parents:
diff changeset
13713 Overhaul Heap functionality: single callback,
a61af66fc99e Initial load
duke
parents:
diff changeset
13714 remove GetHeapRoots, add reachable iterators,
a61af66fc99e Initial load
duke
parents:
diff changeset
13715 and rename "annotation" to "tag".
a61af66fc99e Initial load
duke
parents:
diff changeset
13716 NULL thread parameter on most functions is current
a61af66fc99e Initial load
duke
parents:
diff changeset
13717 thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13718 Add timers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13719 Remove ForceExit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13720 Add GetEnvironmentLocalStorage.
a61af66fc99e Initial load
duke
parents:
diff changeset
13721 Add verbose flag and event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13722 Add AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13723 Update ClassFileLoadHook.
a61af66fc99e Initial load
duke
parents:
diff changeset
13724 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13725 <change date="18 June 2003" version="v69">
a61af66fc99e Initial load
duke
parents:
diff changeset
13726 Clean up issues sections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13727 Rename GetClassName back to GetClassSignature and
a61af66fc99e Initial load
duke
parents:
diff changeset
13728 fix description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13729 Add generic signature to GetClassSignature,
a61af66fc99e Initial load
duke
parents:
diff changeset
13730 GetFieldSignature, GetMethodSignature, and
a61af66fc99e Initial load
duke
parents:
diff changeset
13731 GetLocalVariableTable.
a61af66fc99e Initial load
duke
parents:
diff changeset
13732 Elide EstimateCostOfCapabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13733 Clarify that the system property functions operate
a61af66fc99e Initial load
duke
parents:
diff changeset
13734 on the VM view of system properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
13735 Clarify Agent_OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13736 Remove "const" from JNIEnv* in events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13737 Add metadata accessors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13738 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13739 <change date="18 June 2003" version="v70">
a61af66fc99e Initial load
duke
parents:
diff changeset
13740 Add start_depth to GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13741 Move system properties to a new category.
a61af66fc99e Initial load
duke
parents:
diff changeset
13742 Add GetObjectSize.
a61af66fc99e Initial load
duke
parents:
diff changeset
13743 Remove "X" from command line flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
13744 XML, HTML, and spell check corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13745 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13746 <change date="19 June 2003" version="v71">
a61af66fc99e Initial load
duke
parents:
diff changeset
13747 Fix JVMTI_HEAP_ROOT_THREAD to be 6.
a61af66fc99e Initial load
duke
parents:
diff changeset
13748 Make each synopsis match the function name.
a61af66fc99e Initial load
duke
parents:
diff changeset
13749 Fix unclear wording.
a61af66fc99e Initial load
duke
parents:
diff changeset
13750 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13751 <change date="26 June 2003" version="v72">
a61af66fc99e Initial load
duke
parents:
diff changeset
13752 SetThreadLocalStorage and SetEnvironmentLocalStorage should allow value
a61af66fc99e Initial load
duke
parents:
diff changeset
13753 to be set to NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13754 NotifyFramePop, GetFrameLocationm and all the local variable operations
a61af66fc99e Initial load
duke
parents:
diff changeset
13755 needed to have their wording about frames fixed.
a61af66fc99e Initial load
duke
parents:
diff changeset
13756 Grammar and clarity need to be fixed throughout.
a61af66fc99e Initial load
duke
parents:
diff changeset
13757 Capitalization and puntuation need to be consistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13758 Need micro version number and masks for accessing major, minor, and micro.
a61af66fc99e Initial load
duke
parents:
diff changeset
13759 The error code lists should indicate which must be returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
13760 an implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13761 The command line properties should be visible in the properties functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13762 Disallow popping from the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13763 Allow implementations to return opaque frame error when they cannot pop.
a61af66fc99e Initial load
duke
parents:
diff changeset
13764 The NativeMethodBind event should be sent during any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13765 The DynamicCodeGenerated event should be sent during any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13766 The following functions should be allowed to operate before VMInit:
a61af66fc99e Initial load
duke
parents:
diff changeset
13767 Set/GetEnvironmentLocalStorage
a61af66fc99e Initial load
duke
parents:
diff changeset
13768 GetMethodDeclaringClass
a61af66fc99e Initial load
duke
parents:
diff changeset
13769 GetClassSignature
a61af66fc99e Initial load
duke
parents:
diff changeset
13770 GetClassModifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
13771 IsInterface
a61af66fc99e Initial load
duke
parents:
diff changeset
13772 IsArrayClass
a61af66fc99e Initial load
duke
parents:
diff changeset
13773 GetMethodName
a61af66fc99e Initial load
duke
parents:
diff changeset
13774 GetMethodModifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
13775 GetMaxLocals
a61af66fc99e Initial load
duke
parents:
diff changeset
13776 GetArgumentsSize
a61af66fc99e Initial load
duke
parents:
diff changeset
13777 GetLineNumberTable
a61af66fc99e Initial load
duke
parents:
diff changeset
13778 GetMethodLocation
a61af66fc99e Initial load
duke
parents:
diff changeset
13779 IsMethodNative
a61af66fc99e Initial load
duke
parents:
diff changeset
13780 IsMethodSynthetic.
a61af66fc99e Initial load
duke
parents:
diff changeset
13781 Other changes (to XSL):
a61af66fc99e Initial load
duke
parents:
diff changeset
13782 Argument description should show asterisk after not before pointers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13783 NotifyFramePop, GetFrameLocationm and all the local variable operations
a61af66fc99e Initial load
duke
parents:
diff changeset
13784 should hsve the NO_MORE_FRAMES error added.
a61af66fc99e Initial load
duke
parents:
diff changeset
13785 Not alive threads should have a different error return than invalid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13786 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13787 <change date="7 July 2003" version="v73">
a61af66fc99e Initial load
duke
parents:
diff changeset
13788 VerboseOutput event was missing message parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13789 Minor fix-ups.
a61af66fc99e Initial load
duke
parents:
diff changeset
13790 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13791 <change date="14 July 2003" version="v74">
a61af66fc99e Initial load
duke
parents:
diff changeset
13792 Technical Publications Department corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13793 Allow thread and environment local storage to be set to NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13794 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13795 <change date="23 July 2003" version="v75">
a61af66fc99e Initial load
duke
parents:
diff changeset
13796 Use new Agent_OnLoad rather than overloaded JVM_OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13797 Add JNICALL to callbacks (XSL).
a61af66fc99e Initial load
duke
parents:
diff changeset
13798 Document JNICALL requirement for both events and callbacks (XSL).
a61af66fc99e Initial load
duke
parents:
diff changeset
13799 Restrict RedefineClasses to methods and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13800 Elide the VerboseOutput event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13801 VMObjectAlloc: restrict when event is sent and remove method parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13802 Finish loose ends from Tech Pubs edit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13803 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13804 <change date="24 July 2003" version="v76">
a61af66fc99e Initial load
duke
parents:
diff changeset
13805 Change ClassFileLoadHook event to send the class instead of a boolean of redefine.
a61af66fc99e Initial load
duke
parents:
diff changeset
13806 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13807 <change date="24 July 2003" version="v77">
a61af66fc99e Initial load
duke
parents:
diff changeset
13808 XML fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13809 Minor text clarifications and corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13810 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13811 <change date="24 July 2003" version="v78">
a61af66fc99e Initial load
duke
parents:
diff changeset
13812 Remove GetExceptionHandlerTable and GetThrownExceptions from <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13813 Clarify that stack frames are JVM Spec frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13814 Split can_get_source_info into can_get_source_file_name, can_get_line_numbers,
a61af66fc99e Initial load
duke
parents:
diff changeset
13815 and can_get_source_debug_extension.
a61af66fc99e Initial load
duke
parents:
diff changeset
13816 PopFrame cannot have a native calling method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13817 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
13818 (see <vmspec chapter="4.4"/>).
0
a61af66fc99e Initial load
duke
parents:
diff changeset
13819 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13820 <change date="24 July 2003" version="v79">
a61af66fc99e Initial load
duke
parents:
diff changeset
13821 XML and text fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13822 Move stack frame description into Stack Frame category.
a61af66fc99e Initial load
duke
parents:
diff changeset
13823 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13824 <change date="26 July 2003" version="v80">
a61af66fc99e Initial load
duke
parents:
diff changeset
13825 Allow NULL (means bootstrap loader) for GetClassloaderClasses.
a61af66fc99e Initial load
duke
parents:
diff changeset
13826 Add new heap reference kinds for references from classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13827 Add timer information struct and query functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13828 Add AvailableProcessors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13829 Rename GetOtherThreadCpuTime to GetThreadCpuTime.
a61af66fc99e Initial load
duke
parents:
diff changeset
13830 Explicitly add JVMTI_ERROR_INVALID_THREAD and JVMTI_ERROR_THREAD_NOT_ALIVE
a61af66fc99e Initial load
duke
parents:
diff changeset
13831 to SetEventNotification mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13832 Add initial thread to the VM_INIT event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13833 Remove platform assumptions from AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13834 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13835 <change date="26 July 2003" version="v81">
a61af66fc99e Initial load
duke
parents:
diff changeset
13836 Grammar and clarity changes per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13837 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13838 <change date="27 July 2003" version="v82">
a61af66fc99e Initial load
duke
parents:
diff changeset
13839 More grammar and clarity changes per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13840 Add Agent_OnUnload.
a61af66fc99e Initial load
duke
parents:
diff changeset
13841 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13842 <change date="28 July 2003" version="v83">
a61af66fc99e Initial load
duke
parents:
diff changeset
13843 Change return type of Agent_OnUnload to void.
a61af66fc99e Initial load
duke
parents:
diff changeset
13844 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13845 <change date="28 July 2003" version="v84">
a61af66fc99e Initial load
duke
parents:
diff changeset
13846 Rename JVMTI_REFERENCE_ARRAY to JVMTI_REFERENCE_ARRAY_ELEMENT.
a61af66fc99e Initial load
duke
parents:
diff changeset
13847 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13848 <change date="28 July 2003" version="v85">
a61af66fc99e Initial load
duke
parents:
diff changeset
13849 Steal java.lang.Runtime.availableProcessors() wording for
a61af66fc99e Initial load
duke
parents:
diff changeset
13850 AvailableProcessors().
a61af66fc99e Initial load
duke
parents:
diff changeset
13851 Guarantee that zero will never be an event ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
13852 Remove some issues which are no longer issues.
a61af66fc99e Initial load
duke
parents:
diff changeset
13853 Per review, rename and more completely document the timer
a61af66fc99e Initial load
duke
parents:
diff changeset
13854 information functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13855 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13856 <change date="29 July 2003" version="v86">
a61af66fc99e Initial load
duke
parents:
diff changeset
13857 Non-spec visible change to XML controlled implementation:
a61af66fc99e Initial load
duke
parents:
diff changeset
13858 SetThreadLocalStorage must run in VM mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13859 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13860 <change date="5 August 2003" version="0.1.87">
a61af66fc99e Initial load
duke
parents:
diff changeset
13861 Add GetErrorName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13862 Add varargs warning to jvmtiExtensionEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13863 Remove "const" on the jvmtiEnv* of jvmtiExtensionEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13864 Remove unused can_get_exception_info capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
13865 Pass jvmtiEnv* and JNIEnv* to the jvmtiStartFunction.
a61af66fc99e Initial load
duke
parents:
diff changeset
13866 Fix jvmtiExtensionFunctionInfo.func declared type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13867 Extension function returns error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
13868 Use new version numbering.
a61af66fc99e Initial load
duke
parents:
diff changeset
13869 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13870 <change date="5 August 2003" version="0.2.88">
a61af66fc99e Initial load
duke
parents:
diff changeset
13871 Remove the ClassUnload event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13872 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13873 <change date="8 August 2003" version="0.2.89">
a61af66fc99e Initial load
duke
parents:
diff changeset
13874 Heap reference iterator callbacks return an enum that
a61af66fc99e Initial load
duke
parents:
diff changeset
13875 allows outgoing object references to be ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
13876 Allow JNIEnv as a param type to extension events/functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13877 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13878 <change date="15 August 2003" version="0.2.90">
a61af66fc99e Initial load
duke
parents:
diff changeset
13879 Fix a typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
13880 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13881 <change date="2 September 2003" version="0.2.91">
a61af66fc99e Initial load
duke
parents:
diff changeset
13882 Remove all metadata functions: GetClassMetadata,
a61af66fc99e Initial load
duke
parents:
diff changeset
13883 GetFieldMetadata, and GetMethodMetadata.
a61af66fc99e Initial load
duke
parents:
diff changeset
13884 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13885 <change date="1 October 2003" version="0.2.92">
a61af66fc99e Initial load
duke
parents:
diff changeset
13886 Mark the functions Allocate. Deallocate, RawMonitor*,
a61af66fc99e Initial load
duke
parents:
diff changeset
13887 SetEnvironmentLocalStorage, and GetEnvironmentLocalStorage
a61af66fc99e Initial load
duke
parents:
diff changeset
13888 as safe for use in heap callbacks and GC events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13889 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13890 <change date="24 November 2003" version="0.2.93">
a61af66fc99e Initial load
duke
parents:
diff changeset
13891 Add pass through opaque user data pointer to heap iterate
a61af66fc99e Initial load
duke
parents:
diff changeset
13892 functions and callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13893 In the CompiledMethodUnload event, send the code address.
a61af66fc99e Initial load
duke
parents:
diff changeset
13894 Add GarbageCollectionOccurred event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13895 Add constant pool reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
13896 Mark the functions CreateRawMonitor and DestroyRawMonitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13897 as safe for use in heap callbacks and GC events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13898 Clarify: VMDeath, GetCurrentThreadCpuTimerInfo,
a61af66fc99e Initial load
duke
parents:
diff changeset
13899 GetThreadCpuTimerInfo, IterateOverReachableObjects,
a61af66fc99e Initial load
duke
parents:
diff changeset
13900 IterateOverObjectsReachableFromObject, GetTime and
a61af66fc99e Initial load
duke
parents:
diff changeset
13901 JVMTI_ERROR_NULL_POINTER.
a61af66fc99e Initial load
duke
parents:
diff changeset
13902 Add missing errors to: GenerateEvents and
a61af66fc99e Initial load
duke
parents:
diff changeset
13903 AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13904 Fix description of ClassFileLoadHook name parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13905 In heap callbacks and GC/ObjectFree events, specify
a61af66fc99e Initial load
duke
parents:
diff changeset
13906 that only explicitly allowed functions can be called.
a61af66fc99e Initial load
duke
parents:
diff changeset
13907 Allow GetCurrentThreadCpuTimerInfo, GetCurrentThreadCpuTime,
a61af66fc99e Initial load
duke
parents:
diff changeset
13908 GetTimerInfo, and GetTime during callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
13909 Allow calling SetTag/GetTag during the onload phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13910 SetEventNotificationMode, add: error attempted inappropriate
a61af66fc99e Initial load
duke
parents:
diff changeset
13911 thread level control.
a61af66fc99e Initial load
duke
parents:
diff changeset
13912 Remove jvmtiExceptionHandlerEntry.
a61af66fc99e Initial load
duke
parents:
diff changeset
13913 Fix handling of native methods on the stack --
a61af66fc99e Initial load
duke
parents:
diff changeset
13914 location_ptr param of GetFrameLocation, remove
a61af66fc99e Initial load
duke
parents:
diff changeset
13915 JVMTI_ERROR_OPAQUE_FRAME from GetFrameLocation,
a61af66fc99e Initial load
duke
parents:
diff changeset
13916 jvmtiFrameInfo.location, and jlocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13917 Remove typo (from JVMPI) implying that the MonitorWaited
a61af66fc99e Initial load
duke
parents:
diff changeset
13918 event is sent on sleep.
a61af66fc99e Initial load
duke
parents:
diff changeset
13919 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13920 <change date="25 November 2003" version="0.2.94">
a61af66fc99e Initial load
duke
parents:
diff changeset
13921 Clarifications and typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
13922 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13923 <change date="3 December 2003" version="0.2.95">
a61af66fc99e Initial load
duke
parents:
diff changeset
13924 Allow NULL user_data in heap iterators.
a61af66fc99e Initial load
duke
parents:
diff changeset
13925 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13926 <change date="28 January 2004" version="0.2.97">
a61af66fc99e Initial load
duke
parents:
diff changeset
13927 Add GetThreadState, deprecate GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
13928 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13929 <change date="29 January 2004" version="0.2.98">
a61af66fc99e Initial load
duke
parents:
diff changeset
13930 INVALID_SLOT and TYPE_MISMATCH errors should be optional.
a61af66fc99e Initial load
duke
parents:
diff changeset
13931 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13932 <change date="12 February 2004" version="0.2.102">
a61af66fc99e Initial load
duke
parents:
diff changeset
13933 Remove MonitorContendedExit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13934 Added JNIEnv parameter to VMObjectAlloc.
a61af66fc99e Initial load
duke
parents:
diff changeset
13935 Clarified definition of class_tag and referrer_index
a61af66fc99e Initial load
duke
parents:
diff changeset
13936 parameters to heap callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13937 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13938 <change date="16 Febuary 2004" version="0.2.103">
a61af66fc99e Initial load
duke
parents:
diff changeset
13939 Document JAVA_TOOL_OPTIONS.
a61af66fc99e Initial load
duke
parents:
diff changeset
13940 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13941 <change date="17 Febuary 2004" version="0.2.105">
a61af66fc99e Initial load
duke
parents:
diff changeset
13942 Divide start phase into primordial and start.
a61af66fc99e Initial load
duke
parents:
diff changeset
13943 Add VMStart event
a61af66fc99e Initial load
duke
parents:
diff changeset
13944 Change phase associations of functions and events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13945 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13946 <change date="18 Febuary 2004" version="0.3.6">
a61af66fc99e Initial load
duke
parents:
diff changeset
13947 Elide deprecated GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
13948 Bump minor version, subtract 100 from micro version
a61af66fc99e Initial load
duke
parents:
diff changeset
13949 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13950 <change date="18 Febuary 2004" version="0.3.7">
a61af66fc99e Initial load
duke
parents:
diff changeset
13951 Document that timer nanosecond values are unsigned.
a61af66fc99e Initial load
duke
parents:
diff changeset
13952 Clarify text having to do with native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
13953 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13954 <change date="19 Febuary 2004" version="0.3.8">
a61af66fc99e Initial load
duke
parents:
diff changeset
13955 Fix typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
13956 Remove elided deprecated GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
13957 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13958 <change date="23 Febuary 2004" version="0.3.9">
a61af66fc99e Initial load
duke
parents:
diff changeset
13959 Require NotifyFramePop to act on suspended threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13960 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13961 <change date="24 Febuary 2004" version="0.3.10">
a61af66fc99e Initial load
duke
parents:
diff changeset
13962 Add capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
13963 (<internallink id="jvmtiCapabilities.can_redefine_any_class"
a61af66fc99e Initial load
duke
parents:
diff changeset
13964 ><code>can_redefine_any_class</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13965 and
a61af66fc99e Initial load
duke
parents:
diff changeset
13966 <internallink id="jvmtiCapabilities.can_generate_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
13967 ><code>can_generate_all_class_hook_events</code></internallink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
13968 and an error (<errorlink id="JVMTI_ERROR_UNMODIFIABLE_CLASS"></errorlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
13969 which allow some classes to be unmodifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
13970 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13971 <change date="28 Febuary 2004" version="0.3.11">
a61af66fc99e Initial load
duke
parents:
diff changeset
13972 Add JVMTI_ERROR_MUST_POSSESS_CAPABILITY to SetEventNotificationMode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13973 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13974 <change date="8 March 2004" version="0.3.12">
a61af66fc99e Initial load
duke
parents:
diff changeset
13975 Clarified CompiledMethodUnload so that it is clear the event
a61af66fc99e Initial load
duke
parents:
diff changeset
13976 may be posted after the class has been unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
13977 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13978 <change date="5 March 2004" version="0.3.13">
a61af66fc99e Initial load
duke
parents:
diff changeset
13979 Change the size parameter of VMObjectAlloc to jlong to match GetObjectSize.
a61af66fc99e Initial load
duke
parents:
diff changeset
13980 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13981 <change date="13 March 2004" version="0.3.14">
a61af66fc99e Initial load
duke
parents:
diff changeset
13982 Added guideline for the use of the JNI FindClass function in event
a61af66fc99e Initial load
duke
parents:
diff changeset
13983 callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13984 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13985 <change date="15 March 2004" version="0.3.15">
a61af66fc99e Initial load
duke
parents:
diff changeset
13986 Add GetAllStackTraces and GetThreadListStackTraces.
a61af66fc99e Initial load
duke
parents:
diff changeset
13987 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13988 <change date="19 March 2004" version="0.3.16">
a61af66fc99e Initial load
duke
parents:
diff changeset
13989 ClassLoad and ClassPrepare events can be posted during start phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13990 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13991 <change date="25 March 2004" version="0.3.17">
a61af66fc99e Initial load
duke
parents:
diff changeset
13992 Add JVMTI_ERROR_NATIVE_METHOD to GetLineNumberTable, GetLocalVariableTable,
a61af66fc99e Initial load
duke
parents:
diff changeset
13993 GetMaxLocals, GetArgumentsSize, GetMethodLocation, GetBytecodes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13994 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13995 <change date="29 March 2004" version="0.3.18">
a61af66fc99e Initial load
duke
parents:
diff changeset
13996 Return the timer kind in the timer information structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
13997 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13998 <change date="31 March 2004" version="0.3.19">
a61af66fc99e Initial load
duke
parents:
diff changeset
13999 Spec clarifications:
a61af66fc99e Initial load
duke
parents:
diff changeset
14000 JVMTI_THREAD_STATE_IN_NATIVE might not include JNI or <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
14001 ForceGarbageCollection does not run finalizers.
a61af66fc99e Initial load
duke
parents:
diff changeset
14002 The context of the specification is the Java platform.
a61af66fc99e Initial load
duke
parents:
diff changeset
14003 Warn about early instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14004 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14005 <change date="1 April 2004" version="0.3.20">
a61af66fc99e Initial load
duke
parents:
diff changeset
14006 Refinements to the above clarifications and
a61af66fc99e Initial load
duke
parents:
diff changeset
14007 Clarify that an error returned by Agent_OnLoad terminates the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
14008 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14009 <change date="1 April 2004" version="0.3.21">
a61af66fc99e Initial load
duke
parents:
diff changeset
14010 Array class creation does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14011 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14012 <change date="7 April 2004" version="0.3.22">
a61af66fc99e Initial load
duke
parents:
diff changeset
14013 Align thread state hierarchy more closely with java.lang.Thread.State.
a61af66fc99e Initial load
duke
parents:
diff changeset
14014 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14015 <change date="12 April 2004" version="0.3.23">
a61af66fc99e Initial load
duke
parents:
diff changeset
14016 Clarify the documentation of thread state.
a61af66fc99e Initial load
duke
parents:
diff changeset
14017 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14018 <change date="19 April 2004" version="0.3.24">
a61af66fc99e Initial load
duke
parents:
diff changeset
14019 Remove GarbageCollectionOccurred event -- can be done by agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14020 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14021 <change date="22 April 2004" version="0.3.25">
a61af66fc99e Initial load
duke
parents:
diff changeset
14022 Define "command-line option".
a61af66fc99e Initial load
duke
parents:
diff changeset
14023 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14024 <change date="29 April 2004" version="0.3.26">
a61af66fc99e Initial load
duke
parents:
diff changeset
14025 Describe the intended use of bytecode instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14026 Fix description of extension event first parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
14027 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14028 <change date="30 April 2004" version="0.3.27">
a61af66fc99e Initial load
duke
parents:
diff changeset
14029 Clarification and typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14030 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14031 <change date="18 May 2004" version="0.3.28">
a61af66fc99e Initial load
duke
parents:
diff changeset
14032 Remove DataDumpRequest event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14033 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14034 <change date="18 May 2004" version="0.3.29">
a61af66fc99e Initial load
duke
parents:
diff changeset
14035 Clarify RawMonitorWait with zero timeout.
a61af66fc99e Initial load
duke
parents:
diff changeset
14036 Clarify thread state after RunAgentThread.
a61af66fc99e Initial load
duke
parents:
diff changeset
14037 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14038 <change date="24 May 2004" version="0.3.30">
a61af66fc99e Initial load
duke
parents:
diff changeset
14039 Clean-up: fix bad/old links, etc.
a61af66fc99e Initial load
duke
parents:
diff changeset
14040 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14041 <change date="30 May 2004" version="0.3.31">
a61af66fc99e Initial load
duke
parents:
diff changeset
14042 Clarifications including:
a61af66fc99e Initial load
duke
parents:
diff changeset
14043 All character strings are modified UTF-8.
a61af66fc99e Initial load
duke
parents:
diff changeset
14044 Agent thread visibiity.
a61af66fc99e Initial load
duke
parents:
diff changeset
14045 Meaning of obsolete method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
14046 Thread invoking heap callbacks,
a61af66fc99e Initial load
duke
parents:
diff changeset
14047 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14048 <change date="1 June 2004" version="1.0.32">
a61af66fc99e Initial load
duke
parents:
diff changeset
14049 Bump major.minor version numbers to "1.0".
a61af66fc99e Initial load
duke
parents:
diff changeset
14050 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14051 <change date="2 June 2004" version="1.0.33">
a61af66fc99e Initial load
duke
parents:
diff changeset
14052 Clarify interaction between ForceGarbageCollection
a61af66fc99e Initial load
duke
parents:
diff changeset
14053 and ObjectFree.
a61af66fc99e Initial load
duke
parents:
diff changeset
14054 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14055 <change date="6 June 2004" version="1.0.34">
a61af66fc99e Initial load
duke
parents:
diff changeset
14056 Restrict AddToBootstrapClassLoaderSearch and
a61af66fc99e Initial load
duke
parents:
diff changeset
14057 SetSystemProperty to the OnLoad phase only.
a61af66fc99e Initial load
duke
parents:
diff changeset
14058 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14059 <change date="11 June 2004" version="1.0.35">
a61af66fc99e Initial load
duke
parents:
diff changeset
14060 Fix typo in SetTag.
a61af66fc99e Initial load
duke
parents:
diff changeset
14061 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14062 <change date="18 June 2004" version="1.0.36">
a61af66fc99e Initial load
duke
parents:
diff changeset
14063 Fix trademarks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14064 Add missing parameter in example GetThreadState usage.
a61af66fc99e Initial load
duke
parents:
diff changeset
14065 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14066 <change date="4 August 2004" version="1.0.37">
a61af66fc99e Initial load
duke
parents:
diff changeset
14067 Copyright updates.
a61af66fc99e Initial load
duke
parents:
diff changeset
14068 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14069 <change date="5 November 2004" version="1.0.38">
a61af66fc99e Initial load
duke
parents:
diff changeset
14070 Add missing function table layout.
a61af66fc99e Initial load
duke
parents:
diff changeset
14071 Add missing description of C++ member function format of functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14072 Clarify that name in CFLH can be NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
14073 Released as part of <tm>J2SE</tm> 5.0.
a61af66fc99e Initial load
duke
parents:
diff changeset
14074 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14075 <change date="24 April 2005" version="1.1.47">
a61af66fc99e Initial load
duke
parents:
diff changeset
14076 Bump major.minor version numbers to "1.1".
a61af66fc99e Initial load
duke
parents:
diff changeset
14077 Add ForceEarlyReturn* functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14078 Add GetOwnedMonitorStackDepthInfo function.
a61af66fc99e Initial load
duke
parents:
diff changeset
14079 Add GetCurrentThread function.
a61af66fc99e Initial load
duke
parents:
diff changeset
14080 Add "since" version marker.
a61af66fc99e Initial load
duke
parents:
diff changeset
14081 Add AddToSystemClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
14082 Allow AddToBootstrapClassLoaderSearch be used in live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14083 Fix historic rubbish in the descriptions of the heap_object_callback
a61af66fc99e Initial load
duke
parents:
diff changeset
14084 parameter of IterateOverHeap and IterateOverInstancesOfClass functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
14085 disallow NULL for this parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
14086 Clarify, correct and make consistent: wording about current thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
14087 opaque frames and insufficient number of frames in PopFrame.
a61af66fc99e Initial load
duke
parents:
diff changeset
14088 Consistently use "current frame" rather than "topmost".
a61af66fc99e Initial load
duke
parents:
diff changeset
14089 Clarify the JVMTI_ERROR_TYPE_MISMATCH errors in GetLocal* and SetLocal*
a61af66fc99e Initial load
duke
parents:
diff changeset
14090 by making them compatible with those in ForceEarlyReturn*.
a61af66fc99e Initial load
duke
parents:
diff changeset
14091 Many other clarifications and wording clean ups.
a61af66fc99e Initial load
duke
parents:
diff changeset
14092 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14093 <change date="25 April 2005" version="1.1.48">
a61af66fc99e Initial load
duke
parents:
diff changeset
14094 Add GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14095 Switch references to the first edition of the VM Spec, to the seconds edition.
a61af66fc99e Initial load
duke
parents:
diff changeset
14096 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14097 <change date="26 April 2005" version="1.1.49">
a61af66fc99e Initial load
duke
parents:
diff changeset
14098 Clarify minor/major version order in GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14099 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14100 <change date="26 April 2005" version="1.1.50">
a61af66fc99e Initial load
duke
parents:
diff changeset
14101 Add SetNativeMethodPrefix and SetNativeMethodPrefixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14102 Reassign GetOwnedMonitorStackDepthInfo to position 153.
a61af66fc99e Initial load
duke
parents:
diff changeset
14103 Break out Class Loader Search in its own documentation category.
a61af66fc99e Initial load
duke
parents:
diff changeset
14104 Deal with overly long lines in XML source.
a61af66fc99e Initial load
duke
parents:
diff changeset
14105 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14106 <change date="29 April 2005" version="1.1.51">
a61af66fc99e Initial load
duke
parents:
diff changeset
14107 Allow agents be started in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14108 Added paragraph about deploying agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
14109 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14110 <change date="30 April 2005" version="1.1.52">
a61af66fc99e Initial load
duke
parents:
diff changeset
14111 Add specification description to SetNativeMethodPrefix(es).
a61af66fc99e Initial load
duke
parents:
diff changeset
14112 Better define the conditions on GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14113 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14114 <change date="30 April 2005" version="1.1.53">
a61af66fc99e Initial load
duke
parents:
diff changeset
14115 Break out the GetClassVersionNumber function from GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14116 Clean-up the references to the VM Spec.
a61af66fc99e Initial load
duke
parents:
diff changeset
14117 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14118 <change date="1 May 2005" version="1.1.54">
a61af66fc99e Initial load
duke
parents:
diff changeset
14119 Allow SetNativeMethodPrefix(es) in any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14120 Add clarifications about the impact of redefinition on GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14121 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14122 <change date="2 May 2005" version="1.1.56">
a61af66fc99e Initial load
duke
parents:
diff changeset
14123 Various clarifications to SetNativeMethodPrefix(es).
a61af66fc99e Initial load
duke
parents:
diff changeset
14124 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14125 <change date="2 May 2005" version="1.1.57">
a61af66fc99e Initial load
duke
parents:
diff changeset
14126 Add missing performance warning to the method entry event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14127 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14128 <change date="5 May 2005" version="1.1.58">
a61af66fc99e Initial load
duke
parents:
diff changeset
14129 Remove internal JVMDI support.
a61af66fc99e Initial load
duke
parents:
diff changeset
14130 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14131 <change date="8 May 2005" version="1.1.59">
a61af66fc99e Initial load
duke
parents:
diff changeset
14132 Add <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
14133 Revamp the bytecode instrumentation documentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14134 Change <functionlink id="IsMethodObsolete"/> to no longer
a61af66fc99e Initial load
duke
parents:
diff changeset
14135 require the can_redefine_classes capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
14136 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14137 <change date="11 May 2005" version="1.1.63">
a61af66fc99e Initial load
duke
parents:
diff changeset
14138 Clarifications for retransformation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14139 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14140 <change date="11 May 2005" version="1.1.64">
a61af66fc99e Initial load
duke
parents:
diff changeset
14141 Clarifications for retransformation, per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
14142 Lock "retransformation (in)capable" at class load enable time.
a61af66fc99e Initial load
duke
parents:
diff changeset
14143 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14144 <change date="4 June 2005" version="1.1.67">
a61af66fc99e Initial load
duke
parents:
diff changeset
14145 Add new heap functionity which supports reporting primitive values,
a61af66fc99e Initial load
duke
parents:
diff changeset
14146 allows setting the referrer tag, and has more powerful filtering:
a61af66fc99e Initial load
duke
parents:
diff changeset
14147 FollowReferences, IterateThroughHeap, and their associated
a61af66fc99e Initial load
duke
parents:
diff changeset
14148 callbacks, structs, enums, and constants.
a61af66fc99e Initial load
duke
parents:
diff changeset
14149 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14150 <change date="4 June 2005" version="1.1.68">
a61af66fc99e Initial load
duke
parents:
diff changeset
14151 Clarification.
a61af66fc99e Initial load
duke
parents:
diff changeset
14152 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14153 <change date="6 June 2005" version="1.1.69">
a61af66fc99e Initial load
duke
parents:
diff changeset
14154 FollowReferences, IterateThroughHeap: Put callbacks in a struct;
a61af66fc99e Initial load
duke
parents:
diff changeset
14155 Add missing error codes; reduce bits in the visit control flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
14156 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14157 <change date="14 June 2005" version="1.1.70">
a61af66fc99e Initial load
duke
parents:
diff changeset
14158 More on new heap functionity: spec clean-up per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
14159 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14160 <change date="15 June 2005" version="1.1.71">
a61af66fc99e Initial load
duke
parents:
diff changeset
14161 More on new heap functionity: Rename old heap section to Heap (1.0).
a61af66fc99e Initial load
duke
parents:
diff changeset
14162 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14163 <change date="21 June 2005" version="1.1.72">
a61af66fc99e Initial load
duke
parents:
diff changeset
14164 Fix typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14165 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14166 <change date="27 June 2005" version="1.1.73">
a61af66fc99e Initial load
duke
parents:
diff changeset
14167 Make referrer info structure a union.
a61af66fc99e Initial load
duke
parents:
diff changeset
14168 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14169 <change date="9 September 2005" version="1.1.74">
a61af66fc99e Initial load
duke
parents:
diff changeset
14170 In new heap functions:
a61af66fc99e Initial load
duke
parents:
diff changeset
14171 Add missing superclass reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
14172 Use a single scheme for computing field indexes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14173 Remove outdated references to struct based referrer info.
a61af66fc99e Initial load
duke
parents:
diff changeset
14174 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14175 <change date="12 September 2005" version="1.1.75">
a61af66fc99e Initial load
duke
parents:
diff changeset
14176 Don't callback during FollowReferences on frivolous java.lang.Object superclass.
a61af66fc99e Initial load
duke
parents:
diff changeset
14177 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14178 <change date="13 September 2005" version="1.1.76">
a61af66fc99e Initial load
duke
parents:
diff changeset
14179 In string primitive callback, length now Unicode length.
a61af66fc99e Initial load
duke
parents:
diff changeset
14180 In array and string primitive callbacks, value now "const".
a61af66fc99e Initial load
duke
parents:
diff changeset
14181 Note possible compiler impacts on setting JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
14182 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14183 <change date="13 September 2005" version="1.1.77">
a61af66fc99e Initial load
duke
parents:
diff changeset
14184 GetClassVersionNumbers() and GetConstantPool() should return
a61af66fc99e Initial load
duke
parents:
diff changeset
14185 error on array or primitive class.
a61af66fc99e Initial load
duke
parents:
diff changeset
14186 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14187 <change date="14 September 2005" version="1.1.78">
a61af66fc99e Initial load
duke
parents:
diff changeset
14188 Grammar fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14189 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14190 <change date="26 September 2005" version="1.1.79">
a61af66fc99e Initial load
duke
parents:
diff changeset
14191 Add IsModifiableClass query.
a61af66fc99e Initial load
duke
parents:
diff changeset
14192 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14193 <change date="9 February 2006" version="1.1.81">
a61af66fc99e Initial load
duke
parents:
diff changeset
14194 Add referrer_class_tag parameter to jvmtiHeapReferenceCallback.
a61af66fc99e Initial load
duke
parents:
diff changeset
14195 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14196 <change date="13 February 2006" version="1.1.82">
a61af66fc99e Initial load
duke
parents:
diff changeset
14197 Doc fixes: update can_redefine_any_class to include retransform.
a61af66fc99e Initial load
duke
parents:
diff changeset
14198 Clarify that exception events cover all Throwables.
a61af66fc99e Initial load
duke
parents:
diff changeset
14199 In GetStackTrace, no test is done for start_depth too big if start_depth is zero,
a61af66fc99e Initial load
duke
parents:
diff changeset
14200 Clarify fields reported in Primitive Field Callback -- static vs instance.
a61af66fc99e Initial load
duke
parents:
diff changeset
14201 Repair confusing names of heap types, including callback names.
a61af66fc99e Initial load
duke
parents:
diff changeset
14202 Require consistent usage of stack depth in the face of thread launch methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
14203 Note incompatibility of <jvmti/> memory management with other systems.
a61af66fc99e Initial load
duke
parents:
diff changeset
14204 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14205 <change date="14 February 2006" version="1.1.85">
a61af66fc99e Initial load
duke
parents:
diff changeset
14206 Fix typos and missing renames.
a61af66fc99e Initial load
duke
parents:
diff changeset
14207 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14208 <change date="13 March 2006" version="1.1.86">
a61af66fc99e Initial load
duke
parents:
diff changeset
14209 Clarify that jmethodIDs and jfieldIDs can be saved.
a61af66fc99e Initial load
duke
parents:
diff changeset
14210 Clarify that Iterate Over Instances Of Class includes subclasses.
a61af66fc99e Initial load
duke
parents:
diff changeset
14211 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14212 <change date="14 March 2006" version="1.1.87">
a61af66fc99e Initial load
duke
parents:
diff changeset
14213 Better phrasing.
a61af66fc99e Initial load
duke
parents:
diff changeset
14214 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14215 <change date="16 March 2006" version="1.1.88">
a61af66fc99e Initial load
duke
parents:
diff changeset
14216 Match the referrer_index for static fields in Object Reference Callback
a61af66fc99e Initial load
duke
parents:
diff changeset
14217 with the Reference Implementation (and all other known implementations);
a61af66fc99e Initial load
duke
parents:
diff changeset
14218 that is, make it match the definition for instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
14219 In GetThreadListStackTraces, add JVMTI_ERROR_INVALID_THREAD to cover
a61af66fc99e Initial load
duke
parents:
diff changeset
14220 an invalid thread in the list; and specify that not started threads
a61af66fc99e Initial load
duke
parents:
diff changeset
14221 return empty stacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14222 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14223 <change date="17 March 2006" version="1.1.89">
a61af66fc99e Initial load
duke
parents:
diff changeset
14224 Typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
14225 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14226 <change date="25 March 2006" version="1.1.90">
a61af66fc99e Initial load
duke
parents:
diff changeset
14227 Typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
14228 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14229 <change date="6 April 2006" version="1.1.91">
a61af66fc99e Initial load
duke
parents:
diff changeset
14230 Remove restrictions on AddToBootstrapClassLoaderSearch and
a61af66fc99e Initial load
duke
parents:
diff changeset
14231 AddToSystemClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
14232 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14233 <change date="1 May 2006" version="1.1.93">
a61af66fc99e Initial load
duke
parents:
diff changeset
14234 Changed spec to return -1 for monitor stack depth for the
a61af66fc99e Initial load
duke
parents:
diff changeset
14235 implementation which can not determine stack depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
14236 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14237 <change date="3 May 2006" version="1.1.94">
a61af66fc99e Initial load
duke
parents:
diff changeset
14238 Corrections for readability and accuracy courtesy of Alan Pratt of IBM.
a61af66fc99e Initial load
duke
parents:
diff changeset
14239 List the object relationships reported in FollowReferences.
a61af66fc99e Initial load
duke
parents:
diff changeset
14240 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14241 <change date="5 May 2006" version="1.1.95">
a61af66fc99e Initial load
duke
parents:
diff changeset
14242 Clarify the object relationships reported in FollowReferences.
a61af66fc99e Initial load
duke
parents:
diff changeset
14243 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14244 <change date="28 June 2006" version="1.1.98">
a61af66fc99e Initial load
duke
parents:
diff changeset
14245 Clarify DisposeEnvironment; add warning.
a61af66fc99e Initial load
duke
parents:
diff changeset
14246 Fix typos in SetLocalXXX "retrieve" => "set".
a61af66fc99e Initial load
duke
parents:
diff changeset
14247 Clarify that native method prefixes must remain set while used.
a61af66fc99e Initial load
duke
parents:
diff changeset
14248 Clarify that exactly one Agent_OnXXX is called per agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14249 Clarify that library loading is independent from start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
14250 Remove ambiguous reference to Agent_OnLoad in the Agent_OnUnload spec.
a61af66fc99e Initial load
duke
parents:
diff changeset
14251 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14252 <change date="31 July 2006" version="1.1.99">
a61af66fc99e Initial load
duke
parents:
diff changeset
14253 Clarify the interaction between functions and exceptions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14254 Clarify and give examples of field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
14255 Remove confusing "That is" sentence from MonitorWait and MonitorWaited events.
a61af66fc99e Initial load
duke
parents:
diff changeset
14256 Update links to point to Java 6.
a61af66fc99e Initial load
duke
parents:
diff changeset
14257 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14258 <change date="6 August 2006" version="1.1.102">
a61af66fc99e Initial load
duke
parents:
diff changeset
14259 Add ResourceExhaustedEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14260 </change>
6919
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
14261 <change date="11 October 2012" version="1.2.2">
39556eae08af 6533010: SPEC: A few broken links in jvmti.html
sspitsyn
parents: 3330
diff changeset
14262 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
14263 </change>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
14264 </changehistory>
a61af66fc99e Initial load
duke
parents:
diff changeset
14265
a61af66fc99e Initial load
duke
parents:
diff changeset
14266 </specification>
a61af66fc99e Initial load
duke
parents:
diff changeset
14267 <!-- Keep this comment at the end of the file
a61af66fc99e Initial load
duke
parents:
diff changeset
14268 Local variables:
a61af66fc99e Initial load
duke
parents:
diff changeset
14269 mode: sgml
a61af66fc99e Initial load
duke
parents:
diff changeset
14270 sgml-omittag:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14271 sgml-shorttag:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14272 sgml-namecase-general:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14273 sgml-general-insert-case:lower
a61af66fc99e Initial load
duke
parents:
diff changeset
14274 sgml-minimize-attributes:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14275 sgml-always-quote-attributes:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14276 sgml-indent-step:2
a61af66fc99e Initial load
duke
parents:
diff changeset
14277 sgml-indent-data:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14278 sgml-parent-document:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14279 sgml-exposed-tags:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14280 sgml-local-catalogs:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14281 sgml-local-ecat-files:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14282 End:
a61af66fc99e Initial load
duke
parents:
diff changeset
14283 -->