annotate src/share/vm/prims/jvmti.xml @ 2100:b1a2afa37ec4

7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis Summary: Track allocated bytes in Thread's, update on TLAB retirement and direct allocation in Eden and tenured, add JNI methods for ThreadMXBean. Reviewed-by: coleenp, kvn, dholmes, ysr
author phh
date Fri, 07 Jan 2011 10:42:32 -0500
parents 09b4dd4f152b
children 7246a374a9f2
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 <!--
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 2019
diff changeset
4 Copyright (c) 2002, 2011, 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
a61af66fc99e Initial load
duke
parents:
diff changeset
283 <!ELEMENT vmspeclink EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
284 <!ATTLIST vmspeclink id CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
285 <!ATTLIST vmspeclink name CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
286 <!ATTLIST vmspeclink preposition CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
287
a61af66fc99e Initial load
duke
parents:
diff changeset
288 <!ELEMENT internallink (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
289 <!ATTLIST internallink id CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
290
a61af66fc99e Initial load
duke
parents:
diff changeset
291 <!ELEMENT functionphaselist EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
292 <!ATTLIST functionphaselist phase (onload|onloadOnly|start|live|any) #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
293
a61af66fc99e Initial load
duke
parents:
diff changeset
294 <!ELEMENT eventphaselist EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
295 <!ATTLIST eventphaselist phase (onload|start|live|any) #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
296
a61af66fc99e Initial load
duke
parents:
diff changeset
297 <!ELEMENT issue ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
298
a61af66fc99e Initial load
duke
parents:
diff changeset
299 <!ELEMENT rationale ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
300
a61af66fc99e Initial load
duke
parents:
diff changeset
301 <!ELEMENT todo ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
302
a61af66fc99e Initial load
duke
parents:
diff changeset
303 <!ELEMENT origin (#PCDATA)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
304
a61af66fc99e Initial load
duke
parents:
diff changeset
305 <!ELEMENT elide (intro|function|callback|event)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
306 <!ATTLIST elide why CDATA #IMPLIED>
a61af66fc99e Initial load
duke
parents:
diff changeset
307
a61af66fc99e Initial load
duke
parents:
diff changeset
308 <!ELEMENT constants (constant*)>
a61af66fc99e Initial load
duke
parents:
diff changeset
309 <!ATTLIST constants id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
310 label CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
311 kind (enum|bits|const) #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
312 since CDATA "1.0">
a61af66fc99e Initial load
duke
parents:
diff changeset
313
a61af66fc99e Initial load
duke
parents:
diff changeset
314 <!ELEMENT constant ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
315 <!ATTLIST constant id CDATA #REQUIRED
a61af66fc99e Initial load
duke
parents:
diff changeset
316 num CDATA #REQUIRED>
a61af66fc99e Initial load
duke
parents:
diff changeset
317
a61af66fc99e Initial load
duke
parents:
diff changeset
318 <!ELEMENT tm (#PCDATA)>
a61af66fc99e Initial load
duke
parents:
diff changeset
319
a61af66fc99e Initial load
duke
parents:
diff changeset
320 <!ELEMENT i (#PCDATA|jvmti|tm)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
321
a61af66fc99e Initial load
duke
parents:
diff changeset
322 <!ELEMENT b (#PCDATA|jvmti|code)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
323
a61af66fc99e Initial load
duke
parents:
diff changeset
324 <!ELEMENT code (#PCDATA|space)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
325
a61af66fc99e Initial load
duke
parents:
diff changeset
326 <!ELEMENT pre ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
327
a61af66fc99e Initial load
duke
parents:
diff changeset
328 <!ELEMENT space EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
329
a61af66fc99e Initial load
duke
parents:
diff changeset
330 <!ELEMENT jvmti EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
331
a61af66fc99e Initial load
duke
parents:
diff changeset
332 <!ELEMENT example (#PCDATA|i)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
333
a61af66fc99e Initial load
duke
parents:
diff changeset
334 <!ELEMENT br EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
335
a61af66fc99e Initial load
duke
parents:
diff changeset
336 <!ELEMENT p EMPTY>
a61af66fc99e Initial load
duke
parents:
diff changeset
337
a61af66fc99e Initial load
duke
parents:
diff changeset
338 <!ELEMENT dl (dt|dd)+>
a61af66fc99e Initial load
duke
parents:
diff changeset
339
a61af66fc99e Initial load
duke
parents:
diff changeset
340 <!ELEMENT dd ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
341
a61af66fc99e Initial load
duke
parents:
diff changeset
342 <!ELEMENT dt (#PCDATA|jvmti|code|i|b)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
343
a61af66fc99e Initial load
duke
parents:
diff changeset
344 <!ELEMENT table (tr)+>
a61af66fc99e Initial load
duke
parents:
diff changeset
345
a61af66fc99e Initial load
duke
parents:
diff changeset
346 <!ELEMENT tr (td|th)*>
a61af66fc99e Initial load
duke
parents:
diff changeset
347
a61af66fc99e Initial load
duke
parents:
diff changeset
348 <!ELEMENT td ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
349 <!ATTLIST td align (left|right|center) "center">
a61af66fc99e Initial load
duke
parents:
diff changeset
350
a61af66fc99e Initial load
duke
parents:
diff changeset
351 <!ELEMENT th ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
352 <!ATTLIST th align (left|right|center) "center">
a61af66fc99e Initial load
duke
parents:
diff changeset
353
a61af66fc99e Initial load
duke
parents:
diff changeset
354 <!ELEMENT ul (li)+>
a61af66fc99e Initial load
duke
parents:
diff changeset
355 <!ATTLIST ul type (disc|circle|square) "disc">
a61af66fc99e Initial load
duke
parents:
diff changeset
356
a61af66fc99e Initial load
duke
parents:
diff changeset
357 <!ELEMENT li ANY>
a61af66fc99e Initial load
duke
parents:
diff changeset
358 ]>
a61af66fc99e Initial load
duke
parents:
diff changeset
359
a61af66fc99e Initial load
duke
parents:
diff changeset
360 <specification label="JVM(TM) Tool Interface"
a61af66fc99e Initial load
duke
parents:
diff changeset
361 majorversion="1"
1988
684faacebf20 7003782: Update JVMTI version to 1.2 for jdk7
kamg
parents: 1552
diff changeset
362 minorversion="2"
684faacebf20 7003782: Update JVMTI version to 1.2 for jdk7
kamg
parents: 1552
diff changeset
363 microversion="1">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
364 <title subtitle="Version">
a61af66fc99e Initial load
duke
parents:
diff changeset
365 <tm>JVM</tm> Tool Interface
a61af66fc99e Initial load
duke
parents:
diff changeset
366 </title>
a61af66fc99e Initial load
duke
parents:
diff changeset
367
a61af66fc99e Initial load
duke
parents:
diff changeset
368 <intro id="whatIs" label="What is the JVM Tool Interface?">
a61af66fc99e Initial load
duke
parents:
diff changeset
369 The <tm>JVM</tm> Tool Interface (<jvmti/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
370 is a programming interface used by development and monitoring tools.
a61af66fc99e Initial load
duke
parents:
diff changeset
371 It provides both a way to inspect the state and
a61af66fc99e Initial load
duke
parents:
diff changeset
372 to control the execution of applications running in the
a61af66fc99e Initial load
duke
parents:
diff changeset
373 <tm>Java</tm> virtual machine (VM).
a61af66fc99e Initial load
duke
parents:
diff changeset
374 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
375 <jvmti/> is intended to provide a VM interface for the full breadth of tools
a61af66fc99e Initial load
duke
parents:
diff changeset
376 that need access to VM state, including but not limited to: profiling,
a61af66fc99e Initial load
duke
parents:
diff changeset
377 debugging, monitoring, thread analysis, and coverage analysis tools.
a61af66fc99e Initial load
duke
parents:
diff changeset
378 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
379 <jvmti/> may not be available in all implementations of the <tm>Java</tm> virtual
a61af66fc99e Initial load
duke
parents:
diff changeset
380 machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
381 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
382 <jvmti/> is a two-way interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
383 A client of <jvmti/>, hereafter called an <i>agent</i>,
a61af66fc99e Initial load
duke
parents:
diff changeset
384 can be notified of
a61af66fc99e Initial load
duke
parents:
diff changeset
385 interesting occurrences through <internallink id="EventSection">events</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
386 <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
387 can query and control the application through many
a61af66fc99e Initial load
duke
parents:
diff changeset
388 <internallink id="FunctionSection">functions</internallink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
389 either in response to events or
a61af66fc99e Initial load
duke
parents:
diff changeset
390 independent of them.
a61af66fc99e Initial load
duke
parents:
diff changeset
391 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
392 Agents run in the same process with and communicate directly with
a61af66fc99e Initial load
duke
parents:
diff changeset
393 the virtual machine executing
a61af66fc99e Initial load
duke
parents:
diff changeset
394 the application being examined. This communication is
a61af66fc99e Initial load
duke
parents:
diff changeset
395 through a native interface (<jvmti/>). The native in-process interface allows
a61af66fc99e Initial load
duke
parents:
diff changeset
396 maximal control with minimal intrusion on the part of a tool.
a61af66fc99e Initial load
duke
parents:
diff changeset
397 Typically, agents are relatively compact. They can be controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
398 by a separate process which implements the bulk of a tool's
a61af66fc99e Initial load
duke
parents:
diff changeset
399 function without interfering with the target application's normal execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
400 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
401
a61af66fc99e Initial load
duke
parents:
diff changeset
402 <intro id="architecture" label="Architecture">
a61af66fc99e Initial load
duke
parents:
diff changeset
403 Tools can be written directly to <jvmti/> or indirectly
a61af66fc99e Initial load
duke
parents:
diff changeset
404 through higher level interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
405 The Java Platform Debugger Architecture includes <jvmti/>, but also
a61af66fc99e Initial load
duke
parents:
diff changeset
406 contains higher-level, out-of-process debugger interfaces. The higher-level
a61af66fc99e Initial load
duke
parents:
diff changeset
407 interfaces are more appropriate than <jvmti/> for many tools.
a61af66fc99e Initial load
duke
parents:
diff changeset
408 For more information on the Java Platform Debugger Architecture,
a61af66fc99e Initial load
duke
parents:
diff changeset
409 see the
a61af66fc99e Initial load
duke
parents:
diff changeset
410 <externallink id="http://java.sun.com/products/jpda/">Java
a61af66fc99e Initial load
duke
parents:
diff changeset
411 Platform Debugger Architecture website</externallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
412 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
413
a61af66fc99e Initial load
duke
parents:
diff changeset
414 <intro id="writingAgents" label="Writing Agents">
a61af66fc99e Initial load
duke
parents:
diff changeset
415 Agents can be written in any native language that supports C
a61af66fc99e Initial load
duke
parents:
diff changeset
416 language calling conventions and C or C++
a61af66fc99e Initial load
duke
parents:
diff changeset
417 definitions.
a61af66fc99e Initial load
duke
parents:
diff changeset
418 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
419 The function, event, data type, and constant definitions needed for
a61af66fc99e Initial load
duke
parents:
diff changeset
420 using <jvmti/> are defined in the include file <code>jvmti.h</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
421 To use these definitions add the <tm>J2SE</tm> include directory
a61af66fc99e Initial load
duke
parents:
diff changeset
422 to your include path and add
a61af66fc99e Initial load
duke
parents:
diff changeset
423 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
424 #include &lt;jvmti.h&gt;
a61af66fc99e Initial load
duke
parents:
diff changeset
425 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
426 to your source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
427 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
428
a61af66fc99e Initial load
duke
parents:
diff changeset
429 <intro id="deployingAgents" label="Deploying Agents">
a61af66fc99e Initial load
duke
parents:
diff changeset
430 An agent is deployed in a platform specific manner but is typically the
a61af66fc99e Initial load
duke
parents:
diff changeset
431 platform equivalent of a dynamic library. On the <tm>Windows</tm> operating
a61af66fc99e Initial load
duke
parents:
diff changeset
432 system, for example, an agent library is a "Dynamic Linked Library" (DLL).
a61af66fc99e Initial load
duke
parents:
diff changeset
433 On the <tm>Solaris</tm> Operating Environment, an agent library is a shared
a61af66fc99e Initial load
duke
parents:
diff changeset
434 object (<code>.so</code> file).
a61af66fc99e Initial load
duke
parents:
diff changeset
435 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
436 An agent may be started at VM startup by specifying the agent library
a61af66fc99e Initial load
duke
parents:
diff changeset
437 name using a <internallink id="starting">command line option</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
438 Some implementations may support a mechanism to <internallink id="onattach">
a61af66fc99e Initial load
duke
parents:
diff changeset
439 start agents</internallink> in the live <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
440 The details of how this is initiated are implementation specific.
a61af66fc99e Initial load
duke
parents:
diff changeset
441 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
442
a61af66fc99e Initial load
duke
parents:
diff changeset
443 <intro id="starting" label="Agent Command Line Options">
a61af66fc99e Initial load
duke
parents:
diff changeset
444 The term "command-line option" is used below to
a61af66fc99e Initial load
duke
parents:
diff changeset
445 mean options supplied in the <code>JavaVMInitArgs</code> argument
a61af66fc99e Initial load
duke
parents:
diff changeset
446 to the <code>JNI_CreateJavaVM</code> function of the JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
447 Invocation API.
a61af66fc99e Initial load
duke
parents:
diff changeset
448 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
449 One of the two following
a61af66fc99e Initial load
duke
parents:
diff changeset
450 command-line options is used on VM startup to
a61af66fc99e Initial load
duke
parents:
diff changeset
451 properly load and run agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
452 These arguments identify the library containing
a61af66fc99e Initial load
duke
parents:
diff changeset
453 the agent as well as an options
a61af66fc99e Initial load
duke
parents:
diff changeset
454 string to be passed in at startup.
a61af66fc99e Initial load
duke
parents:
diff changeset
455 <dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
456 <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
457 <dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
458 The name following <code>-agentlib:</code> is the name of the
a61af66fc99e Initial load
duke
parents:
diff changeset
459 library to load. Lookup of the library, both its full name and location,
a61af66fc99e Initial load
duke
parents:
diff changeset
460 proceeds in a platform-specific manner.
a61af66fc99e Initial load
duke
parents:
diff changeset
461 Typically, the <i>&lt;agent-lib-name&gt;</i> is expanded to an
a61af66fc99e Initial load
duke
parents:
diff changeset
462 operating system specific file name.
a61af66fc99e Initial load
duke
parents:
diff changeset
463 The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
464 For example, if the option
a61af66fc99e Initial load
duke
parents:
diff changeset
465 <code>-agentlib:foo=opt1,opt2</code> is specified, the VM will attempt to
a61af66fc99e Initial load
duke
parents:
diff changeset
466 load the shared library <code>foo.dll</code> from the system <code>PATH</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
467 under <tm>Windows</tm> or <code>libfoo.so</code> from the
a61af66fc99e Initial load
duke
parents:
diff changeset
468 <code>LD_LIBRARY_PATH</code> under the <tm>Solaris</tm> operating environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
469 </dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
470 <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
471 <dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
472 The path following <code>-agentpath:</code> is the absolute path from which
a61af66fc99e Initial load
duke
parents:
diff changeset
473 to load the library.
a61af66fc99e Initial load
duke
parents:
diff changeset
474 No library name expansion will occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
475 The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
476 For example, if the option
a61af66fc99e Initial load
duke
parents:
diff changeset
477 <code>-agentpath:c:\myLibs\foo.dll=opt1,opt2</code> is specified, the VM will attempt to
a61af66fc99e Initial load
duke
parents:
diff changeset
478 load the shared library <code>c:\myLibs\foo.dll</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
479 </dd>
a61af66fc99e Initial load
duke
parents:
diff changeset
480 </dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
481 The start-up routine <internallink id="onload"><code>Agent_OnLoad</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
482 in the library will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
483 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
484 Libraries loaded with <code>-agentlib:</code> or <code>-agentpath:</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
485 will be searched for JNI native method implementations to facilitate the
a61af66fc99e Initial load
duke
parents:
diff changeset
486 use of Java programming language code in tools, as is needed for
a61af66fc99e Initial load
duke
parents:
diff changeset
487 <internallink id="bci">bytecode instrumentation</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
488 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
489 The agent libraries will be searched after all other libraries have been
a61af66fc99e Initial load
duke
parents:
diff changeset
490 searched (agents wishing to override or intercept the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
491 implementations of non-agent methods can use the
a61af66fc99e Initial load
duke
parents:
diff changeset
492 <eventlink id="NativeMethodBind">NativeMethodBind event</eventlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
493 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
494 These switches do the above and nothing more - they do not change the
a61af66fc99e Initial load
duke
parents:
diff changeset
495 state of the VM or <jvmti/>. No command line options are needed
a61af66fc99e Initial load
duke
parents:
diff changeset
496 to enable <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
497 or aspects of <jvmti/>, this is handled programmatically
a61af66fc99e Initial load
duke
parents:
diff changeset
498 by the use of
a61af66fc99e Initial load
duke
parents:
diff changeset
499 <internallink id="capability">capabilities</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
500 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
501
a61af66fc99e Initial load
duke
parents:
diff changeset
502 <intro id="startup" label="Agent Start-Up">
a61af66fc99e Initial load
duke
parents:
diff changeset
503 The VM starts each agent by invoking a start-up function.
a61af66fc99e Initial load
duke
parents:
diff changeset
504 If the agent is started in the <code>OnLoad</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
505 <functionlink id="GetPhase">phase</functionlink> the function
a61af66fc99e Initial load
duke
parents:
diff changeset
506 <internallink id="onload"><code>Agent_OnLoad</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
507 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
508 If the agent is started in the live
a61af66fc99e Initial load
duke
parents:
diff changeset
509 <functionlink id="GetPhase">phase</functionlink> the function
a61af66fc99e Initial load
duke
parents:
diff changeset
510 <internallink id="onattach"><code>Agent_OnAttach</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
511 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
512 Exactly one call to a start-up function is made per agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
513 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
514
a61af66fc99e Initial load
duke
parents:
diff changeset
515 <intro id="onload" label="Agent Start-Up (OnLoad phase)">
a61af66fc99e Initial load
duke
parents:
diff changeset
516 If an agent is started during the <code>OnLoad</code> phase then its
a61af66fc99e Initial load
duke
parents:
diff changeset
517 agent library must export a start-up function with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
518 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
519 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
520 Agent_OnLoad(JavaVM *vm, char *options, void *reserved)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
521 The VM will start the agent by calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
522 It will be called early enough in VM initialization that:
a61af66fc99e Initial load
duke
parents:
diff changeset
523 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
524 <li><functionlink id="SetSystemProperty">system properties</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
525 may be set before they have been used in the start-up of the VM</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
526 <li>the full set of
a61af66fc99e Initial load
duke
parents:
diff changeset
527 <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
528 is still available (note that capabilities that configure the VM
a61af66fc99e Initial load
duke
parents:
diff changeset
529 may only be available at this time--see the
a61af66fc99e Initial load
duke
parents:
diff changeset
530 <internallink id="capability">Capability function section</internallink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
531 <li>no bytecodes have executed</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
532 <li>no classes have been loaded</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
533 <li>no objects have been created</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
534 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
535 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
536 The VM will call the <code>Agent_OnLoad</code> function with
a61af66fc99e Initial load
duke
parents:
diff changeset
537 <i>&lt;options&gt;</i> as the second argument -
a61af66fc99e Initial load
duke
parents:
diff changeset
538 that is, using the command-line option examples,
a61af66fc99e Initial load
duke
parents:
diff changeset
539 <code>"opt1,opt2"</code> will be passed to the <code>char *options</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
540 argument of <code>Agent_OnLoad</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
541 The <code>options</code> argument is encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
542 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
543 If <i>=&lt;options&gt;</i> is not specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
544 a zero length string is passed to <code>options</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
545 The lifespan of the <code>options</code> string is the <code>Agent_OnLoad</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
546 call. If needed beyond this time the string or parts of the string must
a61af66fc99e Initial load
duke
parents:
diff changeset
547 be copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
548 The period between when <code>Agent_OnLoad</code> is called and when it
a61af66fc99e Initial load
duke
parents:
diff changeset
549 returns is called the <i>OnLoad phase</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
550 Since the VM is not initialized during the OnLoad
a61af66fc99e Initial load
duke
parents:
diff changeset
551 <functionlink id="GetPhase">phase</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
552 the set of allowed operations
a61af66fc99e Initial load
duke
parents:
diff changeset
553 inside <code>Agent_OnLoad</code> is restricted (see the function descriptions for the
a61af66fc99e Initial load
duke
parents:
diff changeset
554 functionality available at this time).
a61af66fc99e Initial load
duke
parents:
diff changeset
555 The agent can safely process the options and set
a61af66fc99e Initial load
duke
parents:
diff changeset
556 event callbacks with <functionlink id="SetEventCallbacks"></functionlink>. Once
a61af66fc99e Initial load
duke
parents:
diff changeset
557 the VM initialization event is received
a61af66fc99e Initial load
duke
parents:
diff changeset
558 (that is, the <eventlink id="VMInit">VMInit</eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
559 callback is invoked), the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
560 can complete its initialization.
a61af66fc99e Initial load
duke
parents:
diff changeset
561 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
562 Early startup is required so that agents can set the desired capabilities,
a61af66fc99e Initial load
duke
parents:
diff changeset
563 many of which must be set before the VM is initialized.
a61af66fc99e Initial load
duke
parents:
diff changeset
564 In JVMDI, the -Xdebug command-line option provided
a61af66fc99e Initial load
duke
parents:
diff changeset
565 very coarse-grain control of capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
566 JVMPI implementations use various tricks to provide a single "JVMPI on" switch.
a61af66fc99e Initial load
duke
parents:
diff changeset
567 No reasonable command-line
a61af66fc99e Initial load
duke
parents:
diff changeset
568 option could provide the fine-grain of control required to balance needed capabilities vs
a61af66fc99e Initial load
duke
parents:
diff changeset
569 performance impact.
a61af66fc99e Initial load
duke
parents:
diff changeset
570 Early startup is also needed so that agents can control the execution
a61af66fc99e Initial load
duke
parents:
diff changeset
571 environment - modifying the file system and system properties to install
a61af66fc99e Initial load
duke
parents:
diff changeset
572 their functionality.
a61af66fc99e Initial load
duke
parents:
diff changeset
573 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
574 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
575 The return value from <code>Agent_OnLoad</code> is used to indicate an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
576 Any value other than zero indicates an error and causes termination of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
577 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
578
a61af66fc99e Initial load
duke
parents:
diff changeset
579 <intro id="onattach" label="Agent Start-Up (Live phase)">
a61af66fc99e Initial load
duke
parents:
diff changeset
580 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
581 <functionlink id="GetPhase">phase</functionlink>. The details of how this is supported,
a61af66fc99e Initial load
duke
parents:
diff changeset
582 are implementation specific. For example, a tool may use some platform specific mechanism,
a61af66fc99e Initial load
duke
parents:
diff changeset
583 or implementation specific API, to attach to the running VM, and request it start a given
a61af66fc99e Initial load
duke
parents:
diff changeset
584 agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
585 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
586 If an agent is started during the live phase then its agent library
a61af66fc99e Initial load
duke
parents:
diff changeset
587 must export a start-up function
a61af66fc99e Initial load
duke
parents:
diff changeset
588 with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
589 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
590 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
591 Agent_OnAttach(JavaVM* vm, char *options, void *reserved)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
592 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
593 The VM will start the agent by calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
594 It will be called in the context of a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
595 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
596 The <i>&lt;options&gt;</i> argument is the startup options provided to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
597 <i>&lt;options&gt;</i> is encoded as a <internallink id="mUTF">modified UTF-8
a61af66fc99e Initial load
duke
parents:
diff changeset
598 </internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
599 If startup options were not provided, a zero length string is passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
600 <code>options</code>. The lifespan of the <code>options</code> string is the
a61af66fc99e Initial load
duke
parents:
diff changeset
601 <code>Agent_OnAttach</code> call. If needed beyond this time the string or parts of
a61af66fc99e Initial load
duke
parents:
diff changeset
602 the string must be copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
603 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
604 Note that some <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
605 may not be available in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
606 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
607 The <code>Agent_OnAttach</code> function initializes the agent and returns a value
a61af66fc99e Initial load
duke
parents:
diff changeset
608 to the VM to indicate if an error occurred. Any value other than zero indicates an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
609 An error does not cause the VM to terminate. Instead the VM ignores the error, or takes
a61af66fc99e Initial load
duke
parents:
diff changeset
610 some implementation specific action -- for example it might print an error to standard error,
a61af66fc99e Initial load
duke
parents:
diff changeset
611 or record the error in a system log.
a61af66fc99e Initial load
duke
parents:
diff changeset
612 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
613
a61af66fc99e Initial load
duke
parents:
diff changeset
614 <intro id="onunload" label="Agent Shutdown">
a61af66fc99e Initial load
duke
parents:
diff changeset
615 The library may optionally export a
a61af66fc99e Initial load
duke
parents:
diff changeset
616 shutdown function with the following prototype:
a61af66fc99e Initial load
duke
parents:
diff changeset
617 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
618 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
619 Agent_OnUnload(JavaVM *vm)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
620 This function will be called by the VM when the library is about to be unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
621 The library will be unloaded and this function will be called if some platform specific
a61af66fc99e Initial load
duke
parents:
diff changeset
622 mechanism causes the unload (an unload mechanism is not specified in this document)
a61af66fc99e Initial load
duke
parents:
diff changeset
623 or the library is (in effect) unloaded by the termination of the VM whether through
a61af66fc99e Initial load
duke
parents:
diff changeset
624 normal termination or VM failure, including start-up failure.
a61af66fc99e Initial load
duke
parents:
diff changeset
625 Uncontrolled shutdown is, of couse, an exception to this rule.
a61af66fc99e Initial load
duke
parents:
diff changeset
626 Note the distinction between this function and the
a61af66fc99e Initial load
duke
parents:
diff changeset
627 <eventlink id="VMDeath">VM Death event</eventlink>: for the VM Death event
a61af66fc99e Initial load
duke
parents:
diff changeset
628 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
629 <jvmti/> environment must exist which has set a callback for VMDeath
a61af66fc99e Initial load
duke
parents:
diff changeset
630 and enabled the event
a61af66fc99e Initial load
duke
parents:
diff changeset
631 None of these are required for <code>Agent_OnUnload</code> and this function
a61af66fc99e Initial load
duke
parents:
diff changeset
632 is also called if the library is unloaded for other reasons.
a61af66fc99e Initial load
duke
parents:
diff changeset
633 In the case that a VM Death event is sent, it will be sent before this
a61af66fc99e Initial load
duke
parents:
diff changeset
634 function is called (assuming this function is called due to VM termination).
a61af66fc99e Initial load
duke
parents:
diff changeset
635 This function can be used to clean-up resources allocated by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
636 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
637
a61af66fc99e Initial load
duke
parents:
diff changeset
638 <intro id="tooloptions" label="JAVA_TOOL_OPTIONS">
a61af66fc99e Initial load
duke
parents:
diff changeset
639 Since the command-line cannot always be accessed or modified, for example in embedded VMs
a61af66fc99e Initial load
duke
parents:
diff changeset
640 or simply VMs launched deep within scripts, a <code>JAVA_TOOL_OPTIONS</code> variable is
a61af66fc99e Initial load
duke
parents:
diff changeset
641 provided so that agents may be launched in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
642 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
643 Platforms which support environment variables or other named strings, may support the
a61af66fc99e Initial load
duke
parents:
diff changeset
644 <code>JAVA_TOOL_OPTIONS</code> variable. This variable will be broken into options at white-space
a61af66fc99e Initial load
duke
parents:
diff changeset
645 boundaries. White-space characters include space, tab, carriage-return, new-line,
a61af66fc99e Initial load
duke
parents:
diff changeset
646 vertical-tab, and form-feed. Sequences of white-space characters are considered
a61af66fc99e Initial load
duke
parents:
diff changeset
647 equivalent to a single white-space character. No white-space is included in the options
a61af66fc99e Initial load
duke
parents:
diff changeset
648 unless quoted. Quoting is as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
649 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
650 <li>All characters enclosed between a pair of single quote marks (''), except a single
a61af66fc99e Initial load
duke
parents:
diff changeset
651 quote, are quoted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
652 <li>Double quote characters have no special meaning inside a pair of single quote marks.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
653 <li>All characters enclosed between a pair of double quote marks (""), except a double
a61af66fc99e Initial load
duke
parents:
diff changeset
654 quote, are quoted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
655 <li>Single quote characters have no special meaning inside a pair of double quote marks.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
656 <li>A quoted part can start or end anywhere in the variable.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
657 <li>White-space characters have no special meaning when quoted -- they are included in
a61af66fc99e Initial load
duke
parents:
diff changeset
658 the option like any other character and do not mark white-space boundaries.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
659 <li>The pair of quote marks is not included in the option.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
660 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
661 <code>JNI_CreateJavaVM</code> (in the JNI Invocation API) will prepend these options to the options supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
662 in its <code>JavaVMInitArgs</code> argument. Platforms may disable this feature in cases where security is
a61af66fc99e Initial load
duke
parents:
diff changeset
663 a concern; for example, the Reference Implementation disables this feature on Unix systems when
a61af66fc99e Initial load
duke
parents:
diff changeset
664 the effective user or group ID differs from the real ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
665 This feature is intended to support the initialization of tools -- specifically including the
a61af66fc99e Initial load
duke
parents:
diff changeset
666 launching of native or Java programming language agents. Multiple tools may wish to use this
a61af66fc99e Initial load
duke
parents:
diff changeset
667 feature, so the variable should not be overwritten, instead, options should be appended to
a61af66fc99e Initial load
duke
parents:
diff changeset
668 the variable. Note that since the variable is processed at the time of the JNI Invocation
a61af66fc99e Initial load
duke
parents:
diff changeset
669 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
670 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
671
a61af66fc99e Initial load
duke
parents:
diff changeset
672 <intro id="environments" label="Environments">
a61af66fc99e Initial load
duke
parents:
diff changeset
673 The <jvmti/> specification supports the use of multiple simultaneous
a61af66fc99e Initial load
duke
parents:
diff changeset
674 <jvmti/> agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
675 Each agent has its own <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
676 That is, the <jvmti/> state is
a61af66fc99e Initial load
duke
parents:
diff changeset
677 separate for each agent - changes to one environment do not affect the
a61af66fc99e Initial load
duke
parents:
diff changeset
678 others. The state of a <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
679 environment includes:
a61af66fc99e Initial load
duke
parents:
diff changeset
680 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
681 <li><functionlink id="SetEventCallbacks">the event callbacks</functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
682 <li><functionlink id="SetEventNotificationMode">the set of events which are enabled</functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
683 <li><internallink id="capability">the capabilities</internallink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
684 <li><internallink id="memory">the memory allocation/deallocation hooks</internallink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
685 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
686 Although their <jvmti/> state
a61af66fc99e Initial load
duke
parents:
diff changeset
687 is separate, agents inspect and modify the shared state
a61af66fc99e Initial load
duke
parents:
diff changeset
688 of the VM, they also share the native environment in which they execute.
a61af66fc99e Initial load
duke
parents:
diff changeset
689 As such, an agent can perturb the results of other agents or cause them
a61af66fc99e Initial load
duke
parents:
diff changeset
690 to fail. It is the responsibility of the agent writer to specify the level
a61af66fc99e Initial load
duke
parents:
diff changeset
691 of compatibility with other agents. <jvmti/> implementations are not capable
a61af66fc99e Initial load
duke
parents:
diff changeset
692 of preventing destructive interactions between agents. Techniques to reduce
a61af66fc99e Initial load
duke
parents:
diff changeset
693 the likelihood of these occurrences are beyond the scope of this document.
a61af66fc99e Initial load
duke
parents:
diff changeset
694 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
695 An agent creates a <jvmti/> environment
a61af66fc99e Initial load
duke
parents:
diff changeset
696 by passing a <jvmti/> version
a61af66fc99e Initial load
duke
parents:
diff changeset
697 as the interface ID to the JNI Invocation API function
a61af66fc99e Initial load
duke
parents:
diff changeset
698 <externallink id="http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/invocation.html#GetEnv"><code>GetEnv</code></externallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
699 See <internallink id="jvmtiEnvAccess">Accessing <jvmti/> Functions</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
700 for more details on the creation and use of
a61af66fc99e Initial load
duke
parents:
diff changeset
701 <jvmti/> environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
702 Typically, <jvmti/> environments are created by calling <code>GetEnv</code> from
a61af66fc99e Initial load
duke
parents:
diff changeset
703 <internallink id="onload"><code>Agent_OnLoad</code></internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
704 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
705
a61af66fc99e Initial load
duke
parents:
diff changeset
706 <intro id="bci" label="Bytecode Instrumentation">
a61af66fc99e Initial load
duke
parents:
diff changeset
707 This interface does not include some events that one might expect in an interface with
a61af66fc99e Initial load
duke
parents:
diff changeset
708 profiling support. Some examples include object allocation events and full speed
a61af66fc99e Initial load
duke
parents:
diff changeset
709 method enter and exit events. The interface instead provides support for
a61af66fc99e Initial load
duke
parents:
diff changeset
710 <i>bytecode instrumentation</i>, the ability to alter the Java virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
711 bytecode instructions which comprise the target program. Typically, these alterations
a61af66fc99e Initial load
duke
parents:
diff changeset
712 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
713 a call to <code>MyProfiler.methodEntered()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
714 Since the changes are purely additive, they do not modify application
a61af66fc99e Initial load
duke
parents:
diff changeset
715 state or behavior.
a61af66fc99e Initial load
duke
parents:
diff changeset
716 Because the inserted agent code is standard bytecodes, the VM can run at full speed,
a61af66fc99e Initial load
duke
parents:
diff changeset
717 optimizing not only the target program but also the instrumentation. If the
a61af66fc99e Initial load
duke
parents:
diff changeset
718 instrumentation does not involve switching from bytecode execution, no expensive
a61af66fc99e Initial load
duke
parents:
diff changeset
719 state transitions are needed. The result is high performance events.
a61af66fc99e Initial load
duke
parents:
diff changeset
720 This approach also provides complete control to the agent: instrumentation can be
a61af66fc99e Initial load
duke
parents:
diff changeset
721 restricted to "interesting" portions of the code (e.g., the end user's code) and
a61af66fc99e Initial load
duke
parents:
diff changeset
722 can be conditional. Instrumentation can run entirely in Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
723 code or can call into the native agent. Instrumentation can simply maintain
a61af66fc99e Initial load
duke
parents:
diff changeset
724 counters or can statistically sample events.
a61af66fc99e Initial load
duke
parents:
diff changeset
725 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
726 Instrumentation can be inserted in one of three ways:
a61af66fc99e Initial load
duke
parents:
diff changeset
727 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
728 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
729 Static Instrumentation: The class file is instrumented before it
a61af66fc99e Initial load
duke
parents:
diff changeset
730 is loaded into the VM - for example, by creating a duplicate directory of
a61af66fc99e Initial load
duke
parents:
diff changeset
731 <code>*.class</code> files which have been modified to add the instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
732 This method is extremely awkward and, in general, an agent cannot know
a61af66fc99e Initial load
duke
parents:
diff changeset
733 the origin of the class files which will be loaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
734 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
735 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
736 Load-Time Instrumentation: When a class file is loaded by the VM, the raw
a61af66fc99e Initial load
duke
parents:
diff changeset
737 bytes of the class file are sent for instrumentation to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
738 The <eventlink id="ClassFileLoadHook"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
739 event, triggered by the class load,
a61af66fc99e Initial load
duke
parents:
diff changeset
740 provides this functionality. This mechanism provides efficient
a61af66fc99e Initial load
duke
parents:
diff changeset
741 and complete access to one-time instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
742 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
743 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
744 Dynamic Instrumentation: A class which is already loaded (and possibly
a61af66fc99e Initial load
duke
parents:
diff changeset
745 even running) is modified. This optional feature is provided by the
a61af66fc99e Initial load
duke
parents:
diff changeset
746 <eventlink id="ClassFileLoadHook"/> event, triggered by calling the
a61af66fc99e Initial load
duke
parents:
diff changeset
747 <functionlink id="RetransformClasses"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
748 Classes can be modified multiple times and can be returned to their
a61af66fc99e Initial load
duke
parents:
diff changeset
749 original state.
a61af66fc99e Initial load
duke
parents:
diff changeset
750 The mechanism allows instrumentation which changes during the
a61af66fc99e Initial load
duke
parents:
diff changeset
751 course of execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
752 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
753 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
754 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
755 The class modification functionality provided in this interface
a61af66fc99e Initial load
duke
parents:
diff changeset
756 is intended to provide a mechanism for instrumentation
a61af66fc99e Initial load
duke
parents:
diff changeset
757 (the <eventlink id="ClassFileLoadHook"/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
758 and the <functionlink id="RetransformClasses"/> function)
a61af66fc99e Initial load
duke
parents:
diff changeset
759 and, during development, for fix-and-continue debugging
a61af66fc99e Initial load
duke
parents:
diff changeset
760 (the <functionlink id="RedefineClasses"/> function).
a61af66fc99e Initial load
duke
parents:
diff changeset
761 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
762 Care must be taken to avoid perturbing dependencies, especially when
a61af66fc99e Initial load
duke
parents:
diff changeset
763 instrumenting core classes. For example, an approach to getting notification
a61af66fc99e Initial load
duke
parents:
diff changeset
764 of every object allocation is to instrument the constructor on
a61af66fc99e Initial load
duke
parents:
diff changeset
765 <code>Object</code>. Assuming that the constructor is initially
a61af66fc99e Initial load
duke
parents:
diff changeset
766 empty, the constructor could be changed to:
a61af66fc99e Initial load
duke
parents:
diff changeset
767 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
768 public Object() {
a61af66fc99e Initial load
duke
parents:
diff changeset
769 MyProfiler.allocationTracker(this);
a61af66fc99e Initial load
duke
parents:
diff changeset
770 }
a61af66fc99e Initial load
duke
parents:
diff changeset
771 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
772 However, if this change was made using the
a61af66fc99e Initial load
duke
parents:
diff changeset
773 <eventlink id="ClassFileLoadHook"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
774 event then this might impact a typical VM as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
775 the first created object will call the constructor causing a class load of
a61af66fc99e Initial load
duke
parents:
diff changeset
776 <code>MyProfiler</code>; which will then cause
a61af66fc99e Initial load
duke
parents:
diff changeset
777 object creation, and since <code>MyProfiler</code> isn't loaded yet,
a61af66fc99e Initial load
duke
parents:
diff changeset
778 infinite recursion; resulting in a stack overflow. A refinement of this
a61af66fc99e Initial load
duke
parents:
diff changeset
779 would be to delay invoking the tracking method until a safe time. For
a61af66fc99e Initial load
duke
parents:
diff changeset
780 example, <code>trackAllocations</code> could be set in the
a61af66fc99e Initial load
duke
parents:
diff changeset
781 handler for the <code>VMInit</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
782 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
783 static boolean trackAllocations = false;
a61af66fc99e Initial load
duke
parents:
diff changeset
784
a61af66fc99e Initial load
duke
parents:
diff changeset
785 public Object() {
a61af66fc99e Initial load
duke
parents:
diff changeset
786 if (trackAllocations) {
a61af66fc99e Initial load
duke
parents:
diff changeset
787 MyProfiler.allocationTracker(this);
a61af66fc99e Initial load
duke
parents:
diff changeset
788 }
a61af66fc99e Initial load
duke
parents:
diff changeset
789 }
a61af66fc99e Initial load
duke
parents:
diff changeset
790 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
791 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
792 The <functionlink id="SetNativeMethodPrefix"/> allows native methods
a61af66fc99e Initial load
duke
parents:
diff changeset
793 to be instrumented by the use of wrapper methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
794 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
795
a61af66fc99e Initial load
duke
parents:
diff changeset
796 <intro id="mUTF" label="Modified UTF-8 String Encoding">
a61af66fc99e Initial load
duke
parents:
diff changeset
797 <jvmti/> uses modified UTF-8 to encode character strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
798 This is the same encoding used by JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
799 Modified UTF-8 differs
a61af66fc99e Initial load
duke
parents:
diff changeset
800 from standard UTF-8 in the representation of supplementary characters
a61af66fc99e Initial load
duke
parents:
diff changeset
801 and of the null character. See the
a61af66fc99e Initial load
duke
parents:
diff changeset
802 <externallink id="http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/types.html#wp16542">
a61af66fc99e Initial load
duke
parents:
diff changeset
803 Modified UTF-8 Strings</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
804 section of the JNI specification for details.
a61af66fc99e Initial load
duke
parents:
diff changeset
805 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
806
a61af66fc99e Initial load
duke
parents:
diff changeset
807 <intro id="context" label="Specification Context">
a61af66fc99e Initial load
duke
parents:
diff changeset
808 Since this interface provides access to the state of applications running in the
a61af66fc99e Initial load
duke
parents:
diff changeset
809 Java virtual machine;
a61af66fc99e Initial load
duke
parents:
diff changeset
810 terminology refers to the Java platform and not the native
a61af66fc99e Initial load
duke
parents:
diff changeset
811 platform (unless stated otherwise). For example:
a61af66fc99e Initial load
duke
parents:
diff changeset
812 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
813 <li>"thread" means Java programming language thread.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
814 <li>"stack frame" means Java virtual machine stack frame.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
815 <li>"class" means Java programming language class.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
816 <li>"heap" means Java virtual machine heap.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
817 <li>"monitor" means Java programming language object monitor.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
818 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
819 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
820 Sun, Sun Microsystems, the Sun logo, Java, and JVM
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
821 are trademarks or registered trademarks of Oracle
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
822 and/or its affiliates, in the U.S. and other countries.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
823 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
824
a61af66fc99e Initial load
duke
parents:
diff changeset
825
a61af66fc99e Initial load
duke
parents:
diff changeset
826 <functionsection label="Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
827 <intro id="jvmtiEnvAccess" label="Accessing Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
828 Native code accesses <jvmti/> features
a61af66fc99e Initial load
duke
parents:
diff changeset
829 by calling <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
830 Access to <jvmti/> functions is by use of an interface pointer
a61af66fc99e Initial load
duke
parents:
diff changeset
831 in the same manner as
a61af66fc99e Initial load
duke
parents:
diff changeset
832 <externallink id="http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/design.html">Java
a61af66fc99e Initial load
duke
parents:
diff changeset
833 Native Interface (JNI) functions</externallink> are accessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
834 The <jvmti/> interface pointer is called the
a61af66fc99e Initial load
duke
parents:
diff changeset
835 <i>environment pointer</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
836 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
837 An environment pointer is a pointer to an environment and has
a61af66fc99e Initial load
duke
parents:
diff changeset
838 the type <code>jvmtiEnv*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
839 An environment has information about its <jvmti/> connection.
a61af66fc99e Initial load
duke
parents:
diff changeset
840 The first value in the environment is a pointer to the function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
841 The function table is an array of pointers to <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
842 Every function pointer is at a predefined offset inside the
a61af66fc99e Initial load
duke
parents:
diff changeset
843 array.
a61af66fc99e Initial load
duke
parents:
diff changeset
844 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
845 When used from the C language:
a61af66fc99e Initial load
duke
parents:
diff changeset
846 double indirection is used to access the functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
847 the environment pointer provides context and is the first
a61af66fc99e Initial load
duke
parents:
diff changeset
848 parameter of each function call; for example:
a61af66fc99e Initial load
duke
parents:
diff changeset
849 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
850 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
851 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
852 jvmtiError err = (*jvmti)->GetLoadedClasses(jvmti, &amp;class_count, &amp;classes);
a61af66fc99e Initial load
duke
parents:
diff changeset
853 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
854 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
855 When used from the C++ language:
a61af66fc99e Initial load
duke
parents:
diff changeset
856 functions are accessed as member functions of <code>jvmtiEnv</code>;
a61af66fc99e Initial load
duke
parents:
diff changeset
857 the environment pointer is not passed to the function call; for example:
a61af66fc99e Initial load
duke
parents:
diff changeset
858 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
859 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
860 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
861 jvmtiError err = jvmti->GetLoadedClasses(&amp;class_count, &amp;classes);
a61af66fc99e Initial load
duke
parents:
diff changeset
862 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
863 Unless otherwise stated, all examples and declarations in this
a61af66fc99e Initial load
duke
parents:
diff changeset
864 specification use the C language.
a61af66fc99e Initial load
duke
parents:
diff changeset
865 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
866 A <jvmti/> environment can be obtained through the JNI Invocation API
a61af66fc99e Initial load
duke
parents:
diff changeset
867 <code>GetEnv</code> function:
a61af66fc99e Initial load
duke
parents:
diff changeset
868 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
869 jvmtiEnv *jvmti;
a61af66fc99e Initial load
duke
parents:
diff changeset
870 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
871 (*jvm)->GetEnv(jvm, &amp;jvmti, JVMTI_VERSION_1_0);
a61af66fc99e Initial load
duke
parents:
diff changeset
872 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
873 Each call to <code>GetEnv</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
874 creates a new <jvmti/> connection and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
875 a new <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
876 The <code>version</code> argument of <code>GetEnv</code> must be
a61af66fc99e Initial load
duke
parents:
diff changeset
877 a <jvmti/> version.
a61af66fc99e Initial load
duke
parents:
diff changeset
878 The returned environment may have a different version than the
a61af66fc99e Initial load
duke
parents:
diff changeset
879 requested version but the returned environment must be compatible.
a61af66fc99e Initial load
duke
parents:
diff changeset
880 <code>GetEnv</code> will return <code>JNI_EVERSION</code> if a
a61af66fc99e Initial load
duke
parents:
diff changeset
881 compatible version is not available, if <jvmti/> is not supported or
a61af66fc99e Initial load
duke
parents:
diff changeset
882 <jvmti/> is not supported in the current VM configuration.
a61af66fc99e Initial load
duke
parents:
diff changeset
883 Other interfaces may be added for creating <jvmti/> environments
a61af66fc99e Initial load
duke
parents:
diff changeset
884 in specific contexts.
a61af66fc99e Initial load
duke
parents:
diff changeset
885 Each environment has its own state (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
886 <functionlink id="SetEventNotificationMode">desired events</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
887 <functionlink id="SetEventCallbacks">event handling functions</functionlink>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
888 <functionlink id="AddCapabilities">capabilities</functionlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
889 An environment is released with
a61af66fc99e Initial load
duke
parents:
diff changeset
890 <functionlink id="DisposeEnvironment"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
891 Thus, unlike JNI which has one environment per thread, <jvmti/> environments work
a61af66fc99e Initial load
duke
parents:
diff changeset
892 across threads and are created dynamically.
a61af66fc99e Initial load
duke
parents:
diff changeset
893 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
894
a61af66fc99e Initial load
duke
parents:
diff changeset
895 <intro id="functionReturn" label="Function Return Values">
a61af66fc99e Initial load
duke
parents:
diff changeset
896 <jvmti/> functions always return an
a61af66fc99e Initial load
duke
parents:
diff changeset
897 <internallink id="ErrorSection">error code</internallink> via the
a61af66fc99e Initial load
duke
parents:
diff changeset
898 <datalink id="jvmtiError"/> function return value.
a61af66fc99e Initial load
duke
parents:
diff changeset
899 Some functions can return additional
a61af66fc99e Initial load
duke
parents:
diff changeset
900 values through pointers provided by the calling function.
a61af66fc99e Initial load
duke
parents:
diff changeset
901 In some cases, <jvmti/> functions allocate memory that your program must
a61af66fc99e Initial load
duke
parents:
diff changeset
902 explicitly deallocate. This is indicated in the individual <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
903 function descriptions. Empty lists, arrays, sequences, etc are
a61af66fc99e Initial load
duke
parents:
diff changeset
904 returned as <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
905 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
906 In the event that the <jvmti/> function encounters
a61af66fc99e Initial load
duke
parents:
diff changeset
907 an error (any return value other than <code>JVMTI_ERROR_NONE</code>) the values
a61af66fc99e Initial load
duke
parents:
diff changeset
908 of memory referenced by argument pointers is undefined, but no memory
a61af66fc99e Initial load
duke
parents:
diff changeset
909 will have been allocated and no global references will have been allocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
910 If the error occurs because of invalid input, no action will have occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
911 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
912
a61af66fc99e Initial load
duke
parents:
diff changeset
913 <intro id="refs" label="Managing JNI Object References">
a61af66fc99e Initial load
duke
parents:
diff changeset
914 <jvmti/> functions identify objects with JNI references
a61af66fc99e Initial load
duke
parents:
diff changeset
915 (<datalink id="jobject"/> and <datalink id="jclass"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
916 and their derivatives
a61af66fc99e Initial load
duke
parents:
diff changeset
917 (<datalink id="jthread"/> and <datalink id="jthreadGroup"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
918 References passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
919 <jvmti/> functions can be either global or local, but they must be
a61af66fc99e Initial load
duke
parents:
diff changeset
920 strong references. All references returned by <jvmti/> functions are
a61af66fc99e Initial load
duke
parents:
diff changeset
921 local references--these local references are created
a61af66fc99e Initial load
duke
parents:
diff changeset
922 during the <jvmti/> call.
a61af66fc99e Initial load
duke
parents:
diff changeset
923 Local references are a resource that must be managed (see the
a61af66fc99e Initial load
duke
parents:
diff changeset
924 <externallink id="http://java.sun.com/javase/6/docs/guide/jni/spec/functions.html#wp18654">JNI Documentation</externallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
925 When threads return from native code all local references
a61af66fc99e Initial load
duke
parents:
diff changeset
926 are freed. Note that some threads, including typical
a61af66fc99e Initial load
duke
parents:
diff changeset
927 agent threads, will never return from native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
928 A thread is ensured the ability to create sixteen local
a61af66fc99e Initial load
duke
parents:
diff changeset
929 references without the need for any explicit management.
a61af66fc99e Initial load
duke
parents:
diff changeset
930 For threads executing a limited number of <jvmti/> calls before
a61af66fc99e Initial load
duke
parents:
diff changeset
931 returning from native code
a61af66fc99e Initial load
duke
parents:
diff changeset
932 (for example, threads processing events),
a61af66fc99e Initial load
duke
parents:
diff changeset
933 it may be determined that no explicit management
a61af66fc99e Initial load
duke
parents:
diff changeset
934 is needed.
a61af66fc99e Initial load
duke
parents:
diff changeset
935 However, long running agent threads will need explicit
a61af66fc99e Initial load
duke
parents:
diff changeset
936 local reference management--usually with the JNI functions
a61af66fc99e Initial load
duke
parents:
diff changeset
937 <code>PushLocalFrame</code> and <code>PopLocalFrame</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
938 Conversely, to preserve references beyond the
a61af66fc99e Initial load
duke
parents:
diff changeset
939 return from native code, they must be converted to global references.
a61af66fc99e Initial load
duke
parents:
diff changeset
940 These rules do not apply to <datalink id="jmethodID"/> and <datalink id="jfieldID"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
941 as they are not <datalink id="jobject"/>s.
a61af66fc99e Initial load
duke
parents:
diff changeset
942 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
943
a61af66fc99e Initial load
duke
parents:
diff changeset
944 <intro id="prereqState" label="Prerequisite State for Calling Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
945 Unless the function explicitly states that the agent must bring
a61af66fc99e Initial load
duke
parents:
diff changeset
946 a thread or the VM to a particular state (for example, suspended),
a61af66fc99e Initial load
duke
parents:
diff changeset
947 the <jvmti/> implementation is responsible for bringing the VM to a
a61af66fc99e Initial load
duke
parents:
diff changeset
948 safe and consistent state for performing the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
949 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
950
a61af66fc99e Initial load
duke
parents:
diff changeset
951 <intro id="functionsExceptions" label="Exceptions and Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
952 <jvmti/> functions never throw exceptions; error conditions are
a61af66fc99e Initial load
duke
parents:
diff changeset
953 communicated via the
a61af66fc99e Initial load
duke
parents:
diff changeset
954 <internallink id="functionReturn">function return value</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
955 Any existing exception state is preserved across a call to a
a61af66fc99e Initial load
duke
parents:
diff changeset
956 <jvmti/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
957 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
958 <externallink
a61af66fc99e Initial load
duke
parents:
diff changeset
959 id="http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/design.html#wp770"
a61af66fc99e Initial load
duke
parents:
diff changeset
960 >Java Exceptions</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
961 section of the JNI specification for information on handling exceptions.
a61af66fc99e Initial load
duke
parents:
diff changeset
962 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
963
a61af66fc99e Initial load
duke
parents:
diff changeset
964 <category id="memory" label="Memory Management">
a61af66fc99e Initial load
duke
parents:
diff changeset
965 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
966 These functions provide for the allocation and deallocation of
a61af66fc99e Initial load
duke
parents:
diff changeset
967 memory used by <jvmti/> functionality and can be used to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
968 working memory for agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
969 Memory managed by <jvmti/> is not compatible with other memory
a61af66fc99e Initial load
duke
parents:
diff changeset
970 allocation libraries and mechanisms.
a61af66fc99e Initial load
duke
parents:
diff changeset
971 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
972
a61af66fc99e Initial load
duke
parents:
diff changeset
973 <function id="Allocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="46">
a61af66fc99e Initial load
duke
parents:
diff changeset
974 <synopsis>Allocate</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
975 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
976 Allocate an area of memory through the <jvmti/> allocator.
a61af66fc99e Initial load
duke
parents:
diff changeset
977 The allocated
a61af66fc99e Initial load
duke
parents:
diff changeset
978 memory should be freed with <functionlink id="Deallocate"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
979 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
980 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
981 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
982 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
983 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
984 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
985 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
986 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
987 The number of bytes to allocate.
a61af66fc99e Initial load
duke
parents:
diff changeset
988 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
989 <code>jlong</code> is used for compatibility with JVMDI.
a61af66fc99e Initial load
duke
parents:
diff changeset
990 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
991 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
992 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
993 <param id="mem_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
994 <allocbuf incount="size"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
995 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
996 On return, a pointer to the beginning of the allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
997 If <code>size</code> is zero, <code>NULL</code> is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
998 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
999 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1000 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1001 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1002 <error id="JVMTI_ERROR_OUT_OF_MEMORY">
a61af66fc99e Initial load
duke
parents:
diff changeset
1003 Memory request cannot be honored.
a61af66fc99e Initial load
duke
parents:
diff changeset
1004 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1005 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
1006 <paramlink id="size"></paramlink> is less than zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1007 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1008 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1009 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1010
a61af66fc99e Initial load
duke
parents:
diff changeset
1011 <function id="Deallocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="47">
a61af66fc99e Initial load
duke
parents:
diff changeset
1012 <synopsis>Deallocate</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1013 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1014 Deallocate <code>mem</code> using the <jvmti/> allocator.
a61af66fc99e Initial load
duke
parents:
diff changeset
1015 This function should
a61af66fc99e Initial load
duke
parents:
diff changeset
1016 be used to deallocate any memory allocated and returned
a61af66fc99e Initial load
duke
parents:
diff changeset
1017 by a <jvmti/> function
a61af66fc99e Initial load
duke
parents:
diff changeset
1018 (including memory allocated with <functionlink id="Allocate"></functionlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1019 All allocated memory must be deallocated
a61af66fc99e Initial load
duke
parents:
diff changeset
1020 or the memory cannot be reclaimed.
a61af66fc99e Initial load
duke
parents:
diff changeset
1021 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1022 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1023 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1024 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1025 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1026 <param id="mem">
a61af66fc99e Initial load
duke
parents:
diff changeset
1027 <outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1028 <uchar/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1029 <nullok>the call is ignored</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
1030 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1031 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1032 A pointer to the beginning of the allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
1033 Please ignore "On return, the elements are set."
a61af66fc99e Initial load
duke
parents:
diff changeset
1034 <todo>keep it from generating "On return, the elements are set"</todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
1035 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1036 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1037 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1038 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1039 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1040 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1041 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
1042
a61af66fc99e Initial load
duke
parents:
diff changeset
1043 <category id="threadCategory" label="Thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1044 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1045 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
1046
a61af66fc99e Initial load
duke
parents:
diff changeset
1047 <function id="GetThreadState" num="17">
a61af66fc99e Initial load
duke
parents:
diff changeset
1048 <synopsis>Get Thread State</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1049 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1050 Get the state of a thread. The state of the thread is represented by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1051 answers to the hierarchical set of questions below:
a61af66fc99e Initial load
duke
parents:
diff changeset
1052 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1053 <li><i>Alive?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1054 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1055 <li>Not alive.
a61af66fc99e Initial load
duke
parents:
diff changeset
1056 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1057 <li><i>Why not alive?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1058 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1059 <li>New.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1060 <li>Terminated (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1061 id="JVMTI_THREAD_STATE_TERMINATED"><code>JVMTI_THREAD_STATE_TERMINATED</code></datalink>)</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 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1065 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1066 <li>Alive (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1067 id="JVMTI_THREAD_STATE_ALIVE"><code>JVMTI_THREAD_STATE_ALIVE</code></datalink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1068 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1069 <li><i>Suspended?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1070 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1071 <li>Suspended (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1072 id="JVMTI_THREAD_STATE_SUSPENDED"><code>JVMTI_THREAD_STATE_SUSPENDED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1073 <li>Not suspended</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1074 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1075 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1076 <li><i>Interrupted?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1077 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1078 <li>Interrupted (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1079 id="JVMTI_THREAD_STATE_INTERRUPTED"><code>JVMTI_THREAD_STATE_INTERRUPTED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1080 <li>Not interrupted.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1081 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1082 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1083 <li><i>In native?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1084 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1085 <li>In native code (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1086 id="JVMTI_THREAD_STATE_IN_NATIVE"><code>JVMTI_THREAD_STATE_IN_NATIVE</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1087 <li>In Java programming language code</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1088 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1089 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1090 <li><i>What alive state?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1091 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1092 <li>Runnable (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1093 id="JVMTI_THREAD_STATE_RUNNABLE"><code>JVMTI_THREAD_STATE_RUNNABLE</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1094 <li>Blocked (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1095 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
1096 <li>Waiting (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1097 id="JVMTI_THREAD_STATE_WAITING"><code>JVMTI_THREAD_STATE_WAITING</code></datalink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1098 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1099 <li><i>Timed wait?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1100 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1101 <li>Indefinite (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1102 id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY"><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></datalink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1103 <li>Timed (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1104 id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT"><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1105 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1106 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1107 <li><i>Why waiting?</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
1108 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1109 <li>Object.wait (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1110 id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT"><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1111 <li>LockSupport.park (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1112 id="JVMTI_THREAD_STATE_PARKED"><code>JVMTI_THREAD_STATE_PARKED</code></datalink>)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1113 <li>Sleeping (<datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
1114 id="JVMTI_THREAD_STATE_SLEEPING"><code>JVMTI_THREAD_STATE_SLEEPING</code></datalink>)</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 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1125 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1126 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1127 The answers are represented by the following bit vector.
a61af66fc99e Initial load
duke
parents:
diff changeset
1128 <constants id="jvmtiThreadState" label="Thread State Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
1129 <constant id="JVMTI_THREAD_STATE_ALIVE" num="0x0001">
a61af66fc99e Initial load
duke
parents:
diff changeset
1130 Thread is alive. Zero if thread is new (not started) or terminated.
a61af66fc99e Initial load
duke
parents:
diff changeset
1131 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1132 <constant id="JVMTI_THREAD_STATE_TERMINATED" num="0x0002">
a61af66fc99e Initial load
duke
parents:
diff changeset
1133 Thread has completed execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
1134 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1135 <constant id="JVMTI_THREAD_STATE_RUNNABLE" num="0x0004">
a61af66fc99e Initial load
duke
parents:
diff changeset
1136 Thread is runnable.
a61af66fc99e Initial load
duke
parents:
diff changeset
1137 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1138 <constant id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER" num="0x0400">
a61af66fc99e Initial load
duke
parents:
diff changeset
1139 Thread is waiting to enter a synchronization block/method or,
a61af66fc99e Initial load
duke
parents:
diff changeset
1140 after an <code>Object.wait()</code>, waiting to re-enter a
a61af66fc99e Initial load
duke
parents:
diff changeset
1141 synchronization block/method.
a61af66fc99e Initial load
duke
parents:
diff changeset
1142 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1143 <constant id="JVMTI_THREAD_STATE_WAITING" num="0x0080">
a61af66fc99e Initial load
duke
parents:
diff changeset
1144 Thread is waiting.
a61af66fc99e Initial load
duke
parents:
diff changeset
1145 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1146 <constant id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY" num="0x0010">
a61af66fc99e Initial load
duke
parents:
diff changeset
1147 Thread is waiting without a timeout.
a61af66fc99e Initial load
duke
parents:
diff changeset
1148 For example, <code>Object.wait()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1149 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1150 <constant id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT" num="0x0020">
a61af66fc99e Initial load
duke
parents:
diff changeset
1151 Thread is waiting with a maximum time to wait specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
1152 For example, <code>Object.wait(long)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1153 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1154 <constant id="JVMTI_THREAD_STATE_SLEEPING" num="0x0040">
a61af66fc99e Initial load
duke
parents:
diff changeset
1155 Thread is sleeping -- <code>Thread.sleep(long)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1156 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1157 <constant id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT" num="0x0100">
a61af66fc99e Initial load
duke
parents:
diff changeset
1158 Thread is waiting on an object monitor -- <code>Object.wait</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1159 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1160 <constant id="JVMTI_THREAD_STATE_PARKED" num="0x0200">
a61af66fc99e Initial load
duke
parents:
diff changeset
1161 Thread is parked, for example: <code>LockSupport.park</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
1162 <code>LockSupport.parkUtil</code> and <code>LockSupport.parkNanos</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1163 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1164 <constant id="JVMTI_THREAD_STATE_SUSPENDED" num="0x100000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1165 Thread suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1166 <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1167 or a <jvmti/> suspend function
a61af66fc99e Initial load
duke
parents:
diff changeset
1168 (such as <functionlink id="SuspendThread"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1169 has been called on the thread. If this bit
a61af66fc99e Initial load
duke
parents:
diff changeset
1170 is set, the other bits refer to the thread state before suspension.
a61af66fc99e Initial load
duke
parents:
diff changeset
1171 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1172 <constant id="JVMTI_THREAD_STATE_INTERRUPTED" num="0x200000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1173 Thread has been interrupted.
a61af66fc99e Initial load
duke
parents:
diff changeset
1174 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1175 <constant id="JVMTI_THREAD_STATE_IN_NATIVE" num="0x400000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1176 Thread is in native code--that is, a native method is running
a61af66fc99e Initial load
duke
parents:
diff changeset
1177 which has not called back into the VM or Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
1178 language code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1179 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1180 This flag is not set when running VM compiled Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
1181 language code nor is it set when running VM code or
a61af66fc99e Initial load
duke
parents:
diff changeset
1182 VM support code. Native VM interface functions, such as JNI and
a61af66fc99e Initial load
duke
parents:
diff changeset
1183 <jvmti/> functions, may be implemented as VM code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1184 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1185 <constant id="JVMTI_THREAD_STATE_VENDOR_1" num="0x10000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1186 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1187 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1188 <constant id="JVMTI_THREAD_STATE_VENDOR_2" num="0x20000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1189 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1190 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1191 <constant id="JVMTI_THREAD_STATE_VENDOR_3" num="0x40000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
1192 Defined by VM vendor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1193 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1194 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
1195 The following definitions are used to convert <jvmti/> thread state
a61af66fc99e Initial load
duke
parents:
diff changeset
1196 to <code>java.lang.Thread.State</code> style states.
a61af66fc99e Initial load
duke
parents:
diff changeset
1197 <constants id="jvmtiJavaLangThreadState" label="java.lang.Thread.State Conversion Masks" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
1198 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_MASK"
a61af66fc99e Initial load
duke
parents:
diff changeset
1199 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
1200 Mask the state with this before comparison
a61af66fc99e Initial load
duke
parents:
diff changeset
1201 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1202 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_NEW"
a61af66fc99e Initial load
duke
parents:
diff changeset
1203 num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
1204 <code>java.lang.Thread.State.NEW</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1205 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1206 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED"
a61af66fc99e Initial load
duke
parents:
diff changeset
1207 num="JVMTI_THREAD_STATE_TERMINATED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1208 <code>java.lang.Thread.State.TERMINATED</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1209 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1210 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE"
a61af66fc99e Initial load
duke
parents:
diff changeset
1211 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
1212 <code>java.lang.Thread.State.RUNNABLE</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1213 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1214 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED"
a61af66fc99e Initial load
duke
parents:
diff changeset
1215 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
1216 <code>java.lang.Thread.State.BLOCKED</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1217 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1218 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_WAITING"
a61af66fc99e Initial load
duke
parents:
diff changeset
1219 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY">
a61af66fc99e Initial load
duke
parents:
diff changeset
1220 <code>java.lang.Thread.State.WAITING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1221 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1222 <constant id="JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING"
a61af66fc99e Initial load
duke
parents:
diff changeset
1223 num="JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT">
a61af66fc99e Initial load
duke
parents:
diff changeset
1224 <code>java.lang.Thread.State.TIMED_WAITING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1225 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
1226 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
1227 <b>Rules</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1228 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1229 There can be no more than one answer to a question, although there can be no
a61af66fc99e Initial load
duke
parents:
diff changeset
1230 answer (because the answer is unknown, does not apply, or none of the answers is
a61af66fc99e Initial load
duke
parents:
diff changeset
1231 correct). An answer is set only when the enclosing answers match.
a61af66fc99e Initial load
duke
parents:
diff changeset
1232 That is, no more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1233 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1234 <li><code>JVMTI_THREAD_STATE_RUNNABLE</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1235 <li><code>JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1236 <li><code>JVMTI_THREAD_STATE_WAITING</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1237 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1238 can be set (a <tm>J2SE</tm> compliant implementation will always set
a61af66fc99e Initial load
duke
parents:
diff changeset
1239 one of these if <code>JVMTI_THREAD_STATE_ALIVE</code> is set).
a61af66fc99e Initial load
duke
parents:
diff changeset
1240 And if any of these are set, the enclosing answer
a61af66fc99e Initial load
duke
parents:
diff changeset
1241 <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1242 No more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1243 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1244 <li><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1245 <li><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1246 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1247 can be set (a <tm>J2SE</tm> compliant implementation will always set
a61af66fc99e Initial load
duke
parents:
diff changeset
1248 one of these if <code>JVMTI_THREAD_STATE_WAITING</code> is set).
a61af66fc99e Initial load
duke
parents:
diff changeset
1249 And if either is set, the enclosing answers
a61af66fc99e Initial load
duke
parents:
diff changeset
1250 <code>JVMTI_THREAD_STATE_ALIVE</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
1251 <code>JVMTI_THREAD_STATE_WAITING</code> are set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1252 No more than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1253 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1254 <li><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1255 <li><code>JVMTI_THREAD_STATE_PARKED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1256 <li><code>JVMTI_THREAD_STATE_SLEEPING</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1257 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1258 can be set. And if any of these is set, the enclosing answers
a61af66fc99e Initial load
duke
parents:
diff changeset
1259 <code>JVMTI_THREAD_STATE_ALIVE</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
1260 <code>JVMTI_THREAD_STATE_WAITING</code> are set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1261 Also, if <code>JVMTI_THREAD_STATE_SLEEPING</code> is set,
a61af66fc99e Initial load
duke
parents:
diff changeset
1262 then <code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1263 If a state <i>A</i> is implemented using the mechanism of
a61af66fc99e Initial load
duke
parents:
diff changeset
1264 state <i>B</i> then it is state <i>A</i> which
a61af66fc99e Initial load
duke
parents:
diff changeset
1265 is returned by this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1266 For example, if <code>Thread.sleep(long)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1267 is implemented using <code>Object.wait(long)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1268 then it is still <code>JVMTI_THREAD_STATE_SLEEPING</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1269 which is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1270 More than one of
a61af66fc99e Initial load
duke
parents:
diff changeset
1271 <ul type="circle">
a61af66fc99e Initial load
duke
parents:
diff changeset
1272 <li><code>JVMTI_THREAD_STATE_SUSPENDED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1273 <li><code>JVMTI_THREAD_STATE_INTERRUPTED</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1274 <li><code>JVMTI_THREAD_STATE_IN_NATIVE</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1275 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1276 can be set, but if any is set,
a61af66fc99e Initial load
duke
parents:
diff changeset
1277 <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1278 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1279 And finally,
a61af66fc99e Initial load
duke
parents:
diff changeset
1280 <code>JVMTI_THREAD_STATE_TERMINATED</code> cannot be set unless
a61af66fc99e Initial load
duke
parents:
diff changeset
1281 <code>JVMTI_THREAD_STATE_ALIVE</code> is not set.
a61af66fc99e Initial load
duke
parents:
diff changeset
1282 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1283 The thread state representation is designed for extension in future versions
a61af66fc99e Initial load
duke
parents:
diff changeset
1284 of the specification; thread state values should be used accordingly, that is
a61af66fc99e Initial load
duke
parents:
diff changeset
1285 they should not be used as ordinals.
a61af66fc99e Initial load
duke
parents:
diff changeset
1286 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
1287 the state bits should be masked with the interesting bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
1288 All bits not defined above are reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
1289 A VM, compliant to the current specification, must set reserved bits to zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1290 An agent should ignore reserved bits --
a61af66fc99e Initial load
duke
parents:
diff changeset
1291 they should not be assumed to be zero and thus should not be included in comparisons.
a61af66fc99e Initial load
duke
parents:
diff changeset
1292 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1293 <b>Examples</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1294 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1295 Note that the values below exclude reserved and vendor bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
1296 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1297 The state of a thread blocked at a <code>synchronized</code>-statement would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1298 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1299 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER
a61af66fc99e Initial load
duke
parents:
diff changeset
1300 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1301 The state of a thread which hasn't started yet would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1302 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1303 0
a61af66fc99e Initial load
duke
parents:
diff changeset
1304 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1305 The state of a thread at a <code>Object.wait(3000)</code> would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1306 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1307 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_WAITING +
a61af66fc99e Initial load
duke
parents:
diff changeset
1308 JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT +
a61af66fc99e Initial load
duke
parents:
diff changeset
1309 JVMTI_THREAD_STATE_MONITOR_WAITING
a61af66fc99e Initial load
duke
parents:
diff changeset
1310 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1311 The state of a thread suspended while runnable would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1312 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1313 JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_RUNNABLE + JVMTI_THREAD_STATE_SUSPENDED
a61af66fc99e Initial load
duke
parents:
diff changeset
1314 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1315 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1316 <b>Testing the State</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1317 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1318 In most cases, the thread state can be determined by testing the one bit corresponding
a61af66fc99e Initial load
duke
parents:
diff changeset
1319 to that question. For example, the code to test if a thread is sleeping:
a61af66fc99e Initial load
duke
parents:
diff changeset
1320 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1321 jint state;
a61af66fc99e Initial load
duke
parents:
diff changeset
1322 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
1323
a61af66fc99e Initial load
duke
parents:
diff changeset
1324 err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
a61af66fc99e Initial load
duke
parents:
diff changeset
1325 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1326 if (state &amp; JVMTI_THREAD_STATE_SLEEPING) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1327 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1328 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1329 For waiting (that is, in <code>Object.wait</code>, parked, or sleeping) it would be:
a61af66fc99e Initial load
duke
parents:
diff changeset
1330 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1331 if (state &amp; JVMTI_THREAD_STATE_WAITING) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1332 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1333 For some states, more than one bit will need to be tested as is the case
a61af66fc99e Initial load
duke
parents:
diff changeset
1334 when testing if a thread has not yet been started:
a61af66fc99e Initial load
duke
parents:
diff changeset
1335 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1336 if ((state &amp; (JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_TERMINATED)) == 0) { ...
a61af66fc99e Initial load
duke
parents:
diff changeset
1337 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1338 To distinguish timed from untimed <code>Object.wait</code>:
a61af66fc99e Initial load
duke
parents:
diff changeset
1339 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1340 if (state &amp; JVMTI_THREAD_STATE_IN_OBJECT_WAIT) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1341 if (state &amp; JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1342 printf("in Object.wait(long timeout)\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
1343 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
1344 printf("in Object.wait()\n");
a61af66fc99e Initial load
duke
parents:
diff changeset
1345 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1346 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1347 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1348 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1349 <b>Relationship to <code>java.lang.Thread.State</code></b>
a61af66fc99e Initial load
duke
parents:
diff changeset
1350 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1351 The thread state represented by <code>java.lang.Thread.State</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1352 returned from <code>java.lang.Thread.getState()</code> is a subset of the
a61af66fc99e Initial load
duke
parents:
diff changeset
1353 information returned from this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1354 The corresponding <code>java.lang.Thread.State</code> can be determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1355 by using the provided conversion masks.
a61af66fc99e Initial load
duke
parents:
diff changeset
1356 For example, this returns the name of the <code>java.lang.Thread.State</code> thread state:
a61af66fc99e Initial load
duke
parents:
diff changeset
1357 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1358 err = (*jvmti)-&gt;GetThreadState(jvmti, thread, &amp;state);
a61af66fc99e Initial load
duke
parents:
diff changeset
1359 abortOnError(err);
a61af66fc99e Initial load
duke
parents:
diff changeset
1360 switch (state &amp; JVMTI_JAVA_LANG_THREAD_STATE_MASK) {
a61af66fc99e Initial load
duke
parents:
diff changeset
1361 case JVMTI_JAVA_LANG_THREAD_STATE_NEW:
a61af66fc99e Initial load
duke
parents:
diff changeset
1362 return "NEW";
a61af66fc99e Initial load
duke
parents:
diff changeset
1363 case JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED:
a61af66fc99e Initial load
duke
parents:
diff changeset
1364 return "TERMINATED";
a61af66fc99e Initial load
duke
parents:
diff changeset
1365 case JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE:
a61af66fc99e Initial load
duke
parents:
diff changeset
1366 return "RUNNABLE";
a61af66fc99e Initial load
duke
parents:
diff changeset
1367 case JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED:
a61af66fc99e Initial load
duke
parents:
diff changeset
1368 return "BLOCKED";
a61af66fc99e Initial load
duke
parents:
diff changeset
1369 case JVMTI_JAVA_LANG_THREAD_STATE_WAITING:
a61af66fc99e Initial load
duke
parents:
diff changeset
1370 return "WAITING";
a61af66fc99e Initial load
duke
parents:
diff changeset
1371 case JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING:
a61af66fc99e Initial load
duke
parents:
diff changeset
1372 return "TIMED_WAITING";
a61af66fc99e Initial load
duke
parents:
diff changeset
1373 }
a61af66fc99e Initial load
duke
parents:
diff changeset
1374 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
1375 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1376 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1377 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1378 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1379 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1380 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1381 <jthread null="current" started="maybe" impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1382 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1383 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1384 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1385 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1386 <param id="thread_state_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1387 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1388 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1389 On return, points to state flags,
a61af66fc99e Initial load
duke
parents:
diff changeset
1390 as defined by the <internallink id="jvmtiThreadState">Thread State Flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1391 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1392 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1393 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1394 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1395 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1396 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1397
a61af66fc99e Initial load
duke
parents:
diff changeset
1398 <function id="GetCurrentThread" phase="start" num="18" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
1399 <synopsis>Get Current Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1400 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1401 Get the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1402 The current thread is the Java programming language thread which has called the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1403 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1404 Note that most <jvmti/> functions that take a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1405 as an argument will accept <code>NULL</code> to mean
a61af66fc99e Initial load
duke
parents:
diff changeset
1406 the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1407 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1408 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1409 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1410 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1411 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1412 <param id="thread_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1413 <outptr><jthread/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1414 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1415 On return, points to the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1416 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1417 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1418 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1419 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1420 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1421 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1422
a61af66fc99e Initial load
duke
parents:
diff changeset
1423 <function id="GetAllThreads" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
1424 <synopsis>Get All Threads</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1425 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1426 Get all live threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1427 The threads are Java programming language threads;
a61af66fc99e Initial load
duke
parents:
diff changeset
1428 that is, threads that are attached to the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1429 A thread is live if <code>java.lang.Thread.isAlive()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1430 would return <code>true</code>, that is, the thread has
a61af66fc99e Initial load
duke
parents:
diff changeset
1431 been started and has not yet died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1432 The universe of threads is determined by the context of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1433 environment, which typically is all threads attached to the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1434 Note that this includes <jvmti/> agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1435 (see <functionlink id="RunAgentThread"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1436 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1437 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1438 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1439 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1440 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1441 <param id="threads_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1442 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1443 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1444 On return, points to the number of running threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1445 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1446 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1447 <param id="threads_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1448 <allocbuf outcount="threads_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1449 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1450 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
1451 for each running thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1452 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1453 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1454 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1455 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1456 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1457 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1458
a61af66fc99e Initial load
duke
parents:
diff changeset
1459 <function id="SuspendThread" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
1460 <synopsis>Suspend Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1461 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1462 Suspend the specified thread. If the calling thread is specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
1463 this function will not return until some other thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
1464 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1465 If the thread is currently suspended, this function
a61af66fc99e Initial load
duke
parents:
diff changeset
1466 does nothing and returns an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
1467 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1468 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1469 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1470 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1471 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1472 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1473 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1474 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1475 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1476 The thread to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1477 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1478 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1479 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1480 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1481 <error id="JVMTI_ERROR_THREAD_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1482 Thread already suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1483 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1484 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1485 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1486
a61af66fc99e Initial load
duke
parents:
diff changeset
1487 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
1488 <function id="SuspendAllThreads" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
1489 <synopsis>Suspend All Threads</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1490 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1491 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
1492 There has been no explicit call for this function, and it will
a61af66fc99e Initial load
duke
parents:
diff changeset
1493 thus be removed if there is no interest.
a61af66fc99e Initial load
duke
parents:
diff changeset
1494 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
1495 Suspend all live threads except:
a61af66fc99e Initial load
duke
parents:
diff changeset
1496 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1497 <li>already suspended threads</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1498 <li>those listed in <paramlink id="except_list"></paramlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1499 <li>certain system (non application) threads, as determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1500 by the VM implementation</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
1501 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
1502 The threads are Java programming language threads;
a61af66fc99e Initial load
duke
parents:
diff changeset
1503 native threads which are not attached to the VM are not
a61af66fc99e Initial load
duke
parents:
diff changeset
1504 Java programming language threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1505 A thread is live if <code>java.lang.Thread.isAlive()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1506 would return <code>true</code>, that is, the thread has
a61af66fc99e Initial load
duke
parents:
diff changeset
1507 been started and has not yet died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1508 The universe of threads is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
1509 by the context of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1510 environment, which, typically, is all threads attached to the VM,
a61af66fc99e Initial load
duke
parents:
diff changeset
1511 except critical VM internal threads and <jvmti/> agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1512 (see <functionlink id="RunAgentThread"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1513 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1514 If the calling thread is specified,
a61af66fc99e Initial load
duke
parents:
diff changeset
1515 all other threads are suspended first then the caller thread is suspended -
a61af66fc99e Initial load
duke
parents:
diff changeset
1516 this function will not return until some other thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
1517 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1518 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1519 The list of actually
a61af66fc99e Initial load
duke
parents:
diff changeset
1520 suspended threads is returned in
a61af66fc99e Initial load
duke
parents:
diff changeset
1521 <paramlink id="suspended_list_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1522 Suspension is as defined in <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1523 <functionlink id="ResumeThreadList"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1524 can be used to resume the suspended threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
1525 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1526 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1527 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1528 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1529 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1530 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1531 <param id="except_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1532 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1533 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1534 The number of threads in the list of threads not to be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1535 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1536 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1537 <param id="except_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1538 <inbuf incount="except_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1539 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1540 <nullok>not an error if <code>except_count == 0</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
1541 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1542 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1543 The list of threads not to be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1544 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1545 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1546 <param id="suspended_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1547 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1548 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1549 On return, points to the number of threads suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1550 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1551 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1552 <param id="suspended_list_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1553 <allocbuf outcount="suspended_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1554 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1555 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
1556 for each thread suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1557 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1558 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1559 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1560 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1561 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
1562 A thread in <paramlink id="except_list"></paramlink> was invalid.
a61af66fc99e Initial load
duke
parents:
diff changeset
1563 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1564 <error id="JVMTI_ERROR_NULL_POINTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
1565 Both <paramlink id="except_list"></paramlink> was <code>NULL</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1566 and <paramlink id="except_count"></paramlink> was non-zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
1567 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1568 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1569 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1570 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
1571
a61af66fc99e Initial load
duke
parents:
diff changeset
1572 <function id="SuspendThreadList" num="92">
a61af66fc99e Initial load
duke
parents:
diff changeset
1573 <synopsis>Suspend Thread List</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1574 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1575 Suspend the <paramlink id="request_count"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1576 threads specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1577 <paramlink id="request_list"></paramlink> array.
a61af66fc99e Initial load
duke
parents:
diff changeset
1578 Threads may be resumed with
a61af66fc99e Initial load
duke
parents:
diff changeset
1579 <functionlink id="ResumeThreadList"></functionlink> or
a61af66fc99e Initial load
duke
parents:
diff changeset
1580 <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1581 If the calling thread is specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1582 <paramlink id="request_list"></paramlink> array, this function will
a61af66fc99e Initial load
duke
parents:
diff changeset
1583 not return until some other thread resumes it.
a61af66fc99e Initial load
duke
parents:
diff changeset
1584 Errors encountered in the suspension of a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1585 are returned in the <paramlink id="results"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1586 array, <b>not</b> in the return value of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1587 Threads that are currently suspended do not change state.
a61af66fc99e Initial load
duke
parents:
diff changeset
1588 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1589 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1590 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1591 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1592 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1593 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1594 <param id="request_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1595 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1596 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1597 The number of threads to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1598 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1599 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1600 <param id="request_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1601 <inbuf incount="request_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1602 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1603 The list of threads to suspend.
a61af66fc99e Initial load
duke
parents:
diff changeset
1604 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1605 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1606 <param id="results">
a61af66fc99e Initial load
duke
parents:
diff changeset
1607 <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1608 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1609 An agent supplied array of
a61af66fc99e Initial load
duke
parents:
diff changeset
1610 <paramlink id="request_count"></paramlink> elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
1611 On return, filled with the error code for
a61af66fc99e Initial load
duke
parents:
diff changeset
1612 the suspend of the corresponding thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1613 The error code will be
a61af66fc99e Initial load
duke
parents:
diff changeset
1614 <errorlink id="JVMTI_ERROR_NONE"></errorlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1615 if the thread was suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1616 Possible error codes are those specified
a61af66fc99e Initial load
duke
parents:
diff changeset
1617 for <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1618 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1619 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1620 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1621 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1622 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1623 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1624
a61af66fc99e Initial load
duke
parents:
diff changeset
1625 <function id="ResumeThread" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
1626 <synopsis>Resume Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1627 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1628 Resume a suspended thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1629 Any threads currently suspended through
a61af66fc99e Initial load
duke
parents:
diff changeset
1630 a <jvmti/> suspend function (eg.
a61af66fc99e Initial load
duke
parents:
diff changeset
1631 <functionlink id="SuspendThread"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1632 or <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1633 will resume execution;
a61af66fc99e Initial load
duke
parents:
diff changeset
1634 all other threads are unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
1635 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1636 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1637 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1638 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1639 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1640 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1641 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1642 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1643 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1644 The thread to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1645 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1646 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1647 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1648 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1649 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
1650 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
1651 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1652 <error id="JVMTI_ERROR_INVALID_TYPESTATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
1653 The state of the thread has been modified, and is now inconsistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
1654 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
1655 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1656 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1657
a61af66fc99e Initial load
duke
parents:
diff changeset
1658 <function id="ResumeThreadList" num="93">
a61af66fc99e Initial load
duke
parents:
diff changeset
1659 <synopsis>Resume Thread List</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1660 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1661 Resume the <paramlink id="request_count"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1662 threads specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1663 <paramlink id="request_list"></paramlink> array.
a61af66fc99e Initial load
duke
parents:
diff changeset
1664 Any thread suspended through
a61af66fc99e Initial load
duke
parents:
diff changeset
1665 a <jvmti/> suspend function (eg.
a61af66fc99e Initial load
duke
parents:
diff changeset
1666 <functionlink id="SuspendThreadList"></functionlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
1667 or <code>java.lang.Thread.suspend()</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
1668 will resume execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
1669 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1670 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1671 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1672 <required id="can_suspend"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1673 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1674 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1675 <param id="request_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
1676 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1677 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1678 The number of threads to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1679 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1680 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1681 <param id="request_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
1682 <inbuf incount="request_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1683 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1684 The threads to resume.
a61af66fc99e Initial load
duke
parents:
diff changeset
1685 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1686 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1687 <param id="results">
a61af66fc99e Initial load
duke
parents:
diff changeset
1688 <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1689 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1690 An agent supplied array of
a61af66fc99e Initial load
duke
parents:
diff changeset
1691 <paramlink id="request_count"></paramlink> elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
1692 On return, filled with the error code for
a61af66fc99e Initial load
duke
parents:
diff changeset
1693 the resume of the corresponding thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1694 The error code will be
a61af66fc99e Initial load
duke
parents:
diff changeset
1695 <errorlink id="JVMTI_ERROR_NONE"></errorlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1696 if the thread was suspended by this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
1697 Possible error codes are those specified
a61af66fc99e Initial load
duke
parents:
diff changeset
1698 for <functionlink id="ResumeThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1699 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1700 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1701 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1702 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1703 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1704 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1705
a61af66fc99e Initial load
duke
parents:
diff changeset
1706 <function id="StopThread" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
1707 <synopsis>Stop Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1708 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1709 Send the specified asynchronous exception to the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1710 (similar to <code>java.lang.Thread.stop</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1711 Normally, this function is used to kill the specified thread with an
a61af66fc99e Initial load
duke
parents:
diff changeset
1712 instance of the exception <code>ThreadDeath</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1713 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1714 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1715 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1716 <required id="can_signal_thread"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1717 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1718 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1719 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1720 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1721 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1722 The thread to stop.
a61af66fc99e Initial load
duke
parents:
diff changeset
1723 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1724 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1725 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
1726 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1727 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1728 The asynchronous exception object.
a61af66fc99e Initial load
duke
parents:
diff changeset
1729 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1730 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1731 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1732 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1733 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1734 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1735
a61af66fc99e Initial load
duke
parents:
diff changeset
1736 <function id="InterruptThread" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
1737 <synopsis>Interrupt Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1738 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1739 Interrupt the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1740 (similar to <code>java.lang.Thread.interrupt</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1741 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1742 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1743 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1744 <required id="can_signal_thread"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1745 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1746 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1747 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1748 <jthread impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1749 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1750 The thread to interrupt.
a61af66fc99e Initial load
duke
parents:
diff changeset
1751 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1752 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1753 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1754 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1755 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1756 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1757
a61af66fc99e Initial load
duke
parents:
diff changeset
1758 <function id="GetThreadInfo" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
1759 <synopsis>Get Thread Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1760 <typedef id="jvmtiThreadInfo" label="Thread information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
1761 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
1762 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1763 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1764 The thread name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
1765 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
1766 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1767 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1768 <field id="priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
1769 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1771 The thread priority. See the thread priority constants:
a61af66fc99e Initial load
duke
parents:
diff changeset
1772 <datalink id="jvmtiThreadPriority"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1773 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1774 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1775 <field id="is_daemon">
a61af66fc99e Initial load
duke
parents:
diff changeset
1776 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1777 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1778 Is this a daemon thread?
a61af66fc99e Initial load
duke
parents:
diff changeset
1779 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1780 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1781 <field id="thread_group">
a61af66fc99e Initial load
duke
parents:
diff changeset
1782 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1783 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1784 The thread group to which this thread belongs.
a61af66fc99e Initial load
duke
parents:
diff changeset
1785 <code>NULL</code> if the thread has died.
a61af66fc99e Initial load
duke
parents:
diff changeset
1786 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1787 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1788 <field id="context_class_loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
1789 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1790 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1791 The context class loader associated with this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1792 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1793 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1794 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
1795 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1796 Get thread information. The fields of the <datalink id="jvmtiThreadInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
1797 are filled in with details of the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1798 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1799 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1800 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1801 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1802 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1803 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1804 <jthread null="current" impl="noconvert" started="maybe"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1805 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1806 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1807 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1808 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1809 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1810 <outptr><struct>jvmtiThreadInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1811 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1812 On return, filled with information describing the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1813 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1814 For JDK 1.1 implementations that don't
a61af66fc99e Initial load
duke
parents:
diff changeset
1815 recognize context class loaders,
a61af66fc99e Initial load
duke
parents:
diff changeset
1816 the <code>context_class_loader</code> field will be NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
1817 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1818 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1819 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1820 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1821 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1822 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1823
a61af66fc99e Initial load
duke
parents:
diff changeset
1824 <function id="GetOwnedMonitorInfo" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
1825 <synopsis>Get Owned Monitor Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1826 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1827 Get information about the monitors owned by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1828 specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1829 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1830 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1831 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1832 <required id="can_get_owned_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1833 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1834 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1835 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1836 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1837 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1838 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1839 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1840 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1841 <param id="owned_monitor_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1842 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1843 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1844 The number of monitors returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1845 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1846 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1847 <param id="owned_monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1848 <allocbuf outcount="owned_monitor_count_ptr"><jobject/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1849 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1850 The array of owned monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
1851 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1852 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1853 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1854 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1855 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1856 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1857
a61af66fc99e Initial load
duke
parents:
diff changeset
1858 <function id="GetOwnedMonitorStackDepthInfo" num="153" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
1859 <synopsis>Get Owned Monitor Stack Depth Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1860 <typedef id="jvmtiMonitorStackDepthInfo"
a61af66fc99e Initial load
duke
parents:
diff changeset
1861 label="Monitor stack depth information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
1862 <field id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
1863 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1864 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1865 The owned monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1866 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1867 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1868 <field id="stack_depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
1869 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1870 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1871 The stack depth. Corresponds to the stack depth used in the
a61af66fc99e Initial load
duke
parents:
diff changeset
1872 <internallink id="stack">Stack Frame functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1873 That is, zero is the current frame, one is the frame which
a61af66fc99e Initial load
duke
parents:
diff changeset
1874 called the current frame. And it is negative one if the
a61af66fc99e Initial load
duke
parents:
diff changeset
1875 implementation cannot determine the stack depth (e.g., for
a61af66fc99e Initial load
duke
parents:
diff changeset
1876 monitors acquired by JNI <code>MonitorEnter</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
1877 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1878 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
1879 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
1880 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1881 Get information about the monitors owned by the
a61af66fc99e Initial load
duke
parents:
diff changeset
1882 specified thread and the depth of the stack frame which locked them.
a61af66fc99e Initial load
duke
parents:
diff changeset
1883 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1884 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1885 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1886 <required id="can_get_owned_monitor_stack_depth_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1887 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1888 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1889 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1890 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1891 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1892 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1893 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1894 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1895 <param id="monitor_info_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1896 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1897 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1898 The number of monitors returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
1899 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1900 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1901 <param id="monitor_info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1902 <allocbuf outcount="owned_monitor_depth_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1903 <struct>jvmtiMonitorStackDepthInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
1904 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
1905 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1906 The array of owned monitor depth information.
a61af66fc99e Initial load
duke
parents:
diff changeset
1907 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1908 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1909 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1910 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1911 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1912 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1913
a61af66fc99e Initial load
duke
parents:
diff changeset
1914 <function id="GetCurrentContendedMonitor" num="11">
a61af66fc99e Initial load
duke
parents:
diff changeset
1915 <synopsis>Get Current Contended Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1916 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1917 Get the object, if any, whose monitor the specified thread is waiting to
a61af66fc99e Initial load
duke
parents:
diff changeset
1918 enter or waiting to regain through <code>java.lang.Object.wait</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1919 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1920 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
1921 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1922 <required id="can_get_current_contended_monitor"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
1923 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
1924 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1925 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
1926 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1927 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1928 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
1929 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1930 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1931 <param id="monitor_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
1932 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1933 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1934 On return, filled with the current contended monitor, or
a61af66fc99e Initial load
duke
parents:
diff changeset
1935 NULL if there is none.
a61af66fc99e Initial load
duke
parents:
diff changeset
1936 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1937 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1938 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1939 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1940 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
1941 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
1942
a61af66fc99e Initial load
duke
parents:
diff changeset
1943 <callback id="jvmtiStartFunction">
a61af66fc99e Initial load
duke
parents:
diff changeset
1944 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1945 <synopsis>Agent Start Function</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1946 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1947 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1948 This function is the entry point for an agent thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1949 started with
a61af66fc99e Initial load
duke
parents:
diff changeset
1950 <functionlink id="RunAgentThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1951 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1952 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1953 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
1954 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1955 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
1956 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1957 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1958 The <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
1959 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1960 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1961 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
1962 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1963 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
1964 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1965 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1966 The JNI environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
1967 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1968 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1969 <param id="arg">
a61af66fc99e Initial load
duke
parents:
diff changeset
1970 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1971 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1972 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
1973 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1974 The <code>arg</code> parameter passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
1975 <functionlink id="RunAgentThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1976 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1977 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
1978 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
1979 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
1980
a61af66fc99e Initial load
duke
parents:
diff changeset
1981 <function id="RunAgentThread" num="12">
a61af66fc99e Initial load
duke
parents:
diff changeset
1982 <synopsis>Run Agent Thread</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
1983 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
1984 Starts the execution of an agent thread. with the specified native function.
a61af66fc99e Initial load
duke
parents:
diff changeset
1985 The parameter <paramlink id="arg"></paramlink> is forwarded on to the
a61af66fc99e Initial load
duke
parents:
diff changeset
1986 <functionlink id="jvmtiStartFunction">start function</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
1987 (specified with <paramlink id="proc"></paramlink>) as its single argument.
a61af66fc99e Initial load
duke
parents:
diff changeset
1988 This function allows the creation of agent threads
a61af66fc99e Initial load
duke
parents:
diff changeset
1989 for handling communication with another process or for handling events
a61af66fc99e Initial load
duke
parents:
diff changeset
1990 without the need to load a special subclass of <code>java.lang.Thread</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
1991 implementer of <code>java.lang.Runnable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
1992 Instead, the created thread can run entirely in native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
1993 However, the created thread does require a newly created instance
a61af66fc99e Initial load
duke
parents:
diff changeset
1994 of <code>java.lang.Thread</code> (referenced by the argument <code>thread</code>) to
a61af66fc99e Initial load
duke
parents:
diff changeset
1995 which it will be associated.
a61af66fc99e Initial load
duke
parents:
diff changeset
1996 The thread object can be created with JNI calls.
a61af66fc99e Initial load
duke
parents:
diff changeset
1997 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
1998 The following common thread priorities are provided for your convenience:
a61af66fc99e Initial load
duke
parents:
diff changeset
1999 <constants id="jvmtiThreadPriority" label="Thread Priority Constants" kind="const">
a61af66fc99e Initial load
duke
parents:
diff changeset
2000 <constant id="JVMTI_THREAD_MIN_PRIORITY" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2001 Minimum possible thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2002 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2003 <constant id="JVMTI_THREAD_NORM_PRIORITY" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
2004 Normal thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2005 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2006 <constant id="JVMTI_THREAD_MAX_PRIORITY" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
2007 Maximum possible thread priority
a61af66fc99e Initial load
duke
parents:
diff changeset
2008 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
2009 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
2010 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2011 The new thread is started as a daemon thread with the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
2012 <paramlink id="priority"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2013 If enabled, a <eventlink id="ThreadStart"/> event will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
2014 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2015 Since the thread has been started, the thread will be live when this function
a61af66fc99e Initial load
duke
parents:
diff changeset
2016 returns, unless the thread has died immediately.
a61af66fc99e Initial load
duke
parents:
diff changeset
2017 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2018 The thread group of the thread is ignored -- specifically, the thread is not
a61af66fc99e Initial load
duke
parents:
diff changeset
2019 added to the thread group and the thread is not seen on queries of the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2020 group at either the Java programming language or <jvmti/> levels.
a61af66fc99e Initial load
duke
parents:
diff changeset
2021 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2022 The thread is not visible to Java programming language queries but is
a61af66fc99e Initial load
duke
parents:
diff changeset
2023 included in <jvmti/> queries (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
2024 <functionlink id="GetAllThreads"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
2025 <functionlink id="GetAllStackTraces"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2026 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2027 Upon execution of <code>proc</code>, the new thread will be attached to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2028 VM--see the JNI documentation on
a61af66fc99e Initial load
duke
parents:
diff changeset
2029 <externallink id="http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/invocation.html#wp1060"
a61af66fc99e Initial load
duke
parents:
diff changeset
2030 >Attaching to the VM</externallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2031 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2032 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2033 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2034 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2035 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2036 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2037 <jthread impl="noconvert" started="no"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2038 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2039 The thread to run.
a61af66fc99e Initial load
duke
parents:
diff changeset
2040 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2041 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2042 <param id="proc">
a61af66fc99e Initial load
duke
parents:
diff changeset
2043 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
2044 <struct>jvmtiStartFunction</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2045 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
2046 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2047 The start function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2048 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2049 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2050 <param id="arg">
a61af66fc99e Initial load
duke
parents:
diff changeset
2051 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2052 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2053 <nullok><code>NULL</code> is passed to the start function</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2054 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2055 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2056 The argument to the start function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2057 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2058 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2059 <param id="priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
2060 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2061 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2062 The priority of the started thread. Any thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2063 priority allowed by <code>java.lang.Thread.setPriority</code> can be used including
a61af66fc99e Initial load
duke
parents:
diff changeset
2064 those in <datalink id="jvmtiThreadPriority"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2065 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2066 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2067 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2068 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2069 <error id="JVMTI_ERROR_INVALID_PRIORITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
2070 <paramlink id="priority"/> is less than
a61af66fc99e Initial load
duke
parents:
diff changeset
2071 <datalink id="JVMTI_THREAD_MIN_PRIORITY"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2072 or greater than
a61af66fc99e Initial load
duke
parents:
diff changeset
2073 <datalink id="JVMTI_THREAD_MAX_PRIORITY"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2074 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2075 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2076 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2077
a61af66fc99e Initial load
duke
parents:
diff changeset
2078 <function id="SetThreadLocalStorage" jkernel="yes" impl="notrace" phase="start" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
2079 <synopsis>Set Thread Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2080 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2081 The VM stores a pointer value associated with each environment-thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2082 pair. This pointer value is called <i>thread-local storage</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2083 This value is <code>NULL</code> unless set with this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2084 Agents can allocate memory in which they store thread specific
a61af66fc99e Initial load
duke
parents:
diff changeset
2085 information. By setting thread-local storage it can then be
a61af66fc99e Initial load
duke
parents:
diff changeset
2086 accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
2087 <functionlink id="GetThreadLocalStorage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2088 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2089 This function is called by the agent to set the value of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2090 thread-local storage. <jvmti/> supplies to the agent a pointer-size
a61af66fc99e Initial load
duke
parents:
diff changeset
2091 thread-local storage that can be used to record per-thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2092 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2093 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2094 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2095 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2096 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2097 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2098 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2099 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2100 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2101 Store to this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2102 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2103 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2104 <param id="data">
a61af66fc99e Initial load
duke
parents:
diff changeset
2105 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2106 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2107 <nullok>value is set to <code>NULL</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2108 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2109 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2110 The value to be entered into the thread-local storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
2111 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2112 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2113 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2114 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2115 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2116 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2117
a61af66fc99e Initial load
duke
parents:
diff changeset
2118 <function id="GetThreadLocalStorage" jkernel="yes" impl="innative notrace" phase="start" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
2119 <synopsis>Get Thread Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2120 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2121 Called by the agent to get the value of the <jvmti/> thread-local
a61af66fc99e Initial load
duke
parents:
diff changeset
2122 storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
2123 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2124 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2125 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2126 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2127 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2128 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2129 <jthread null="current" impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2130 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2131 Retrieve from this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2132 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2133 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2134 <param id="data_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2135 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2136 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2137 Pointer through which the value of the thread local
a61af66fc99e Initial load
duke
parents:
diff changeset
2138 storage is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2139 If thread-local storage has not been set with
a61af66fc99e Initial load
duke
parents:
diff changeset
2140 <functionlink id="SetThreadLocalStorage"></functionlink> the returned
a61af66fc99e Initial load
duke
parents:
diff changeset
2141 pointer is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2142 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2143 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2144 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2145 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2146 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2147 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2148
a61af66fc99e Initial load
duke
parents:
diff changeset
2149 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2150
a61af66fc99e Initial load
duke
parents:
diff changeset
2151 <category id="thread_groups" label="Thread Group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2152 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2153 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2154
a61af66fc99e Initial load
duke
parents:
diff changeset
2155 <function id="GetTopThreadGroups" num="13">
a61af66fc99e Initial load
duke
parents:
diff changeset
2156 <synopsis>Get Top Thread Groups</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2157 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2158 Return all top-level (parentless) thread groups in the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
2159 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2160 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2161 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2162 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2163 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2164 <param id="group_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2165 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2166 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2167 On return, points to the number of top-level thread groups.
a61af66fc99e Initial load
duke
parents:
diff changeset
2168 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2169 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2170 <param id="groups_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2171 <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2172 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2173 On return, refers to a pointer to the top-level thread group array.
a61af66fc99e Initial load
duke
parents:
diff changeset
2174 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2175 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2176 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2177 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2178 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2179 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2180
a61af66fc99e Initial load
duke
parents:
diff changeset
2181 <function id="GetThreadGroupInfo" num="14">
a61af66fc99e Initial load
duke
parents:
diff changeset
2182 <synopsis>Get Thread Group Info</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2183 <typedef id="jvmtiThreadGroupInfo" label="Thread group information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2184 <field id="parent">
a61af66fc99e Initial load
duke
parents:
diff changeset
2185 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2186 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2187 The parent thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2188 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2189 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2190 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
2191 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2192 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2193 The thread group's name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
2194 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
2195 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2196 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2197 <field id="max_priority">
a61af66fc99e Initial load
duke
parents:
diff changeset
2198 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2199 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2200 The maximum priority for this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2201 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2202 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2203 <field id="is_daemon">
a61af66fc99e Initial load
duke
parents:
diff changeset
2204 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2205 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2206 Is this a daemon thread group?
a61af66fc99e Initial load
duke
parents:
diff changeset
2207 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2208 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2209 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2210 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2211 Get information about the thread group. The fields of the
a61af66fc99e Initial load
duke
parents:
diff changeset
2212 <functionlink id="jvmtiThreadGroupInfo"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
2213 are filled in with details of the specified thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2214 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2215 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2216 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2217 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2218 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2219 <param id="group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2220 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2221 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2222 The thread group to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2223 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2224 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2225 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2226 <outptr><struct>jvmtiThreadGroupInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2227 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2228 On return, filled with information describing the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
2229 thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2230 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2231 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2232 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2233 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2234 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2235 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2236
a61af66fc99e Initial load
duke
parents:
diff changeset
2237 <function id="GetThreadGroupChildren" num="15">
a61af66fc99e Initial load
duke
parents:
diff changeset
2238 <synopsis>Get Thread Group Children</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2239 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2240 Get the live threads and active subgroups in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2241 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2242 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2243 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2244 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2245 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2246 <param id="group">
a61af66fc99e Initial load
duke
parents:
diff changeset
2247 <jthreadGroup/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2248 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2249 The group to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2250 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2251 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2252 <param id="thread_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2253 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2254 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2255 On return, points to the number of live threads in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2256 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2257 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2258 <param id="threads_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2259 <allocbuf outcount="thread_count_ptr"><jthread/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2260 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2261 On return, points to an array of the live threads in this thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
2262 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2263 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2264 <param id="group_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2265 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2266 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2267 On return, points to the number of active child thread groups
a61af66fc99e Initial load
duke
parents:
diff changeset
2268 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2269 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2270 <param id="groups_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2271 <allocbuf outcount="group_count_ptr"><jthreadGroup/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2272 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2273 On return, points to an array of the active child thread groups.
a61af66fc99e Initial load
duke
parents:
diff changeset
2274 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2275 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2276 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2277 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2278 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2279 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2280 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2281
a61af66fc99e Initial load
duke
parents:
diff changeset
2282 <category id="stack" label="Stack Frame">
a61af66fc99e Initial load
duke
parents:
diff changeset
2283 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2284 These functions provide information about the stack of a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2285 Stack frames are referenced by depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2286 The frame at depth zero is the current frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2287 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2288 Stack frames are as described in the
a61af66fc99e Initial load
duke
parents:
diff changeset
2289 <vmspeclink id="Overview.doc.html#17257"
a61af66fc99e Initial load
duke
parents:
diff changeset
2290 name="Frames section"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2291 That is, they correspond to method
a61af66fc99e Initial load
duke
parents:
diff changeset
2292 invocations (including native methods) but do not correspond to platform native or
a61af66fc99e Initial load
duke
parents:
diff changeset
2293 VM internal frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
2294 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2295 A <jvmti/> implementation may use method invocations to launch a thread and
a61af66fc99e Initial load
duke
parents:
diff changeset
2296 the corresponding frames may be included in the stack as presented by these functions --
a61af66fc99e Initial load
duke
parents:
diff changeset
2297 that is, there may be frames shown
a61af66fc99e Initial load
duke
parents:
diff changeset
2298 deeper than <code>main()</code> and <code>run()</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2299 However this presentation must be consistent across all <jvmti/> functionality which
a61af66fc99e Initial load
duke
parents:
diff changeset
2300 uses stack frames or stack depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2301 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2302
a61af66fc99e Initial load
duke
parents:
diff changeset
2303 <typedef id="jvmtiFrameInfo" label="Stack frame information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2304 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2305 Information about a stack frame is returned in this structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
2306 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2307 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
2308 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2309 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2310 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2311 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2312 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2313 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
2314 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2315 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2316 The index of the instruction executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2317 <code>-1</code> if the frame is executing a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2318 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2319 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2320 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2321
a61af66fc99e Initial load
duke
parents:
diff changeset
2322 <typedef id="jvmtiStackInfo" label="Stack information structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
2323 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2324 Information about a set of stack frames is returned in this structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
2325 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2326 <field id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2327 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2328 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2329 On return, the thread traced.
a61af66fc99e Initial load
duke
parents:
diff changeset
2330 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2331 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2332 <field id="state">
a61af66fc99e Initial load
duke
parents:
diff changeset
2333 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2334 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2335 On return, the thread state. See <functionlink id="GetThreadState"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2336 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2337 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2338 <field id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2339 <outbuf incount="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2340 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2341 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2342 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2343 On return, this agent allocated buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2344 with stack frame information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2345 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2346 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2347 <field id="frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2348 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2349 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2350 On return, the number of records filled into
a61af66fc99e Initial load
duke
parents:
diff changeset
2351 <code>frame_buffer</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2352 This will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2353 min(<code>max_frame_count</code>, <i>stackDepth</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2354 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2355 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
2356 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
2357
a61af66fc99e Initial load
duke
parents:
diff changeset
2358 <function id="GetStackTrace" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
2359 <synopsis>Get Stack Trace</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2360 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2361 Get information about the stack of a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2362 If <paramlink id="max_frame_count"></paramlink> is less than the depth of the stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2363 the <paramlink id="max_frame_count"></paramlink> topmost frames are returned,
a61af66fc99e Initial load
duke
parents:
diff changeset
2364 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2365 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2366 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2367 The following example causes up to five of the topmost frames
a61af66fc99e Initial load
duke
parents:
diff changeset
2368 to be returned and (if there are any frames) the currently
a61af66fc99e Initial load
duke
parents:
diff changeset
2369 executing method name to be printed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2370 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2371 jvmtiFrameInfo frames[5];
a61af66fc99e Initial load
duke
parents:
diff changeset
2372 jint count;
a61af66fc99e Initial load
duke
parents:
diff changeset
2373 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
2374
a61af66fc99e Initial load
duke
parents:
diff changeset
2375 err = (*jvmti)-&gt;GetStackTrace(jvmti, aThread, 0, 5,
a61af66fc99e Initial load
duke
parents:
diff changeset
2376 &amp;frames, &amp;count);
a61af66fc99e Initial load
duke
parents:
diff changeset
2377 if (err == JVMTI_ERROR_NONE &amp;&amp; count &gt;= 1) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2378 char *methodName;
a61af66fc99e Initial load
duke
parents:
diff changeset
2379 err = (*jvmti)-&gt;GetMethodName(jvmti, frames[0].method,
a61af66fc99e Initial load
duke
parents:
diff changeset
2380 &amp;methodName, NULL);
a61af66fc99e Initial load
duke
parents:
diff changeset
2381 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2382 printf("Executing method: %s", methodName);
a61af66fc99e Initial load
duke
parents:
diff changeset
2383 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2384 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2385 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2386 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2387 check example code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2388 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2389 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2390 The <paramlink id="thread"></paramlink> need not be suspended
a61af66fc99e Initial load
duke
parents:
diff changeset
2391 to call this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2392 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2393 The <functionlink id="GetLineNumberTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2394 function can be used to map locations to line numbers. Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
2395 this mapping can be done lazily.
a61af66fc99e Initial load
duke
parents:
diff changeset
2396 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2397 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2398 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2399 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2400 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2401 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2402 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2403 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2404 Fetch the stack trace of this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2405 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2406 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2407 <param id="start_depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2408 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2409 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2410 Begin retrieving frames at this depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
2411 If non-negative, count from the current frame,
a61af66fc99e Initial load
duke
parents:
diff changeset
2412 the first frame retrieved is at depth <code>start_depth</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2413 For example, if zero, start from the current frame; if one, start from the
a61af66fc99e Initial load
duke
parents:
diff changeset
2414 caller of the current frame; if two, start from the caller of the
a61af66fc99e Initial load
duke
parents:
diff changeset
2415 caller of the current frame; and so on.
a61af66fc99e Initial load
duke
parents:
diff changeset
2416 If negative, count from below the oldest frame,
a61af66fc99e Initial load
duke
parents:
diff changeset
2417 the first frame retrieved is at depth <i>stackDepth</i><code> + start_depth</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2418 where <i>stackDepth</i> is the count of frames on the stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2419 For example, if negative one, only the oldest frame is retrieved;
a61af66fc99e Initial load
duke
parents:
diff changeset
2420 if negative two, start from the frame called by the oldest frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2421 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2422 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2423 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2424 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2425 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2426 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
a61af66fc99e Initial load
duke
parents:
diff changeset
2427 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2428 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2429 <param id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2430 <outbuf incount="max_frame_count" outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2431 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2432 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2433 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2434 On return, this agent allocated buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2435 with stack frame information.
a61af66fc99e Initial load
duke
parents:
diff changeset
2436 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2437 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2438 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2439 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2440 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2441 On return, points to the number of records filled in.
a61af66fc99e Initial load
duke
parents:
diff changeset
2442 For non-negative <code>start_depth</code>, this will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2443 min(<code>max_frame_count</code>, <i>stackDepth</i><code> - start_depth</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2444 For negative <code>start_depth</code>, this will be
a61af66fc99e Initial load
duke
parents:
diff changeset
2445 min(<code>max_frame_count</code>, <code>-start_depth</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2446 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2447 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2448 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2449 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2450 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
2451 <paramlink id="start_depth"/> is positive and greater than or equal to <i>stackDepth</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2452 Or <paramlink id="start_depth"/> is negative and less than <i>-stackDepth</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2453 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2454 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2455 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2456
a61af66fc99e Initial load
duke
parents:
diff changeset
2457
a61af66fc99e Initial load
duke
parents:
diff changeset
2458 <function id="GetAllStackTraces" num="100">
a61af66fc99e Initial load
duke
parents:
diff changeset
2459 <synopsis>Get All Stack Traces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2460 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2461 Get information about the stacks of all live threads
a61af66fc99e Initial load
duke
parents:
diff changeset
2462 (including <internallink id="RunAgentThread">agent threads</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
2463 If <paramlink id="max_frame_count"/> is less than the depth of a stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2464 the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
2465 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2466 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2467 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2468 All stacks are collected simultaneously, that is, no changes will occur to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2469 thread state or stacks between the sampling of one thread and the next.
a61af66fc99e Initial load
duke
parents:
diff changeset
2470 The threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2471
a61af66fc99e Initial load
duke
parents:
diff changeset
2472 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2473 jvmtiStackInfo *stack_info;
a61af66fc99e Initial load
duke
parents:
diff changeset
2474 jint thread_count;
a61af66fc99e Initial load
duke
parents:
diff changeset
2475 int ti;
a61af66fc99e Initial load
duke
parents:
diff changeset
2476 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
2477
a61af66fc99e Initial load
duke
parents:
diff changeset
2478 err = (*jvmti)-&gt;GetAllStackTraces(jvmti, MAX_FRAMES, &amp;stack_info, &amp;thread_count);
a61af66fc99e Initial load
duke
parents:
diff changeset
2479 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2480 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
2481 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2482 for (ti = 0; ti &lt; thread_count; ++ti) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2483 jvmtiStackInfo *infop = &amp;stack_info[ti];
a61af66fc99e Initial load
duke
parents:
diff changeset
2484 jthread thread = infop-&gt;thread;
a61af66fc99e Initial load
duke
parents:
diff changeset
2485 jint state = infop-&gt;state;
a61af66fc99e Initial load
duke
parents:
diff changeset
2486 jvmtiFrameInfo *frames = infop-&gt;frame_buffer;
a61af66fc99e Initial load
duke
parents:
diff changeset
2487 int fi;
a61af66fc99e Initial load
duke
parents:
diff changeset
2488
a61af66fc99e Initial load
duke
parents:
diff changeset
2489 myThreadAndStatePrinter(thread, state);
a61af66fc99e Initial load
duke
parents:
diff changeset
2490 for (fi = 0; fi &lt; infop-&gt;frame_count; fi++) {
a61af66fc99e Initial load
duke
parents:
diff changeset
2491 myFramePrinter(frames[fi].method, frames[fi].location);
a61af66fc99e Initial load
duke
parents:
diff changeset
2492 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2493 }
a61af66fc99e Initial load
duke
parents:
diff changeset
2494 /* this one Deallocate call frees all data allocated by GetAllStackTraces */
a61af66fc99e Initial load
duke
parents:
diff changeset
2495 err = (*jvmti)-&gt;Deallocate(jvmti, stack_info);
a61af66fc99e Initial load
duke
parents:
diff changeset
2496 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
2497 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2498 check example code.
a61af66fc99e Initial load
duke
parents:
diff changeset
2499 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
2500
a61af66fc99e Initial load
duke
parents:
diff changeset
2501 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2502 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2503 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2504 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2505 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2506 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2507 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2508 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2509 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2510 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2511 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2512 <param id="stack_info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2513 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2514 <struct>jvmtiStackInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2515 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2516 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2517 On return, this buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2518 with stack information for each thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2519 The number of <datalink id="jvmtiStackInfo"/> records is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
2520 by <paramlink id="thread_count_ptr"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2521 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2522 Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2523 buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2524 These buffers must not be separately deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2525 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2526 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2527 <param id="thread_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2528 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2529 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2530 The number of threads traced.
a61af66fc99e Initial load
duke
parents:
diff changeset
2531 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2532 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2533 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2534 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2535 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2536 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2537
a61af66fc99e Initial load
duke
parents:
diff changeset
2538 <function id="GetThreadListStackTraces" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
2539 <synopsis>Get Thread List Stack Traces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2540 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2541 Get information about the stacks of the supplied threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
2542 If <paramlink id="max_frame_count"/> is less than the depth of a stack,
a61af66fc99e Initial load
duke
parents:
diff changeset
2543 the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
2544 otherwise the entire stack is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
2545 The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
2546 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2547 All stacks are collected simultaneously, that is, no changes will occur to the
a61af66fc99e Initial load
duke
parents:
diff changeset
2548 thread state or stacks between the sampling one thread and the next.
a61af66fc99e Initial load
duke
parents:
diff changeset
2549 The threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2550 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2551 If a thread has not yet started or terminates before the stack information is collected,
a61af66fc99e Initial load
duke
parents:
diff changeset
2552 a zero length stack (<datalink id="jvmtiStackInfo.frame_count"/> will be zero)
a61af66fc99e Initial load
duke
parents:
diff changeset
2553 will be returned and the thread <datalink id="jvmtiStackInfo.state"/> can be checked.
a61af66fc99e Initial load
duke
parents:
diff changeset
2554 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2555 See the example for the similar function
a61af66fc99e Initial load
duke
parents:
diff changeset
2556 <functionlink id="GetAllStackTraces"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2557 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2558 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2559 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2560 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2561 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2562 <param id="thread_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2563 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2564 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2565 The number of threads to trace.
a61af66fc99e Initial load
duke
parents:
diff changeset
2566 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2567 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2568 <param id="thread_list">
a61af66fc99e Initial load
duke
parents:
diff changeset
2569 <inbuf incount="thread_count"><jthread/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2570 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2571 The list of threads to trace.
a61af66fc99e Initial load
duke
parents:
diff changeset
2572 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2573 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2574 <param id="max_frame_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2575 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2576 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2577 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve per thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2578 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2579 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2580 <param id="stack_info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2581 <allocbuf outcount="thread_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2582 <struct>jvmtiStackInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2583 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2584 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2585 On return, this buffer is filled
a61af66fc99e Initial load
duke
parents:
diff changeset
2586 with stack information for each thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2587 The number of <datalink id="jvmtiStackInfo"/> records is determined
a61af66fc99e Initial load
duke
parents:
diff changeset
2588 by <paramlink id="thread_count"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2589 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2590 Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2591 buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2592 These buffers must not be separately deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2593 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2594 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2595 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2596 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2597 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
2598 An element in <paramlink id="thread_list"/> is not a thread object.
a61af66fc99e Initial load
duke
parents:
diff changeset
2599 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2600 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2601 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2602
a61af66fc99e Initial load
duke
parents:
diff changeset
2603 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
2604 <function id="AsyncGetStackTrace" num="1000">
a61af66fc99e Initial load
duke
parents:
diff changeset
2605 <synopsis>Get Stack Trace--Asynchronous</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2606 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2607 Get information about the entire stack of a thread (or a sub-section of it).
a61af66fc99e Initial load
duke
parents:
diff changeset
2608 This is the asynchronous version of <functionlink id="GetStackTrace"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2609 and is reentrant and safe to call
a61af66fc99e Initial load
duke
parents:
diff changeset
2610 from asynchronous signal handlers.
a61af66fc99e Initial load
duke
parents:
diff changeset
2611 The stack trace is returned only for the calling thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2612 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2613 The <functionlink id="GetLineNumberTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2614 function can be used to map locations to line numbers. Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
2615 this mapping can be done lazily.
a61af66fc99e Initial load
duke
parents:
diff changeset
2616 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2617 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2618 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2619 <required id="can_get_async_stack_trace"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2620 <capability id="can_show_JVM_spec_async_frames">
a61af66fc99e Initial load
duke
parents:
diff changeset
2621 If <code>false</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2622 <paramlink id="use_java_stack"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2623 must be <code>false</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2624 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
2625 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2626 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2627 <param id="use_java_stack">
a61af66fc99e Initial load
duke
parents:
diff changeset
2628 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2629 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2630 Return the stack showing the <vmspeclink/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2631 model of the stack;
a61af66fc99e Initial load
duke
parents:
diff changeset
2632 otherwise, show the internal representation of the stack with
a61af66fc99e Initial load
duke
parents:
diff changeset
2633 inlined and optimized methods missing. If the virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
2634 is using the <i>Java Virtual Machine Specification</i> stack model
a61af66fc99e Initial load
duke
parents:
diff changeset
2635 internally, this flag is ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
2636 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2637 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2638 <param id="max_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
2639 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2640 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2641 The maximum number of <datalink id="jvmtiFrameInfo"/> records to retrieve.
a61af66fc99e Initial load
duke
parents:
diff changeset
2642 Retrieve this many unless the stack depth is less than <code>max_count</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2644 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2645 <param id="frame_buffer">
a61af66fc99e Initial load
duke
parents:
diff changeset
2646 <outbuf incount="max_count" outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2647 <struct>jvmtiFrameInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
2648 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
2649 </outbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
2650 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2651 The agent passes in a buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
2652 large enough to hold <code>max_count</code> records of
a61af66fc99e Initial load
duke
parents:
diff changeset
2653 <datalink id="jvmtiFrameInfo"></datalink>. This buffer must be
a61af66fc99e Initial load
duke
parents:
diff changeset
2654 pre-allocated by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
2655 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2656 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2657 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2658 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2659 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2660 On return, points to the number of records filled in..
a61af66fc99e Initial load
duke
parents:
diff changeset
2661 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2662 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2663 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2664 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2665 <error id="JVMTI_ERROR_UNATTACHED_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
2666 The thread being used to call this function is not attached
a61af66fc99e Initial load
duke
parents:
diff changeset
2667 to the virtual machine. Calls must be made from attached threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
2668 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2669 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2670 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2671 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
2672
a61af66fc99e Initial load
duke
parents:
diff changeset
2673 <function id="GetFrameCount" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
2674 <synopsis>Get Frame Count</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2675 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2676 Get the number of frames currently in the specified thread's call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2677 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2678 If this function is called for a thread actively executing bytecodes (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
2679 not the current thread and not suspended), the information returned is transient.
a61af66fc99e Initial load
duke
parents:
diff changeset
2680 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2681 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2682 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2683 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2684 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2685 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2686 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2687 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2688 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2689 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2690 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2691 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2692 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2693 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2694 On return, points to the number of frames in the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2695 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2696 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2697 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2698 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2699 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2700 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2701
a61af66fc99e Initial load
duke
parents:
diff changeset
2702 <function id="PopFrame" num="80">
a61af66fc99e Initial load
duke
parents:
diff changeset
2703 <synopsis>Pop Frame</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2704 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2705 Pop the current frame of <code>thread</code>'s stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2706 Popping a frame takes you to the previous frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2707 When the thread is resumed, the execution
a61af66fc99e Initial load
duke
parents:
diff changeset
2708 state of the thread is reset to the state
a61af66fc99e Initial load
duke
parents:
diff changeset
2709 immediately before the called method was invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
2710 That is (using the <vmspeclink/> terminology):
a61af66fc99e Initial load
duke
parents:
diff changeset
2711 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2712 <li>the current frame is discarded as the previous frame becomes the current one</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2713 <li>the operand stack is restored--the argument values are added back
a61af66fc99e Initial load
duke
parents:
diff changeset
2714 and if the invoke was not <code>invokestatic</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2715 <code>objectref</code> is added back as well</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2716 <li>the Java virtual machine PC is restored to the opcode
a61af66fc99e Initial load
duke
parents:
diff changeset
2717 of the invoke instruction</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2718 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2719 Note however, that any changes to the arguments, which
a61af66fc99e Initial load
duke
parents:
diff changeset
2720 occurred in the called method, remain;
a61af66fc99e Initial load
duke
parents:
diff changeset
2721 when execution continues, the first instruction to
a61af66fc99e Initial load
duke
parents:
diff changeset
2722 execute will be the invoke.
a61af66fc99e Initial load
duke
parents:
diff changeset
2723 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2724 Between calling <code>PopFrame</code> and resuming the
a61af66fc99e Initial load
duke
parents:
diff changeset
2725 thread the state of the stack is undefined.
a61af66fc99e Initial load
duke
parents:
diff changeset
2726 To pop frames beyond the first,
a61af66fc99e Initial load
duke
parents:
diff changeset
2727 these three steps must be repeated:
a61af66fc99e Initial load
duke
parents:
diff changeset
2728 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2729 <li>suspend the thread via an event (step, breakpoint, ...)</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2730 <li>call <code>PopFrame</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2731 <li>resume the thread</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
2732 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
2733 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2734 A lock acquired by calling the called method
a61af66fc99e Initial load
duke
parents:
diff changeset
2735 (if it is a <code>synchronized</code> method)
a61af66fc99e Initial load
duke
parents:
diff changeset
2736 and locks acquired by entering <code>synchronized</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2737 blocks within the called method are released.
a61af66fc99e Initial load
duke
parents:
diff changeset
2738 Note: this does not apply to native locks or
a61af66fc99e Initial load
duke
parents:
diff changeset
2739 <code>java.util.concurrent.locks</code> locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
2740 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2741 Finally blocks are not executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2742 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2743 Changes to global state are not addressed and thus remain changed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2744 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2745 The specified thread must be suspended (which implies it cannot be the current thread).
a61af66fc99e Initial load
duke
parents:
diff changeset
2746 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2747 Both the called method and calling method must be non-native Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2748 language methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
2749 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2750 No <jvmti/> events are generated by this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
2751 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2752 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2753 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2754 <required id="can_pop_frame"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2755 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2756 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2757 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2758 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2759 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2760 The thread whose current frame is to be popped.
a61af66fc99e Initial load
duke
parents:
diff changeset
2761 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2762 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2763 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2764 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2765 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2766 Called or calling method is a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2767 The implementation is unable to pop this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2768 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2769 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2770 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2771 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2772 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
2773 There are less than two stack frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2774 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2775 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2776 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2777
a61af66fc99e Initial load
duke
parents:
diff changeset
2778 <function id="GetFrameLocation" num="19">
a61af66fc99e Initial load
duke
parents:
diff changeset
2779 <synopsis>Get Frame Location</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2780 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2781 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2782 For a Java programming language frame, return the location of the instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
2783 currently executing.
a61af66fc99e Initial load
duke
parents:
diff changeset
2784 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2785 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2786 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2787 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2788 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2789 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2790 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2791 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2792 The thread of the frame to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2793 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2794 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2795 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2796 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2797 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2798 The depth of the frame to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
2799 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2800 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2801 <param id="method_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2802 <outptr><jmethodID/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2803 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2804 On return, points to the method for the current location.
a61af66fc99e Initial load
duke
parents:
diff changeset
2805 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2806 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2807 <param id="location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
2808 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
2809 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2810 On return, points to the index of the currently
a61af66fc99e Initial load
duke
parents:
diff changeset
2811 executing instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
2812 Is set to <code>-1</code> if the frame is executing
a61af66fc99e Initial load
duke
parents:
diff changeset
2813 a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2814 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2815 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2816 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2817 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2818 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2819 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2820
a61af66fc99e Initial load
duke
parents:
diff changeset
2821 <function id="NotifyFramePop" num="20">
a61af66fc99e Initial load
duke
parents:
diff changeset
2822 <synopsis>Notify Frame Pop</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2823 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2824 When the frame that is currently at <paramlink id="depth"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
2825 is popped from the stack, generate a
a61af66fc99e Initial load
duke
parents:
diff changeset
2826 <eventlink id="FramePop"></eventlink> event. See the
a61af66fc99e Initial load
duke
parents:
diff changeset
2827 <eventlink id="FramePop"></eventlink> event for details.
a61af66fc99e Initial load
duke
parents:
diff changeset
2828 Only frames corresponding to non-native Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
2829 methods can receive notification.
a61af66fc99e Initial load
duke
parents:
diff changeset
2830 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2831 The specified thread must either be the current thread
a61af66fc99e Initial load
duke
parents:
diff changeset
2832 or the thread must be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2833 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2834 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2835 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2836 <required id="can_generate_frame_pop_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2837 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2838 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2839 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2840 <jthread null="current" frame="depth"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2841 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2842 The thread of the frame for which the frame pop event will be generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2843 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2844 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2845 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
2846 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2847 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2848 The depth of the frame for which the frame pop event will be generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
2849 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2850 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2851 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2852 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2853 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2854 The frame at <code>depth</code> is executing a
a61af66fc99e Initial load
duke
parents:
diff changeset
2855 native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2856 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2857 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2858 Thread was not suspended and was not the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2859 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2860 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2861 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2862
a61af66fc99e Initial load
duke
parents:
diff changeset
2863 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
2864
a61af66fc99e Initial load
duke
parents:
diff changeset
2865 <category id="ForceEarlyReturn" label="Force Early Return">
a61af66fc99e Initial load
duke
parents:
diff changeset
2866 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2867 These functions allow an agent to force a method
a61af66fc99e Initial load
duke
parents:
diff changeset
2868 to return at any point during its execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
2869 The method which will return early is referred to as the <i>called method</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2870 The called method is the current method
a61af66fc99e Initial load
duke
parents:
diff changeset
2871 (as defined by the
a61af66fc99e Initial load
duke
parents:
diff changeset
2872 <vmspeclink id="Overview.doc.html#17257"
a61af66fc99e Initial load
duke
parents:
diff changeset
2873 name="Frames section"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
2874 for the specified thread at
a61af66fc99e Initial load
duke
parents:
diff changeset
2875 the time the function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
2876 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2877 The specified thread must be suspended or must be the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2878 The return occurs when execution of Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2879 language code is resumed on this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
2880 Between calling one of these functions and resumption
a61af66fc99e Initial load
duke
parents:
diff changeset
2881 of thread execution, the state of the stack is undefined.
a61af66fc99e Initial load
duke
parents:
diff changeset
2882 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2883 No further instructions are executed in the called method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2884 Specifically, finally blocks are not executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2885 Note: this can cause inconsistent states in the application.
a61af66fc99e Initial load
duke
parents:
diff changeset
2886 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2887 A lock acquired by calling the called method
a61af66fc99e Initial load
duke
parents:
diff changeset
2888 (if it is a <code>synchronized</code> method)
a61af66fc99e Initial load
duke
parents:
diff changeset
2889 and locks acquired by entering <code>synchronized</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2890 blocks within the called method are released.
a61af66fc99e Initial load
duke
parents:
diff changeset
2891 Note: this does not apply to native locks or
a61af66fc99e Initial load
duke
parents:
diff changeset
2892 <code>java.util.concurrent.locks</code> locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
2893 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2894 Events, such as <eventlink id="MethodExit"></eventlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2895 are generated as they would be in a normal return.
a61af66fc99e Initial load
duke
parents:
diff changeset
2896 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2897 The called method must be a non-native Java programming
a61af66fc99e Initial load
duke
parents:
diff changeset
2898 language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2899 Forcing return on a thread with only one frame on the
a61af66fc99e Initial load
duke
parents:
diff changeset
2900 stack causes the thread to exit when resumed.
a61af66fc99e Initial load
duke
parents:
diff changeset
2901 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
2902
a61af66fc99e Initial load
duke
parents:
diff changeset
2903 <function id="ForceEarlyReturnObject" num="81" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2904 <synopsis>Force Early Return - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2905 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2906 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
2907 result type is <code>Object</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
2908 or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2909 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2910 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2911 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2912 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2913 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2914 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2915 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2916 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2917 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2918 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
2919 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2920 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2921 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
2922 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2923 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2924 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2925 An object or <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2926 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2927 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2928 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2929 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2930 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2931 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
2932 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2933 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
2934 this functionality on this frame.
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 result type of the called method is not
a61af66fc99e Initial load
duke
parents:
diff changeset
2938 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2939 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2940 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
2941 The supplied <paramlink id="value"/> is not compatible with the
a61af66fc99e Initial load
duke
parents:
diff changeset
2942 result type of the called method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2943 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2944 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2945 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2946 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2947 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
2948 There are no more frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2949 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2950 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2951 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
2952
a61af66fc99e Initial load
duke
parents:
diff changeset
2953 <function id="ForceEarlyReturnInt" num="82" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
2954 <synopsis>Force Early Return - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
2955 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2956 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
2957 result type is <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2958 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
2959 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2960 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2961 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
2962 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2963 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
2964 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
2965 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2966 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
2967 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2968 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2969 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
2970 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2971 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2972 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
2973 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
2974 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2975 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2976 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
2977 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
2978 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
2979 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2980 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
2981 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
2982 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
2983 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
2984 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
2985 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2986 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
2987 The result type of the called method is not
a61af66fc99e Initial load
duke
parents:
diff changeset
2988 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
2989 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
2990 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
2991 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2992 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
2993 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
2994 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2995 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
2996 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
2997 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
2998 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
2999 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3000
a61af66fc99e Initial load
duke
parents:
diff changeset
3001 <function id="ForceEarlyReturnLong" num="83" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3002 <synopsis>Force Early Return - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3003 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3004 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3005 result type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3006 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3007 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3008 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3009 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3010 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3011 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3012 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3013 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3014 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3015 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3016 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3017 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3018 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3019 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3020 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3021 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3022 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3023 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3024 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3025 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3026 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3027 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3028 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3029 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3030 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3031 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3032 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3033 The result type of the called method is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3034 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3035 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3036 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3037 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3038 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3039 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3040 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3041 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3042 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3043
a61af66fc99e Initial load
duke
parents:
diff changeset
3044 <function id="ForceEarlyReturnFloat" num="84" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3045 <synopsis>Force Early Return - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3046 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3047 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3048 result type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3049 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3050 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3051 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3052 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3053 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3054 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3055 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3056 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3057 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3058 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3059 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3060 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3061 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3062 <jfloat/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3063 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3064 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3065 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3066 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3067 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3068 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3069 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3070 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3071 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3072 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3073 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3074 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3075 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3076 The result type of the called method is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3077 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3078 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3079 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3080 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3081 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3082 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3083 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3084 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3085 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3086
a61af66fc99e Initial load
duke
parents:
diff changeset
3087 <function id="ForceEarlyReturnDouble" num="85" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3088 <synopsis>Force Early Return - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3089 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3090 This function can be used to return from a method whose
a61af66fc99e Initial load
duke
parents:
diff changeset
3091 result type is <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3092 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3093 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3094 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3095 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3096 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3097 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3098 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3099 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3100 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3101 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3102 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3103 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3104 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
3105 <jdouble/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3106 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3107 The return value for the called frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3108 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3109 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3110 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3111 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3112 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3113 Attempted to return early from a frame corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3114 Or the implementation is unable to provide this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3115 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3116 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3117 The result type of the called method is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3118 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3119 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3120 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3121 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3122 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3123 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3124 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3125 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3126 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3127
a61af66fc99e Initial load
duke
parents:
diff changeset
3128 <function id="ForceEarlyReturnVoid" num="86" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3129 <synopsis>Force Early Return - Void</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3130 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3131 This function can be used to return from a method with no result type.
a61af66fc99e Initial load
duke
parents:
diff changeset
3132 That is, the called method must be declared <code>void</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3133 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3134 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
3135 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3136 <required id="can_force_early_return"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
3137 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
3138 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3139 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
3140 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3141 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3142 The thread whose current frame is to return early.
a61af66fc99e Initial load
duke
parents:
diff changeset
3143 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3144 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3145 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3146 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3147 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
3148 Attempted to return early from a frame
a61af66fc99e Initial load
duke
parents:
diff changeset
3149 corresponding to a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
3150 Or the implementation is unable to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
3151 this functionality on this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3152 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3153 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
3154 The called method has a result type.
a61af66fc99e Initial load
duke
parents:
diff changeset
3155 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3156 <error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
3157 Thread was not the current thread and was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
3158 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3159 <error id="JVMTI_ERROR_NO_MORE_FRAMES">
a61af66fc99e Initial load
duke
parents:
diff changeset
3160 There are no frames on the call stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3161 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
3162 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
3163 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
3164
a61af66fc99e Initial load
duke
parents:
diff changeset
3165 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
3166
a61af66fc99e Initial load
duke
parents:
diff changeset
3167 <category id="Heap" label="Heap">
a61af66fc99e Initial load
duke
parents:
diff changeset
3168 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3169 These functions are used to analyze the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
3170 Functionality includes the ability to view the objects in the
a61af66fc99e Initial load
duke
parents:
diff changeset
3171 heap and to tag these objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
3172 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3173
a61af66fc99e Initial load
duke
parents:
diff changeset
3174 <intro id="objectTags" label="Object Tags">
a61af66fc99e Initial load
duke
parents:
diff changeset
3175 A <i>tag</i> is a value associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3176 Tags are explicitly set by the agent using the
a61af66fc99e Initial load
duke
parents:
diff changeset
3177 <functionlink id="SetTag"></functionlink> function or by
a61af66fc99e Initial load
duke
parents:
diff changeset
3178 callback functions such as <functionlink id="jvmtiHeapIterationCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3179 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3180 Tags are local to the environment; that is, the tags of one
a61af66fc99e Initial load
duke
parents:
diff changeset
3181 environment are not visible in another.
a61af66fc99e Initial load
duke
parents:
diff changeset
3182 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3183 Tags are <code>jlong</code> values which can be used
a61af66fc99e Initial load
duke
parents:
diff changeset
3184 simply to mark an object or to store a pointer to more detailed
a61af66fc99e Initial load
duke
parents:
diff changeset
3185 information. Objects which have not been tagged have a
a61af66fc99e Initial load
duke
parents:
diff changeset
3186 tag of zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
3187 Setting a tag to zero makes the object untagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3188 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3189
a61af66fc99e Initial load
duke
parents:
diff changeset
3190 <intro id="heapCallbacks" label="Heap Callback Functions">
a61af66fc99e Initial load
duke
parents:
diff changeset
3191 Heap functions which iterate through the heap and recursively
a61af66fc99e Initial load
duke
parents:
diff changeset
3192 follow object references use agent supplied callback functions
a61af66fc99e Initial load
duke
parents:
diff changeset
3193 to deliver the information.
a61af66fc99e Initial load
duke
parents:
diff changeset
3194 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3195 These heap callback functions must adhere to the following restrictions --
a61af66fc99e Initial load
duke
parents:
diff changeset
3196 These callbacks must not use JNI functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
3197 These callbacks must not use <jvmti/> functions except
a61af66fc99e Initial load
duke
parents:
diff changeset
3198 <i>callback safe</i> functions which
a61af66fc99e Initial load
duke
parents:
diff changeset
3199 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
3200 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
3201 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3202 An implementation may invoke a callback on an internal thread or
a61af66fc99e Initial load
duke
parents:
diff changeset
3203 the thread which called the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3204 Heap callbacks are single threaded -- no more than one callback will
a61af66fc99e Initial load
duke
parents:
diff changeset
3205 be invoked at a time.
a61af66fc99e Initial load
duke
parents:
diff changeset
3206 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3207 The Heap Filter Flags can be used to prevent reporting
a61af66fc99e Initial load
duke
parents:
diff changeset
3208 based on the tag status of an object or its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3209 If no flags are set (the <code>jint</code> is zero), objects
a61af66fc99e Initial load
duke
parents:
diff changeset
3210 will not be filtered out.
a61af66fc99e Initial load
duke
parents:
diff changeset
3211
a61af66fc99e Initial load
duke
parents:
diff changeset
3212 <constants id="jvmtiHeapFilter" label="Heap Filter Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
3213 <constant id="JVMTI_HEAP_FILTER_TAGGED" num="0x4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3214 Filter out tagged objects. Objects which are tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3215 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3216 <constant id="JVMTI_HEAP_FILTER_UNTAGGED" num="0x8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3217 Filter out untagged objects. Objects which are not tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3218 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3219 <constant id="JVMTI_HEAP_FILTER_CLASS_TAGGED" num="0x10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3220 Filter out objects with tagged classes. Objects whose class is tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3221 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3222 <constant id="JVMTI_HEAP_FILTER_CLASS_UNTAGGED" num="0x20">
a61af66fc99e Initial load
duke
parents:
diff changeset
3223 Filter out objects with untagged classes. Objects whose class is not tagged are not included.
a61af66fc99e Initial load
duke
parents:
diff changeset
3224 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3225 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3226
a61af66fc99e Initial load
duke
parents:
diff changeset
3227 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3228 The Heap Visit Control Flags are returned by the heap callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
3229 and can be used to abort the iteration. For the
a61af66fc99e Initial load
duke
parents:
diff changeset
3230 <functionlink id="jvmtiHeapReferenceCallback">Heap
a61af66fc99e Initial load
duke
parents:
diff changeset
3231 Reference Callback</functionlink>, it can also be used
a61af66fc99e Initial load
duke
parents:
diff changeset
3232 to prune the graph of traversed references
a61af66fc99e Initial load
duke
parents:
diff changeset
3233 (<code>JVMTI_VISIT_OBJECTS</code> is not set).
a61af66fc99e Initial load
duke
parents:
diff changeset
3234
a61af66fc99e Initial load
duke
parents:
diff changeset
3235 <constants id="jvmtiHeapVisitControl"
a61af66fc99e Initial load
duke
parents:
diff changeset
3236 label="Heap Visit Control Flags"
a61af66fc99e Initial load
duke
parents:
diff changeset
3237 kind="bits"
a61af66fc99e Initial load
duke
parents:
diff changeset
3238 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3239 <constant id="JVMTI_VISIT_OBJECTS" num="0x100">
a61af66fc99e Initial load
duke
parents:
diff changeset
3240 If we are visiting an object and if this callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3241 was initiated by <functionlink id="FollowReferences"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3242 traverse the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3243 Otherwise ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
3244 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3245 <constant id="JVMTI_VISIT_ABORT" num="0x8000">
a61af66fc99e Initial load
duke
parents:
diff changeset
3246 Abort the iteration. Ignore all other bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
3247 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3248 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3249
a61af66fc99e Initial load
duke
parents:
diff changeset
3250 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3251 The Heap Reference Enumeration is provided by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3252 <functionlink id="jvmtiHeapReferenceCallback">Heap
a61af66fc99e Initial load
duke
parents:
diff changeset
3253 Reference Callback</functionlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
3254 <functionlink id="jvmtiPrimitiveFieldCallback">Primitive Field
a61af66fc99e Initial load
duke
parents:
diff changeset
3255 Callback</functionlink> to
a61af66fc99e Initial load
duke
parents:
diff changeset
3256 describe the kind of reference
a61af66fc99e Initial load
duke
parents:
diff changeset
3257 being reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
3258
a61af66fc99e Initial load
duke
parents:
diff changeset
3259 <constants id="jvmtiHeapReferenceKind"
a61af66fc99e Initial load
duke
parents:
diff changeset
3260 label="Heap Reference Enumeration"
a61af66fc99e Initial load
duke
parents:
diff changeset
3261 kind="enum"
a61af66fc99e Initial load
duke
parents:
diff changeset
3262 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3263 <constant id="JVMTI_HEAP_REFERENCE_CLASS" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3264 Reference from an object to its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3265 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3266 <constant id="JVMTI_HEAP_REFERENCE_FIELD" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
3267 Reference from an object to the value of one of its instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
3268 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3269 <constant id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
3270 Reference from an array to one of its elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
3271 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3272 <constant id="JVMTI_HEAP_REFERENCE_CLASS_LOADER" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
3273 Reference from a class to its class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
3274 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3275 <constant id="JVMTI_HEAP_REFERENCE_SIGNERS" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3276 Reference from a class to its signers array.
a61af66fc99e Initial load
duke
parents:
diff changeset
3277 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3278 <constant id="JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3279 Reference from a class to its protection domain.
a61af66fc99e Initial load
duke
parents:
diff changeset
3280 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3281 <constant id="JVMTI_HEAP_REFERENCE_INTERFACE" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3282 Reference from a class to one of its interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
3283 Note: interfaces are defined via a constant pool reference,
a61af66fc99e Initial load
duke
parents:
diff changeset
3284 so the referenced interfaces may also be reported with a
a61af66fc99e Initial load
duke
parents:
diff changeset
3285 <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
3286 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3287 <constant id="JVMTI_HEAP_REFERENCE_STATIC_FIELD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3288 Reference from a class to the value of one of its static fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
3289 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3290 <constant id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
3291 Reference from a class to a resolved entry in the constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
3292 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3293 <constant id="JVMTI_HEAP_REFERENCE_SUPERCLASS" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3294 Reference from a class to its superclass.
a61af66fc99e Initial load
duke
parents:
diff changeset
3295 A callback is bot sent if the superclass is <code>java.lang.Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3296 Note: loaded classes define superclasses via a constant pool
a61af66fc99e Initial load
duke
parents:
diff changeset
3297 reference, so the referenced superclass may also be reported with
a61af66fc99e Initial load
duke
parents:
diff changeset
3298 a <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
3299 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3300 <constant id="JVMTI_HEAP_REFERENCE_JNI_GLOBAL" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
3301 Heap root reference: JNI global reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3302 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3303 <constant id="JVMTI_HEAP_REFERENCE_SYSTEM_CLASS" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
3304 Heap root reference: System class.
a61af66fc99e Initial load
duke
parents:
diff changeset
3305 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3306 <constant id="JVMTI_HEAP_REFERENCE_MONITOR" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
3307 Heap root reference: monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
3308 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3309 <constant id="JVMTI_HEAP_REFERENCE_STACK_LOCAL" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
3310 Heap root reference: local variable on the stack.
a61af66fc99e Initial load
duke
parents:
diff changeset
3311 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3312 <constant id="JVMTI_HEAP_REFERENCE_JNI_LOCAL" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
3313 Heap root reference: JNI local reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3314 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3315 <constant id="JVMTI_HEAP_REFERENCE_THREAD" num="26">
a61af66fc99e Initial load
duke
parents:
diff changeset
3316 Heap root reference: Thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
3317 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3318 <constant id="JVMTI_HEAP_REFERENCE_OTHER" num="27">
a61af66fc99e Initial load
duke
parents:
diff changeset
3319 Heap root reference: other heap root reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3320 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3321 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3322
a61af66fc99e Initial load
duke
parents:
diff changeset
3323 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3324 Definitions for the single character type descriptors of
a61af66fc99e Initial load
duke
parents:
diff changeset
3325 primitive types.
a61af66fc99e Initial load
duke
parents:
diff changeset
3326
a61af66fc99e Initial load
duke
parents:
diff changeset
3327 <constants id="jvmtiPrimitiveType"
a61af66fc99e Initial load
duke
parents:
diff changeset
3328 label="Primitive Type Enumeration"
a61af66fc99e Initial load
duke
parents:
diff changeset
3329 kind="enum"
a61af66fc99e Initial load
duke
parents:
diff changeset
3330 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3331 <constant id="JVMTI_PRIMITIVE_TYPE_BOOLEAN" num="90">
a61af66fc99e Initial load
duke
parents:
diff changeset
3332 'Z' - Java programming language <code>boolean</code> - JNI <code>jboolean</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3333 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3334 <constant id="JVMTI_PRIMITIVE_TYPE_BYTE" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
3335 'B' - Java programming language <code>byte</code> - JNI <code>jbyte</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3336 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3337 <constant id="JVMTI_PRIMITIVE_TYPE_CHAR" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
3338 'C' - Java programming language <code>char</code> - JNI <code>jchar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3339 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3340 <constant id="JVMTI_PRIMITIVE_TYPE_SHORT" num="83">
a61af66fc99e Initial load
duke
parents:
diff changeset
3341 'S' - Java programming language <code>short</code> - JNI <code>jshort</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3342 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3343 <constant id="JVMTI_PRIMITIVE_TYPE_INT" num="73">
a61af66fc99e Initial load
duke
parents:
diff changeset
3344 'I' - Java programming language <code>int</code> - JNI <code>jint</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3345 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3346 <constant id="JVMTI_PRIMITIVE_TYPE_LONG" num="74">
a61af66fc99e Initial load
duke
parents:
diff changeset
3347 'J' - Java programming language <code>long</code> - JNI <code>jlong</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3348 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3349 <constant id="JVMTI_PRIMITIVE_TYPE_FLOAT" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
3350 'F' - Java programming language <code>float</code> - JNI <code>jfloat</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3351 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3352 <constant id="JVMTI_PRIMITIVE_TYPE_DOUBLE" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
3353 'D' - Java programming language <code>double</code> - JNI <code>jdouble</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3354 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
3355 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
3356 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3357
a61af66fc99e Initial load
duke
parents:
diff changeset
3358 <typedef id="jvmtiHeapReferenceInfoField"
a61af66fc99e Initial load
duke
parents:
diff changeset
3359 label="Reference information structure for Field references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3360 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3361 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3362 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3363 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
3364 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3365 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3366 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3367 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3368 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3369 For <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>, the
a61af66fc99e Initial load
duke
parents:
diff changeset
3370 referrer object is not a class or an inteface.
a61af66fc99e Initial load
duke
parents:
diff changeset
3371 In this case, <code>index</code> is the index of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3372 in the class of the referrer object.
a61af66fc99e Initial load
duke
parents:
diff changeset
3373 This class is referred to below as <i>C</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3374 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3375 For <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3376 the referrer object is a class (referred to below as <i>C</i>)
a61af66fc99e Initial load
duke
parents:
diff changeset
3377 or an interface (referred to below as <i>I</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
3378 In this case, <code>index</code> is the index of the field in
a61af66fc99e Initial load
duke
parents:
diff changeset
3379 that class or interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
3380 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3381 If the referrer object is not an interface, then the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3382 indices are determined as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
3383 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3384 <li>make a list of all the fields in <i>C</i> and its
a61af66fc99e Initial load
duke
parents:
diff changeset
3385 superclasses, starting with all the fields in
a61af66fc99e Initial load
duke
parents:
diff changeset
3386 <code>java.lang.Object</code> and ending with all the
a61af66fc99e Initial load
duke
parents:
diff changeset
3387 fields in <i>C</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3388 <li>Within this list, put
a61af66fc99e Initial load
duke
parents:
diff changeset
3389 the fields for a given class in the order returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
3390 <functionlink id="GetClassFields"/>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3391 <li>Assign the fields in this list indices
a61af66fc99e Initial load
duke
parents:
diff changeset
3392 <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
3393 is the count of the fields in all the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3394 implemented by <i>C</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3395 Note that <i>C</i> implements all interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3396 directly implemented by its superclasses; as well
a61af66fc99e Initial load
duke
parents:
diff changeset
3397 as all superinterfaces of these interfaces.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3398 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3399 If the referrer object is an interface, then the field
a61af66fc99e Initial load
duke
parents:
diff changeset
3400 indices are determined as follows:
a61af66fc99e Initial load
duke
parents:
diff changeset
3401 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3402 <li>make a list of the fields directly declared in
a61af66fc99e Initial load
duke
parents:
diff changeset
3403 <i>I</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3404 <li>Within this list, put
a61af66fc99e Initial load
duke
parents:
diff changeset
3405 the fields in the order returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
3406 <functionlink id="GetClassFields"/>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3407 <li>Assign the fields in this list indices
a61af66fc99e Initial load
duke
parents:
diff changeset
3408 <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
3409 is the count of the fields in all the superinterfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3410 of <i>I</i>.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
3411 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
3412 All fields are included in this computation, regardless of
a61af66fc99e Initial load
duke
parents:
diff changeset
3413 field modifier (static, public, private, etc).
a61af66fc99e Initial load
duke
parents:
diff changeset
3414 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3415 For example, given the following classes and interfaces:
a61af66fc99e Initial load
duke
parents:
diff changeset
3416 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
3417 interface I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3418 int p = 0;
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 I1 extends I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3422 int x = 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
3423 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3424
a61af66fc99e Initial load
duke
parents:
diff changeset
3425 interface I2 extends I0 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3426 int y = 2;
a61af66fc99e Initial load
duke
parents:
diff changeset
3427 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3428
a61af66fc99e Initial load
duke
parents:
diff changeset
3429 class C1 implements I1 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3430 public static int a = 3;
a61af66fc99e Initial load
duke
parents:
diff changeset
3431 private int b = 4;
a61af66fc99e Initial load
duke
parents:
diff changeset
3432 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3433
a61af66fc99e Initial load
duke
parents:
diff changeset
3434 class C2 extends C1 implements I2 {
a61af66fc99e Initial load
duke
parents:
diff changeset
3435 static int q = 5;
a61af66fc99e Initial load
duke
parents:
diff changeset
3436 final int r = 6;
a61af66fc99e Initial load
duke
parents:
diff changeset
3437 }
a61af66fc99e Initial load
duke
parents:
diff changeset
3438 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
3439 Assume that <functionlink id="GetClassFields"/> called on
a61af66fc99e Initial load
duke
parents:
diff changeset
3440 <code>C1</code> returns the fields of <code>C1</code> in the
a61af66fc99e Initial load
duke
parents:
diff changeset
3441 order: a, b; and that the fields of <code>C2</code> are
a61af66fc99e Initial load
duke
parents:
diff changeset
3442 returned in the order: q, r.
a61af66fc99e Initial load
duke
parents:
diff changeset
3443 An instance of class <code>C1</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3444 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3445 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3446 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3447 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3448 a
a61af66fc99e Initial load
duke
parents:
diff changeset
3449 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3450 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3451 2
a61af66fc99e Initial load
duke
parents:
diff changeset
3452 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3453 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3454 The count of the fields in the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3455 implemented by <code>C1</code> is two (<i>n</i>=2):
a61af66fc99e Initial load
duke
parents:
diff changeset
3456 <code>p</code> of <code>I0</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3457 and <code>x</code> of <code>I1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3458 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3459 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3460 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3461 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3462 b
a61af66fc99e Initial load
duke
parents:
diff changeset
3463 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3464 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3465 3
a61af66fc99e Initial load
duke
parents:
diff changeset
3466 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3467 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3468 the subsequent index.
a61af66fc99e Initial load
duke
parents:
diff changeset
3469 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3470 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3471 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3472 The class <code>C1</code> will have the same field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
3473 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3474 An instance of class <code>C2</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3475 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3476 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3477 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3478 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3479 a
a61af66fc99e Initial load
duke
parents:
diff changeset
3480 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3481 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3482 3
a61af66fc99e Initial load
duke
parents:
diff changeset
3483 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3484 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3485 The count of the fields in the interfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3486 implemented by <code>C2</code> is three (<i>n</i>=3):
a61af66fc99e Initial load
duke
parents:
diff changeset
3487 <code>p</code> of <code>I0</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
3488 <code>x</code> of <code>I1</code> and <code>y</code> of <code>I2</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3489 (an interface of <code>C2</code>). Note that the field <code>p</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3490 of <code>I0</code> is only included once.
a61af66fc99e Initial load
duke
parents:
diff changeset
3491 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3492 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3493 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3494 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3495 b
a61af66fc99e Initial load
duke
parents:
diff changeset
3496 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3497 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3498 4
a61af66fc99e Initial load
duke
parents:
diff changeset
3499 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3500 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3501 the subsequent index to "a".
a61af66fc99e Initial load
duke
parents:
diff changeset
3502 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3503 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3504 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3505 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3506 q
a61af66fc99e Initial load
duke
parents:
diff changeset
3507 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3508 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3509 5
a61af66fc99e Initial load
duke
parents:
diff changeset
3510 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3511 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3512 the subsequent index to "b".
a61af66fc99e Initial load
duke
parents:
diff changeset
3513 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3514 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3515 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3516 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3517 r
a61af66fc99e Initial load
duke
parents:
diff changeset
3518 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3519 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3520 6
a61af66fc99e Initial load
duke
parents:
diff changeset
3521 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3522 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3523 the subsequent index to "q".
a61af66fc99e Initial load
duke
parents:
diff changeset
3524 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3525 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3526 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3527 The class <code>C2</code> will have the same field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
3528 Note that a field may have a different index depending on the
a61af66fc99e Initial load
duke
parents:
diff changeset
3529 object that is viewing it -- for example field "a" above.
a61af66fc99e Initial load
duke
parents:
diff changeset
3530 Note also: not all field indices may be visible from the
a61af66fc99e Initial load
duke
parents:
diff changeset
3531 callbacks, but all indices are shown for illustrative purposes.
a61af66fc99e Initial load
duke
parents:
diff changeset
3532 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3533 The interface <code>I1</code> will have the
a61af66fc99e Initial load
duke
parents:
diff changeset
3534 following field indices:
a61af66fc99e Initial load
duke
parents:
diff changeset
3535 <dl><dd><table>
a61af66fc99e Initial load
duke
parents:
diff changeset
3536 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3537 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3538 x
a61af66fc99e Initial load
duke
parents:
diff changeset
3539 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3540 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3541 1
a61af66fc99e Initial load
duke
parents:
diff changeset
3542 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3543 <td align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
3544 The count of the fields in the superinterfaces
a61af66fc99e Initial load
duke
parents:
diff changeset
3545 of <code>I1</code> is one (<i>n</i>=1):
a61af66fc99e Initial load
duke
parents:
diff changeset
3546 <code>p</code> of <code>I0</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3547 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
3548 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3549 </table></dd></dl>
a61af66fc99e Initial load
duke
parents:
diff changeset
3550 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3551 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3552 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3553
a61af66fc99e Initial load
duke
parents:
diff changeset
3554 <typedef id="jvmtiHeapReferenceInfoArray"
a61af66fc99e Initial load
duke
parents:
diff changeset
3555 label="Reference information structure for Array references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3556 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3557 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3558 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3559 <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3560 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3561 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3562 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3563 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3564 The array index.
a61af66fc99e Initial load
duke
parents:
diff changeset
3565 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3566 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3567 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3568
a61af66fc99e Initial load
duke
parents:
diff changeset
3569 <typedef id="jvmtiHeapReferenceInfoConstantPool"
a61af66fc99e Initial load
duke
parents:
diff changeset
3570 label="Reference information structure for Constant Pool references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3571 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3572 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3573 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3574 <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3575 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3576 <field id="index">
a61af66fc99e Initial load
duke
parents:
diff changeset
3577 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3578 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3579 The index into the constant pool of the class. See the
a61af66fc99e Initial load
duke
parents:
diff changeset
3580 <vmspeclink id="ClassFile.doc.html#20080"
a61af66fc99e Initial load
duke
parents:
diff changeset
3581 name="Constant Pool section"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3582 description.
a61af66fc99e Initial load
duke
parents:
diff changeset
3583 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3584 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3585 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3586
a61af66fc99e Initial load
duke
parents:
diff changeset
3587 <typedef id="jvmtiHeapReferenceInfoStackLocal"
a61af66fc99e Initial load
duke
parents:
diff changeset
3588 label="Reference information structure for Local Variable references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3589 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3590 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3591 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3592 <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3593 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3594 <field id="thread_tag">
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 tag of the thread corresponding to this stack, zero if not tagged.
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="thread_id">
a61af66fc99e Initial load
duke
parents:
diff changeset
3601 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3602 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3603 The unique thread ID of the thread corresponding to this stack.
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="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
3607 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3608 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3609 The depth of the 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="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
3613 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3614 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3615 The method executing 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="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
3619 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3620 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3621 The currently executing location in this frame.
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 <field id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
3625 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3626 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3627 The slot number of the local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
3628 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3629 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3630 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3631
a61af66fc99e Initial load
duke
parents:
diff changeset
3632 <typedef id="jvmtiHeapReferenceInfoJniLocal"
a61af66fc99e Initial load
duke
parents:
diff changeset
3633 label="Reference information structure for JNI local references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3634 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3635 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3636 Reference information returned for
a61af66fc99e Initial load
duke
parents:
diff changeset
3637 <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3638 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3639 <field id="thread_tag">
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 tag of the thread corresponding to this stack, zero if not tagged.
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="thread_id">
a61af66fc99e Initial load
duke
parents:
diff changeset
3646 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3647 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3648 The unique thread ID of the thread corresponding to this stack.
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="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
3652 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3653 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3654 The depth of the 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 <field id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
3658 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3659 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3660 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
3661 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3662 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3663 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3664
a61af66fc99e Initial load
duke
parents:
diff changeset
3665 <typedef id="jvmtiHeapReferenceInfoReserved"
a61af66fc99e Initial load
duke
parents:
diff changeset
3666 label="Reference information structure for Other references"
a61af66fc99e Initial load
duke
parents:
diff changeset
3667 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3668 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3669 Reference information returned for other references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3670 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3671 <field id="reserved1">
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="reserved2">
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="reserved3">
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="reserved4">
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="reserved5">
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="reserved6">
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="reserved7">
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 <field id="reserved8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3714 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3715 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3716 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3717 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3718 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3719 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3720
a61af66fc99e Initial load
duke
parents:
diff changeset
3721 <uniontypedef id="jvmtiHeapReferenceInfo"
a61af66fc99e Initial load
duke
parents:
diff changeset
3722 label="Reference information structure"
a61af66fc99e Initial load
duke
parents:
diff changeset
3723 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3724 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3725 The information returned about referrers.
a61af66fc99e Initial load
duke
parents:
diff changeset
3726 Represented as a union of the various kinds of reference information.
a61af66fc99e Initial load
duke
parents:
diff changeset
3727 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3728 <field id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
3729 <struct>jvmtiHeapReferenceInfoField</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3730 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3731 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3732 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3733 and <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3734 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3735 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3736 <field id="array">
a61af66fc99e Initial load
duke
parents:
diff changeset
3737 <struct>jvmtiHeapReferenceInfoArray</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3738 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3739 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3740 For <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3741 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3742 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3743 <field id="constant_pool">
a61af66fc99e Initial load
duke
parents:
diff changeset
3744 <struct>jvmtiHeapReferenceInfoConstantPool</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3745 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3746 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3747 For <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3748 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3749 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3750 <field id="stack_local">
a61af66fc99e Initial load
duke
parents:
diff changeset
3751 <struct>jvmtiHeapReferenceInfoStackLocal</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3752 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3753 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3754 For <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
a61af66fc99e Initial load
duke
parents:
diff changeset
3755 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3756 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3757 <field id="jni_local">
a61af66fc99e Initial load
duke
parents:
diff changeset
3758 <struct>jvmtiHeapReferenceInfoJniLocal</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3759 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3760 The referrer information for
a61af66fc99e Initial load
duke
parents:
diff changeset
3761 For <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
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 <field id="other">
a61af66fc99e Initial load
duke
parents:
diff changeset
3765 <struct>jvmtiHeapReferenceInfoReserved</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3766 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3767 reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
3768 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3769 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3770 </uniontypedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3771
a61af66fc99e Initial load
duke
parents:
diff changeset
3772 <typedef id="jvmtiHeapCallbacks"
a61af66fc99e Initial load
duke
parents:
diff changeset
3773 label="Heap callback function structure"
a61af66fc99e Initial load
duke
parents:
diff changeset
3774 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3775 <field id="heap_iteration_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3776 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3777 <struct>jvmtiHeapIterationCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3778 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3779 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3780 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3781 object in the heap. Used by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3782 <functionlink id="IterateThroughHeap"/> function, ignored by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3783 <functionlink id="FollowReferences"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3784 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3785 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3786 <field id="heap_reference_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3787 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3788 <struct>jvmtiHeapReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3789 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3790 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3791 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3792 object reference. Used by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3793 <functionlink id="FollowReferences"/> function, ignored by the
a61af66fc99e Initial load
duke
parents:
diff changeset
3794 <functionlink id="IterateThroughHeap"/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3795 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3796 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3797 <field id="primitive_field_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3798 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3799 <struct>jvmtiPrimitiveFieldCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3800 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3801 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3802 The callback to be called to describe a
a61af66fc99e Initial load
duke
parents:
diff changeset
3803 primitive field.
a61af66fc99e Initial load
duke
parents:
diff changeset
3804 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3805 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3806 <field id="array_primitive_value_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3807 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3808 <struct>jvmtiArrayPrimitiveValueCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3809 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3810 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3811 The callback to be called to describe an
a61af66fc99e Initial load
duke
parents:
diff changeset
3812 array of primitive values.
a61af66fc99e Initial load
duke
parents:
diff changeset
3813 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3814 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3815 <field id="string_primitive_value_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
3816 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3817 <struct>jvmtiStringPrimitiveValueCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3818 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3819 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3820 The callback to be called to describe a String value.
a61af66fc99e Initial load
duke
parents:
diff changeset
3821 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3822 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3823 <field id="reserved5">
a61af66fc99e Initial load
duke
parents:
diff changeset
3824 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3825 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3826 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3827 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3828 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3829 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3830 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3831 <field id="reserved6">
a61af66fc99e Initial load
duke
parents:
diff changeset
3832 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3833 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3834 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3835 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3836 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3837 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3838 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3839 <field id="reserved7">
a61af66fc99e Initial load
duke
parents:
diff changeset
3840 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3841 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3842 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3843 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3844 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3845 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3846 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3847 <field id="reserved8">
a61af66fc99e Initial load
duke
parents:
diff changeset
3848 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3849 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3850 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3851 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3852 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3853 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3854 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3855 <field id="reserved9">
a61af66fc99e Initial load
duke
parents:
diff changeset
3856 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3857 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3858 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3859 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3860 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3861 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3862 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3863 <field id="reserved10">
a61af66fc99e Initial load
duke
parents:
diff changeset
3864 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3865 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3866 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3867 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3868 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3869 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3870 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3871 <field id="reserved11">
a61af66fc99e Initial load
duke
parents:
diff changeset
3872 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3873 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3874 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3875 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3876 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3877 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3878 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3879 <field id="reserved12">
a61af66fc99e Initial load
duke
parents:
diff changeset
3880 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3881 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3882 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3883 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3884 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3885 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3886 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3887 <field id="reserved13">
a61af66fc99e Initial load
duke
parents:
diff changeset
3888 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3889 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3890 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3891 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3892 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3893 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3894 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3895 <field id="reserved14">
a61af66fc99e Initial load
duke
parents:
diff changeset
3896 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3897 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3898 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3899 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3900 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3901 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3902 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3903 <field id="reserved15">
a61af66fc99e Initial load
duke
parents:
diff changeset
3904 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3905 <struct>jvmtiReservedCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
3906 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
3907 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3908 Reserved for future use..
a61af66fc99e Initial load
duke
parents:
diff changeset
3909 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3910 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
3911 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
3912
a61af66fc99e Initial load
duke
parents:
diff changeset
3913
a61af66fc99e Initial load
duke
parents:
diff changeset
3914 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3915 <rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
3916 The heap dumping functionality (below) uses a callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3917 for each object. While it would seem that a buffered approach
a61af66fc99e Initial load
duke
parents:
diff changeset
3918 would provide better throughput, tests do
a61af66fc99e Initial load
duke
parents:
diff changeset
3919 not show this to be the case--possibly due to locality of
a61af66fc99e Initial load
duke
parents:
diff changeset
3920 memory reference or array access overhead.
a61af66fc99e Initial load
duke
parents:
diff changeset
3921 </rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
3922
a61af66fc99e Initial load
duke
parents:
diff changeset
3923 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3924 Still under investigation as to if java.lang.ref references
a61af66fc99e Initial load
duke
parents:
diff changeset
3925 are reported as a different type of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
3926 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3927
a61af66fc99e Initial load
duke
parents:
diff changeset
3928 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3929 Should or can an indication of the cost or relative cost of
a61af66fc99e Initial load
duke
parents:
diff changeset
3930 these operations be included?
a61af66fc99e Initial load
duke
parents:
diff changeset
3931 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
3932
a61af66fc99e Initial load
duke
parents:
diff changeset
3933 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
3934
a61af66fc99e Initial load
duke
parents:
diff changeset
3935 <callback id="jvmtiHeapIterationCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3936 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3937 <synopsis>Heap Iteration Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3938 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3939 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3940 Describes (but does not pass in) an object in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
3941 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3942 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
3943 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3944 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
3945 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
3946 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3947 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
3948 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3949 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3950 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3951 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
3952 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3953 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3954 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
3955 If the object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
3956 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
3957 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
3958 (zero if <code>java.lang.Class</code> is not tagged).
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="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
3962 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3963 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3964 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
3965 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3966 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3967 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
3968 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3969 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3970 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
3971 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
3972 the agent sets the <code>jlong</code> pointed to by the parameter.
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="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
3976 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3977 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3978 If this object is an array, the length of the array. Otherwise negative one (-1).
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 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
3982 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
3983 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3984 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3985 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3986 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
3987 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
3988 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
3989
a61af66fc99e Initial load
duke
parents:
diff changeset
3990 <callback id="jvmtiHeapReferenceCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
3991 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3992 <synopsis>Heap Reference Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
3993 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
3994 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
3995 Describes a reference from an object or the VM (the referrer) to another object
a61af66fc99e Initial load
duke
parents:
diff changeset
3996 (the referree) or a heap root to a referree.
a61af66fc99e Initial load
duke
parents:
diff changeset
3997 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
3998 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
3999 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4000 This will determine if the objects referenced by the referree
a61af66fc99e Initial load
duke
parents:
diff changeset
4001 should be visited or if the entire iteration should be aborted.
a61af66fc99e Initial load
duke
parents:
diff changeset
4002 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4003 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4004 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4005 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4006 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4007 <param id="reference_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
4008 <enum>jvmtiHeapReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4009 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4010 The kind of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4011 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4012 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4013 <param id="reference_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
4014 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4015 <struct>jvmtiHeapReferenceInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4016 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4017 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4018 Details about the reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4019 Set when the <paramlink id="reference_kind"/> is
a61af66fc99e Initial load
duke
parents:
diff changeset
4020 <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4021 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4022 <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4023 <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4024 <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4025 or <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4026 Otherwise <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4027 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4028 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4029 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4030 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4031 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4032 The tag of the class of referree object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4033 If the referree object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4034 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4035 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4036 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4037 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4038 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4039 <param id="referrer_class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4040 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4041 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4042 The tag of the class of the referrer object (zero if the class is not tagged
a61af66fc99e Initial load
duke
parents:
diff changeset
4043 or the referree is a heap root). If the referrer object represents a runtime
a61af66fc99e Initial load
duke
parents:
diff changeset
4044 class, the <code>referrer_class_tag</code> is the tag associated with
a61af66fc99e Initial load
duke
parents:
diff changeset
4045 the <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4046 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4047 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4048 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4049 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4050 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4051 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4052 Size of the referree object (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4053 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4054 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4055 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4056 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4057 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4058 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4059 Points to the referree object tag value, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4060 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4061 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4062 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4063 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4064 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4065 <param id="referrer_tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4066 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4067 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4068 Points to the tag of the referrer object, or
a61af66fc99e Initial load
duke
parents:
diff changeset
4069 points to the zero if the referrer
a61af66fc99e Initial load
duke
parents:
diff changeset
4070 object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4071 <code>NULL</code> if the referrer in not an object (that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
4072 this callback is reporting a heap root).
a61af66fc99e Initial load
duke
parents:
diff changeset
4073 To set the tag value to be associated with the referrer object
a61af66fc99e Initial load
duke
parents:
diff changeset
4074 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
4075 If this callback is reporting a reference from an object to itself,
a61af66fc99e Initial load
duke
parents:
diff changeset
4076 <code>referrer_tag_ptr == tag_ptr</code>.
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="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4080 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4081 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4082 If this object is an array, the length of the array. Otherwise negative one (-1).
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 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4086 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4087 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4088 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4089 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4090 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4091 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4092 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4093
a61af66fc99e Initial load
duke
parents:
diff changeset
4094 <callback id="jvmtiPrimitiveFieldCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4095 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4096 <synopsis>Primitive Field Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4097 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4098 Agent supplied callback function which
a61af66fc99e Initial load
duke
parents:
diff changeset
4099 describes a primitive field of an object (<i>the object</i>).
a61af66fc99e Initial load
duke
parents:
diff changeset
4100 A primitive field is a field whose type is a primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
4101 This callback will describe a static field if the object is a class,
a61af66fc99e Initial load
duke
parents:
diff changeset
4102 and otherwise will describe an instance field.
a61af66fc99e Initial load
duke
parents:
diff changeset
4103 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4104 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4105 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4106 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4107 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4108 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4109 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4110 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4111 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4112 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4113 <param id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
4114 <enum>jvmtiHeapReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4115 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4116 The kind of field -- instance or static (<datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4117 <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
4118 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4119 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4120 <param id="info">
a61af66fc99e Initial load
duke
parents:
diff changeset
4121 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4122 <struct>jvmtiHeapReferenceInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4123 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4124 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4125 Which field (the field index).
a61af66fc99e Initial load
duke
parents:
diff changeset
4126 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4127 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4128 <param id="object_class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4129 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4130 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4131 The tag of the class of the object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4132 If the object represents a runtime class, the
a61af66fc99e Initial load
duke
parents:
diff changeset
4133 <code>object_class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
4134 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4135 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4136 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4137 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4138 <param id="object_tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4139 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4140 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4141 Points to the tag of the object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4142 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4143 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4144 the agent sets the <code>jlong</code> pointed to by the parameter.
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">
a61af66fc99e Initial load
duke
parents:
diff changeset
4148 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4149 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4150 The value 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="value_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
4154 <enum>jvmtiPrimitiveType</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4155 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4156 The type of the field.
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 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4160 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4161 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4162 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4163 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4164 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4165 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4166 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4167
a61af66fc99e Initial load
duke
parents:
diff changeset
4168 <callback id="jvmtiArrayPrimitiveValueCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4169 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4170 <synopsis>Array Primitive Value Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4171 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4172 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4173 Describes the values in an array of a primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
4174 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4175 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4176 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4177 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4178 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4179 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4180 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4181 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4182 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4183 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4184 <param id="class_tag">
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 The tag of the class of the array object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4188 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4189 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4190 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4191 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4192 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4193 Size of the array (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4194 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4195 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4196 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4197 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4198 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4199 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4200 Points to the tag of the array object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4201 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4202 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4203 the agent sets the <code>jlong</code> pointed to by the parameter.
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_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4207 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4208 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4209 The length of the primitive 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="element_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
4213 <enum>jvmtiPrimitiveType</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
4214 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4215 The type of the elements of the array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4216 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4217 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4218 <param id="elements">
a61af66fc99e Initial load
duke
parents:
diff changeset
4219 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4220 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4221 The elements of the array in a packed array of <code>element_count</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4222 items of <code>element_type</code> size each.
a61af66fc99e Initial load
duke
parents:
diff changeset
4223 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4224 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4225 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4226 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4227 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4228 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4229 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4230 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4231 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4232 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4233
a61af66fc99e Initial load
duke
parents:
diff changeset
4234 <callback id="jvmtiStringPrimitiveValueCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4235 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4236 <synopsis>String Primitive Value Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4237 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4238 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4239 Describes the value of a java.lang.String.
a61af66fc99e Initial load
duke
parents:
diff changeset
4240 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4241 This function should return a bit vector of the desired
a61af66fc99e Initial load
duke
parents:
diff changeset
4242 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4243 This will determine if the entire iteration should be aborted
a61af66fc99e Initial load
duke
parents:
diff changeset
4244 (the <code>JVMTI_VISIT_OBJECTS</code> flag is ignored).
a61af66fc99e Initial load
duke
parents:
diff changeset
4245 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4246 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
4247 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4248 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4249 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4250 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4251 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4252 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4253 The tag of the class of the String class (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
4254 <issue>Is this needed?</issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
4255 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4256 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4257 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
4258 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4259 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4260 Size of the string (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
4261 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4262 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4263 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4264 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4265 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4266 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4267 Points to the tag of the String object, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
4268 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
4269 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
4270 the agent sets the <code>jlong</code> pointed to by the parameter.
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">
a61af66fc99e Initial load
duke
parents:
diff changeset
4274 <vmbuf><jchar/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4275 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4276 The value of the String, encoded as a Unicode string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4277 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4278 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4279 <param id="value_length">
a61af66fc99e Initial load
duke
parents:
diff changeset
4280 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4281 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4282 The length of the string.
a61af66fc99e Initial load
duke
parents:
diff changeset
4283 The length is equal to the number of 16-bit Unicode
a61af66fc99e Initial load
duke
parents:
diff changeset
4284 characters in the string.
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 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4288 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4289 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4290 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
4291 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4292 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4293 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4294 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4295
a61af66fc99e Initial load
duke
parents:
diff changeset
4296
a61af66fc99e Initial load
duke
parents:
diff changeset
4297 <callback id="jvmtiReservedCallback" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4298 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4299 <synopsis>reserved for future use Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4300 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4301 Placeholder -- reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
4302 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4303 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4304 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4305 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
4306
a61af66fc99e Initial load
duke
parents:
diff changeset
4307 <function id="FollowReferences" num="115" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4308 <synopsis>Follow References</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4309 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4310 This function initiates a traversal over the objects that are
a61af66fc99e Initial load
duke
parents:
diff changeset
4311 directly and indirectly reachable from the specified object or,
a61af66fc99e Initial load
duke
parents:
diff changeset
4312 if <code>initial_object</code> is not specified, all objects
a61af66fc99e Initial load
duke
parents:
diff changeset
4313 reachable from the heap roots.
a61af66fc99e Initial load
duke
parents:
diff changeset
4314 The heap root are the set of system classes,
a61af66fc99e Initial load
duke
parents:
diff changeset
4315 JNI globals, references from thread stacks, and other objects used as roots
a61af66fc99e Initial load
duke
parents:
diff changeset
4316 for the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
4317 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4318 This function operates by traversing the reference graph.
a61af66fc99e Initial load
duke
parents:
diff changeset
4319 Let <i>A</i>, <i>B</i>, ... represent objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
4320 When a reference from <i>A</i> to <i>B</i> is traversed,
a61af66fc99e Initial load
duke
parents:
diff changeset
4321 when a reference from a heap root to <i>B</i> is traversed,
a61af66fc99e Initial load
duke
parents:
diff changeset
4322 or when <i>B</i> is specified as the <paramlink id="initial_object"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4323 then <i>B</i> is said to be <i>visited</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4324 A reference from <i>A</i> to <i>B</i> is not traversed until <i>A</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
4325 is visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4326 References are reported in the same order that the references are traversed.
a61af66fc99e Initial load
duke
parents:
diff changeset
4327 Object references are reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4328 callback function <functionlink id="jvmtiHeapReferenceCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4329 In a reference from <i>A</i> to <i>B</i>, <i>A</i> is known
a61af66fc99e Initial load
duke
parents:
diff changeset
4330 as the <i>referrer</i> and <i>B</i> as the <i>referree</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4331 The callback is invoked exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
4332 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
4333 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
4334 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
4335 each reference is reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4336 These references may be distinguished by examining the
a61af66fc99e Initial load
duke
parents:
diff changeset
4337 <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
4338 id="jvmtiHeapReferenceCallback.reference_kind"><code>reference_kind</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4339 and
a61af66fc99e Initial load
duke
parents:
diff changeset
4340 <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
4341 id="jvmtiHeapReferenceCallback.reference_info"><code>reference_info</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4342 parameters of the <functionlink id="jvmtiHeapReferenceCallback"/> callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4343 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4344 This function reports a Java programming language view of object references,
a61af66fc99e Initial load
duke
parents:
diff changeset
4345 not a virtual machine implementation view. The following object references
a61af66fc99e Initial load
duke
parents:
diff changeset
4346 are reported when they are non-null:
a61af66fc99e Initial load
duke
parents:
diff changeset
4347 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4348 <li>Instance objects report references to each non-primitive instance fields
a61af66fc99e Initial load
duke
parents:
diff changeset
4349 (including inherited fields).</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4350 <li>Instance objects report a reference to the object type (class).</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4351 <li>Classes report a reference to the superclass and directly
a61af66fc99e Initial load
duke
parents:
diff changeset
4352 implemented/extended interfaces.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4353 <li>Classes report a reference to the class loader, protection domain,
a61af66fc99e Initial load
duke
parents:
diff changeset
4354 signers, and resolved entries in the constant pool.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4355 <li>Classes report a reference to each directly declared non-primitive
a61af66fc99e Initial load
duke
parents:
diff changeset
4356 static field.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4357 <li>Arrays report a reference to the array type (class) and each
a61af66fc99e Initial load
duke
parents:
diff changeset
4358 array element.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4359 <li>Primitive arrays report a reference to the array type.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4360 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4361 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4362 This function can also be used to examine primitive (non-object) values.
a61af66fc99e Initial load
duke
parents:
diff changeset
4363 The primitive value of an array or String
a61af66fc99e Initial load
duke
parents:
diff changeset
4364 is reported after the object has been visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4365 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4366 <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4367 <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4368 A primitive field
a61af66fc99e Initial load
duke
parents:
diff changeset
4369 is reported after the object with that field is visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4370 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4371 <functionlink id="jvmtiPrimitiveFieldCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4372 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4373 Whether a callback is provided or is <code>NULL</code> only determines
a61af66fc99e Initial load
duke
parents:
diff changeset
4374 whether the callback will be invoked, it does not influence
a61af66fc99e Initial load
duke
parents:
diff changeset
4375 which objects are visited nor does it influence whether other callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
4376 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
4377 However, the
a61af66fc99e Initial load
duke
parents:
diff changeset
4378 <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4379 returned by <functionlink id="jvmtiHeapReferenceCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4380 do determine if the objects referenced by the
a61af66fc99e Initial load
duke
parents:
diff changeset
4381 current object as visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4382 The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4383 and <paramlink id="klass"/> provided as parameters to this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4384 do not control which objects are visited but they do control which
a61af66fc99e Initial load
duke
parents:
diff changeset
4385 objects and primitive values are reported by the callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4386 For example, if the only callback that was set is
a61af66fc99e Initial load
duke
parents:
diff changeset
4387 <paramlink id="array_primitive_value_callback"/> and <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4388 is set to the array of bytes class, then only arrays of byte will be
a61af66fc99e Initial load
duke
parents:
diff changeset
4389 reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4390 The table below summarizes this:
a61af66fc99e Initial load
duke
parents:
diff changeset
4391 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4392 <table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4393 <tr>
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 objects visited
a61af66fc99e Initial load
duke
parents:
diff changeset
4397 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4398 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4399 Controls objects reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4400 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4401 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4402 Controls primitives reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4403 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4404 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4405 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4406 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4407 the
a61af66fc99e Initial load
duke
parents:
diff changeset
4408 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4409 returned by <functionlink id="jvmtiHeapReferenceCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4410 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4411 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4412 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4413 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4414 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4415 <b>Yes</b>, since visits are controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
4416 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4417 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4418 <b>Yes</b>, since visits are controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
4419 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4420 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4421 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4422 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4423 <fieldlink id="object_reference_callback" struct="jvmtiHeapCallbacks"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4424 in <paramlink id="callbacks"/> set
a61af66fc99e Initial load
duke
parents:
diff changeset
4425 </th>
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 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4430 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4431 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4432 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4433 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4434 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4435 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4436 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4437 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4438 <paramlink id="heap_filter"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4439 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4440 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4441 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4442 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4443 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4444 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4445 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4446 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4447 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4448 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4449 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4450 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4451 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4452 <paramlink id="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4453 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4454 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4455 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4456 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4457 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4458 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4459 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4460 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4461 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4462 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4463 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4464 </table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4465 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4466 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
4467 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
4468 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
4469 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
4470 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
4471 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
4472 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
4473 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
4474 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4475 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4476 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4477 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4478 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4479 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4480 <param id="heap_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
4481 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4482 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4483 This bit vector of
a61af66fc99e Initial load
duke
parents:
diff changeset
4484 <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4485 restricts the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
4486 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4487 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4488 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4489 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
4490 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4491 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4492 <nullok>callbacks are not limited to instances of a particular
a61af66fc99e Initial load
duke
parents:
diff changeset
4493 class</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4494 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4495 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4496 Callbacks are only reported when the object is an instance of
a61af66fc99e Initial load
duke
parents:
diff changeset
4497 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4498 Objects which are instances of a subclass of <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4499 are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4500 If <code>klass</code> is an interface, no objects are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4501 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4502 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4503 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4504 <param id="initial_object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4505 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4506 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4507 <nullok>references are followed from the heap roots</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4508 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4509 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4510 The object to follow
a61af66fc99e Initial load
duke
parents:
diff changeset
4511 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4512 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4513 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
4514 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4515 <struct>jvmtiHeapCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4516 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4517 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4518 Structure defining the set of callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
4519 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4520 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4521 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4522 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4523 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4524 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4525 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4526 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4527 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4528 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4529 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4530 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4531 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4532 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
4533 <paramlink id="klass"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4534 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4535 <error id="JVMTI_ERROR_INVALID_OBJECT">
a61af66fc99e Initial load
duke
parents:
diff changeset
4536 <paramlink id="initial_object"/> is not a valid object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4537 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4538 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4539 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4540
a61af66fc99e Initial load
duke
parents:
diff changeset
4541
a61af66fc99e Initial load
duke
parents:
diff changeset
4542 <function id="IterateThroughHeap" num="116" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4543 <synopsis>Iterate Through Heap</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4544 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4545 Initiate an iteration over all objects in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
4546 This includes both reachable and
a61af66fc99e Initial load
duke
parents:
diff changeset
4547 unreachable objects. Objects are visited in no particular order.
a61af66fc99e Initial load
duke
parents:
diff changeset
4548 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4549 Heap objects are reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4550 callback function <functionlink id="jvmtiHeapIterationCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4551 References between objects are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4552 If only reachable objects are desired, or if object reference information
a61af66fc99e Initial load
duke
parents:
diff changeset
4553 is needed, use <functionlink id="FollowReferences"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4554 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4555 This function can also be used to examine primitive (non-object) values.
a61af66fc99e Initial load
duke
parents:
diff changeset
4556 The primitive value of an array or String
a61af66fc99e Initial load
duke
parents:
diff changeset
4557 is reported after the object has been visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4558 it is reported by invoking the agent supplied callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4559 <functionlink id="jvmtiArrayPrimitiveValueCallback"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
4560 <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4561 A primitive field
a61af66fc99e Initial load
duke
parents:
diff changeset
4562 is reported after the object with that field is visited;
a61af66fc99e Initial load
duke
parents:
diff changeset
4563 it is reported by invoking the agent supplied
a61af66fc99e Initial load
duke
parents:
diff changeset
4564 callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
4565 <functionlink id="jvmtiPrimitiveFieldCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4566 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4567 Unless the iteration is aborted by the
a61af66fc99e Initial load
duke
parents:
diff changeset
4568 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4569 returned by a callback, all objects in the heap are visited.
a61af66fc99e Initial load
duke
parents:
diff changeset
4570 Whether a callback is provided or is <code>NULL</code> only determines
a61af66fc99e Initial load
duke
parents:
diff changeset
4571 whether the callback will be invoked, it does not influence
a61af66fc99e Initial load
duke
parents:
diff changeset
4572 which objects are visited nor does it influence whether other callbacks
a61af66fc99e Initial load
duke
parents:
diff changeset
4573 will be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
4574 The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4575 and <paramlink id="klass"/> provided as parameters to this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4576 do not control which objects are visited but they do control which
a61af66fc99e Initial load
duke
parents:
diff changeset
4577 objects and primitive values are reported by the callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4578 For example, if the only callback that was set is
a61af66fc99e Initial load
duke
parents:
diff changeset
4579 <paramlink id="array_primitive_value_callback"/> and <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4580 is set to the array of bytes class, then only arrays of byte will be
a61af66fc99e Initial load
duke
parents:
diff changeset
4581 reported. The table below summarizes this (contrast this with
a61af66fc99e Initial load
duke
parents:
diff changeset
4582 <functionlink id="FollowReferences"/>):
a61af66fc99e Initial load
duke
parents:
diff changeset
4583 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4584 <table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4585 <tr>
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 objects visited
a61af66fc99e Initial load
duke
parents:
diff changeset
4589 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4590 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4591 Controls objects reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4592 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4593 <th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4594 Controls primitives reported
a61af66fc99e Initial load
duke
parents:
diff changeset
4595 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4596 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4597 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4598 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4599 the
a61af66fc99e Initial load
duke
parents:
diff changeset
4600 <datalink id="jvmtiHeapVisitControl">Heap Visit Control Flags</datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4601 returned by <functionlink id="jvmtiHeapIterationCallback"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4602 </th>
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 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4607 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4608 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4609 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4610 No<br/>(unless they abort the iteration)
a61af66fc99e Initial load
duke
parents:
diff changeset
4611 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4612 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4613 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4614 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4615 <fieldlink id="object_callback" struct="jvmtiHeapCallbacks"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4616 in <paramlink id="callbacks"/> set
a61af66fc99e Initial load
duke
parents:
diff changeset
4617 </th>
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 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4622 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4623 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4624 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4625 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4626 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4627 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4628 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4629 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4630 <paramlink id="heap_filter"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4631 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4632 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4633 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4634 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4635 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4636 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4637 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4638 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4639 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4640 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4641 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4642 <tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4643 <th align="left">
a61af66fc99e Initial load
duke
parents:
diff changeset
4644 <paramlink id="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4645 </th>
a61af66fc99e Initial load
duke
parents:
diff changeset
4646 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4647 No
a61af66fc99e Initial load
duke
parents:
diff changeset
4648 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4649 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4650 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4651 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4652 <td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4653 <b>Yes</b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4654 </td>
a61af66fc99e Initial load
duke
parents:
diff changeset
4655 </tr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4656 </table>
a61af66fc99e Initial load
duke
parents:
diff changeset
4657 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4658 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
4659 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
4660 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
4661 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
4662 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
4663 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
4664 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
4665 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
4666 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4667 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4668 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4669 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4670 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4671 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4672 <param id="heap_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
4673 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4674 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4675 This bit vector of
a61af66fc99e Initial load
duke
parents:
diff changeset
4676 <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4677 restricts the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
4678 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4679 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4680 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4681 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
4682 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4683 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4684 <nullok>callbacks are not limited to instances of a particular class</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4685 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
4686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4687 Callbacks are only reported when the object is an instance of
a61af66fc99e Initial load
duke
parents:
diff changeset
4688 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4689 Objects which are instances of a subclass of <code>klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4690 are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4691 If <code>klass</code> is an interface, no objects are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
4692 This applies to both the object and primitive callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
4693 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4694 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4695 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
4696 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4697 <struct>jvmtiHeapCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
4698 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4699 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4700 Structure defining the set callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
4701 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4702 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4703 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
4704 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4705 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4706 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4707 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4708 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4709 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
4710 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4711 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4712 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4713 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4714 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
4715 <paramlink id="klass"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4716 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4717 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4718 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4719
a61af66fc99e Initial load
duke
parents:
diff changeset
4720 <function id="GetTag" phase="start" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
4721 <synopsis>Get Tag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4722 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4723 Retrieve the tag associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4724 The tag is a long value typically used to store a
a61af66fc99e Initial load
duke
parents:
diff changeset
4725 unique identifier or pointer to object information.
a61af66fc99e Initial load
duke
parents:
diff changeset
4726 The tag is set with
a61af66fc99e Initial load
duke
parents:
diff changeset
4727 <functionlink id="SetTag"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4728 Objects for which no tags have been set return a
a61af66fc99e Initial load
duke
parents:
diff changeset
4729 tag value of zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
4730 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4731 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4732 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4733 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4734 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4735 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4736 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4737 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4738 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4739 The object whose tag is to be retrieved.
a61af66fc99e Initial load
duke
parents:
diff changeset
4740 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4741 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4742 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4743 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4744 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4745 On return, the referenced long is set to the value
a61af66fc99e Initial load
duke
parents:
diff changeset
4746 of the tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
4747 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4748 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4749 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4750 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4751 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4752 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4753
a61af66fc99e Initial load
duke
parents:
diff changeset
4754 <function id="SetTag" phase="start" num="107">
a61af66fc99e Initial load
duke
parents:
diff changeset
4755 <synopsis>Set Tag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4756 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4757 Set the tag associated with an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
4758 The tag is a long value typically used to store a
a61af66fc99e Initial load
duke
parents:
diff changeset
4759 unique identifier or pointer to object information.
a61af66fc99e Initial load
duke
parents:
diff changeset
4760 The tag is visible with
a61af66fc99e Initial load
duke
parents:
diff changeset
4761 <functionlink id="GetTag"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4762 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4763 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4764 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4765 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4766 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4767 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4768 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
4769 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4771 The object whose tag is to be set.
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 <param id="tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
4775 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4776 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4777 The new value of the tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
4778 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4779 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4780 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4781 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4782 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4783 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4784
a61af66fc99e Initial load
duke
parents:
diff changeset
4785 <function id="GetObjectsWithTags" num="114">
a61af66fc99e Initial load
duke
parents:
diff changeset
4786 <synopsis>Get Objects With Tags</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4787 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4788 Return objects in the heap with the specified tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4789 The format is parallel arrays of objects and tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4790 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4791 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4792 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4793 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
4794 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4795 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4796 <param id="tag_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4797 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4798 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4799 Number of tags to scan for.
a61af66fc99e Initial load
duke
parents:
diff changeset
4800 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4801 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4802 <param id="tags">
a61af66fc99e Initial load
duke
parents:
diff changeset
4803 <inbuf incount="tag_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
4804 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4805 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4806 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4807 Scan for objects with these tags.
a61af66fc99e Initial load
duke
parents:
diff changeset
4808 Zero is not permitted in this array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4809 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4810 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4811 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4812 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4813 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4814 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
4815 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4816 Return the number of objects with any of the tags
a61af66fc99e Initial load
duke
parents:
diff changeset
4817 in <paramlink id="tags"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4818 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4819 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4820 <param id="object_result_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4821 <allocbuf outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4822 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4823 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4824 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4825 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4826 Returns the array of objects with any of the tags
a61af66fc99e Initial load
duke
parents:
diff changeset
4827 in <paramlink id="tags"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4828 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4829 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4830 <param id="tag_result_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4831 <allocbuf outcount="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
4832 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4833 <nullok>this information is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
4834 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
4835 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4836 For each object in <paramlink id="object_result_ptr"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
4837 return the tag at the corresponding index.
a61af66fc99e Initial load
duke
parents:
diff changeset
4838 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4839 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
4840 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4841 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4842 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
4843 Zero is present in <paramlink id="tags"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4844 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
4845 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4846 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4847
a61af66fc99e Initial load
duke
parents:
diff changeset
4848 <function id="ForceGarbageCollection" num="108">
a61af66fc99e Initial load
duke
parents:
diff changeset
4849 <synopsis>Force Garbage Collection</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
4850 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4851 Force the VM to perform a garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
4852 The garbage collection is as complete as possible.
a61af66fc99e Initial load
duke
parents:
diff changeset
4853 This function does not cause finalizers to be run.
a61af66fc99e Initial load
duke
parents:
diff changeset
4854 This function does not return until the garbage collection
a61af66fc99e Initial load
duke
parents:
diff changeset
4855 is finished.
a61af66fc99e Initial load
duke
parents:
diff changeset
4856 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4857 Although garbage collection is as complete
a61af66fc99e Initial load
duke
parents:
diff changeset
4858 as possible there is no guarantee that all
a61af66fc99e Initial load
duke
parents:
diff changeset
4859 <eventlink id="ObjectFree"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4860 events will have been
a61af66fc99e Initial load
duke
parents:
diff changeset
4861 sent by the time that this function
a61af66fc99e Initial load
duke
parents:
diff changeset
4862 returns. In particular, an object may be
a61af66fc99e Initial load
duke
parents:
diff changeset
4863 prevented from being freed because it
a61af66fc99e Initial load
duke
parents:
diff changeset
4864 is awaiting finalization.
a61af66fc99e Initial load
duke
parents:
diff changeset
4865 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
4866 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
4867 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4868 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
4869 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4870 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
4871 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4872 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
4873 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
4874
a61af66fc99e Initial load
duke
parents:
diff changeset
4875
a61af66fc99e Initial load
duke
parents:
diff changeset
4876 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
4877
a61af66fc99e Initial load
duke
parents:
diff changeset
4878 <category id="Heap_1_0" label="Heap (1.0)">
a61af66fc99e Initial load
duke
parents:
diff changeset
4879 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
4880 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4881 These functions and data types were introduced in the original
a61af66fc99e Initial load
duke
parents:
diff changeset
4882 <jvmti/> version 1.0 and have been superseded by more
a61af66fc99e Initial load
duke
parents:
diff changeset
4883 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4884 <internallink id="Heap"><b>powerful and flexible versions</b></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
4885 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4886 which:
a61af66fc99e Initial load
duke
parents:
diff changeset
4887 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4888 <ul>
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 access to primitive values (the value of Strings, arrays,
a61af66fc99e Initial load
duke
parents:
diff changeset
4892 and primitive fields)
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 Allow the tag of the referrer to be set, thus enabling more
a61af66fc99e Initial load
duke
parents:
diff changeset
4898 efficient localized reference graph building
a61af66fc99e Initial load
duke
parents:
diff changeset
4899 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4900 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4901 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4902 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4903 Provide more extensive filtering abilities
a61af66fc99e Initial load
duke
parents:
diff changeset
4904 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4905 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4906 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4907 <b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4908 Are extensible, allowing their abilities to grow in future versions of <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4909 </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4910 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
4911 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
4912 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4913 <b>Please use the </b>
a61af66fc99e Initial load
duke
parents:
diff changeset
4914 <internallink id="Heap"><b>current Heap functions</b></internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
4915 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
4916 <constants id="jvmtiHeapObjectFilter" label="Heap Object Filter Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4917 <constant id="JVMTI_HEAP_OBJECT_TAGGED" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4918 Tagged objects only.
a61af66fc99e Initial load
duke
parents:
diff changeset
4919 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4920 <constant id="JVMTI_HEAP_OBJECT_UNTAGGED" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4921 Untagged objects only.
a61af66fc99e Initial load
duke
parents:
diff changeset
4922 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4923 <constant id="JVMTI_HEAP_OBJECT_EITHER" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
4924 Either tagged or untagged objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
4925 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4926 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
4927
a61af66fc99e Initial load
duke
parents:
diff changeset
4928 <constants id="jvmtiHeapRootKind" label="Heap Root Kind Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4929 <constant id="JVMTI_HEAP_ROOT_JNI_GLOBAL" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4930 JNI global reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4931 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4932 <constant id="JVMTI_HEAP_ROOT_SYSTEM_CLASS" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4933 System class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4934 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4935 <constant id="JVMTI_HEAP_ROOT_MONITOR" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
4936 Monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
4937 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4938 <constant id="JVMTI_HEAP_ROOT_STACK_LOCAL" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
4939 Stack local.
a61af66fc99e Initial load
duke
parents:
diff changeset
4940 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4941 <constant id="JVMTI_HEAP_ROOT_JNI_LOCAL" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
4942 JNI local reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
4943 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4944 <constant id="JVMTI_HEAP_ROOT_THREAD" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
4945 Thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
4946 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4947 <constant id="JVMTI_HEAP_ROOT_OTHER" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
4948 Other.
a61af66fc99e Initial load
duke
parents:
diff changeset
4949 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4950 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
4951
a61af66fc99e Initial load
duke
parents:
diff changeset
4952 <constants id="jvmtiObjectReferenceKind" label="Object Reference Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
4953 <constant id="JVMTI_REFERENCE_CLASS" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
4954 Reference from an object to its class.
a61af66fc99e Initial load
duke
parents:
diff changeset
4955 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4956 <constant id="JVMTI_REFERENCE_FIELD" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
4957 Reference from an object to the value of one of its instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
4958 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4959 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
4960 jvmtiObjectReferenceCallback</internallink> is the index of the
a61af66fc99e Initial load
duke
parents:
diff changeset
4961 the instance field. The index is based on the order of all the
a61af66fc99e Initial load
duke
parents:
diff changeset
4962 object's fields. This includes all fields of the directly declared
a61af66fc99e Initial load
duke
parents:
diff changeset
4963 static and instance fields in the class, and includes all fields (both
a61af66fc99e Initial load
duke
parents:
diff changeset
4964 public and private) fields declared in superclasses and superinterfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
4965 The index is thus calculated by summing the index of the field in the directly
a61af66fc99e Initial load
duke
parents:
diff changeset
4966 declared class (see <functionlink id="GetClassFields"/>), with the total
a61af66fc99e Initial load
duke
parents:
diff changeset
4967 number of fields (both public and private) declared in all superclasses
a61af66fc99e Initial load
duke
parents:
diff changeset
4968 and superinterfaces. The index starts at zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
4969 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4970 <constant id="JVMTI_REFERENCE_ARRAY_ELEMENT" num="3">
a61af66fc99e Initial load
duke
parents:
diff changeset
4971 Reference from an array to one of its elements.
a61af66fc99e Initial load
duke
parents:
diff changeset
4972 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4973 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
4974 jvmtiObjectReferenceCallback</internallink> is the array index.
a61af66fc99e Initial load
duke
parents:
diff changeset
4975 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4976 <constant id="JVMTI_REFERENCE_CLASS_LOADER" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
4977 Reference from a class to its class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
4978 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4979 <constant id="JVMTI_REFERENCE_SIGNERS" num="5">
a61af66fc99e Initial load
duke
parents:
diff changeset
4980 Reference from a class to its signers array.
a61af66fc99e Initial load
duke
parents:
diff changeset
4981 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4982 <constant id="JVMTI_REFERENCE_PROTECTION_DOMAIN" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
4983 Reference from a class to its protection domain.
a61af66fc99e Initial load
duke
parents:
diff changeset
4984 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4985 <constant id="JVMTI_REFERENCE_INTERFACE" num="7">
a61af66fc99e Initial load
duke
parents:
diff changeset
4986 Reference from a class to one of its interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
4987 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
4988 <constant id="JVMTI_REFERENCE_STATIC_FIELD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
4989 Reference from a class to the value of one of its static fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
4990 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
4991 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
4992 jvmtiObjectReferenceCallback</internallink> is the index of the
a61af66fc99e Initial load
duke
parents:
diff changeset
4993 the static field. The index is based on the order of all the
a61af66fc99e Initial load
duke
parents:
diff changeset
4994 object's fields. This includes all fields of the directly declared
a61af66fc99e Initial load
duke
parents:
diff changeset
4995 static and instance fields in the class, and includes all fields (both
a61af66fc99e Initial load
duke
parents:
diff changeset
4996 public and private) fields declared in superclasses and superinterfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
4997 The index is thus calculated by summing the index of the field in the directly
a61af66fc99e Initial load
duke
parents:
diff changeset
4998 declared class (see <functionlink id="GetClassFields"/>), with the total
a61af66fc99e Initial load
duke
parents:
diff changeset
4999 number of fields (both public and private) declared in all superclasses
a61af66fc99e Initial load
duke
parents:
diff changeset
5000 and superinterfaces. The index starts at zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
5001 Note: this definition differs from that in the <jvmti/> 1.0 Specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
5002 <rationale>No known implementations used the 1.0 definition.</rationale>
a61af66fc99e Initial load
duke
parents:
diff changeset
5003 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5004 <constant id="JVMTI_REFERENCE_CONSTANT_POOL" num="9">
a61af66fc99e Initial load
duke
parents:
diff changeset
5005 Reference from a class to a resolved entry in the constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
5006 For references of this kind the <code>referrer_index</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5007 parameter to the <internallink id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5008 jvmtiObjectReferenceCallback</internallink> is the index into
a61af66fc99e Initial load
duke
parents:
diff changeset
5009 constant pool table of the class, starting at 1. See the
a61af66fc99e Initial load
duke
parents:
diff changeset
5010 <vmspeclink id="ClassFile.doc.html#20080"
a61af66fc99e Initial load
duke
parents:
diff changeset
5011 name="Constant Pool section"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5012 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5013 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5014
a61af66fc99e Initial load
duke
parents:
diff changeset
5015 <constants id="jvmtiIterationControl" label="Iteration Control Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
5016 <constant id="JVMTI_ITERATION_CONTINUE" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
5017 Continue the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5018 If this is a reference iteration, follow the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5019 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5020 <constant id="JVMTI_ITERATION_IGNORE" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
5021 Continue the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5022 If this is a reference iteration, ignore the references of this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5023 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5024 <constant id="JVMTI_ITERATION_ABORT" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
5025 Abort the iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5026 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
5027 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
5028 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5029
a61af66fc99e Initial load
duke
parents:
diff changeset
5030 <callback id="jvmtiHeapObjectCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5031 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5032 <synopsis>Heap Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5033 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5034 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5035 Describes (but does not pass in) an object in the heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
5036 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5037 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5038 or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5039 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5040 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5041 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5042 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5043 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5044 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5045 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5046 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5047 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5048 If the object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
5049 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5050 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5051 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5052 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5053 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5054 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5055 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5056 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5057 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5058 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5059 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5060 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5061 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5062 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5063 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5064 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5065 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5066 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5067 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5068 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5069 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5070 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5071 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5072 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5073 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5074 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5075 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5076
a61af66fc99e Initial load
duke
parents:
diff changeset
5077 <callback id="jvmtiHeapRootCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5078 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5079 <synopsis>Heap Root Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5080 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5081 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5082 Describes (but does not pass in) an object that is a root for the purposes
a61af66fc99e Initial load
duke
parents:
diff changeset
5083 of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5084 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5085 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5086 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5087 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5088 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5089 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5090 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5091 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5092 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5093 <param id="root_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5094 <enum>jvmtiHeapRootKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5095 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5096 The kind of heap root.
a61af66fc99e Initial load
duke
parents:
diff changeset
5097 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5098 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5099 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5100 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5101 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5102 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5103 If the object represents a runtime class, the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5104 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5105 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5106 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5107 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5108 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5109 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5110 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5111 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5112 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5113 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5114 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5115 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5116 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5117 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5118 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5119 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5120 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5121 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5122 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5123 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5124 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5125 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5126 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5127 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5128 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5129 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5130
a61af66fc99e Initial load
duke
parents:
diff changeset
5131 <callback id="jvmtiStackReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5132 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5133 <synopsis>Stack Reference Object Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5134 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5135 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5136 Describes (but does not pass in) an object on the stack that is a root for
a61af66fc99e Initial load
duke
parents:
diff changeset
5137 the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5138 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5139 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5140 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5141 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5142 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5143 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5144 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5145 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5146 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5147 <param id="root_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5148 <enum>jvmtiHeapRootKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5149 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5150 The kind of root (either <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5151 <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
5152 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5153 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5154 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5155 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5156 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5157 The tag of the class of object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5158 If the object represents a runtime class, the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5159 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5160 (zero if <code>java.lang.Class</code> is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5161 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5162 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5163 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5164 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5165 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5166 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5167 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5168 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5169 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5170 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5171 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5172 The object tag value, or zero if the object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5173 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5174 the agent sets the <code>jlong</code> pointed to by the parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
5175 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5176 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5177 <param id="thread_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5178 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5179 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5180 The tag of the thread corresponding to this stack, zero if not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5181 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5182 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5183 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5184 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5185 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5186 The depth of the frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5187 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5188 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5189 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
5190 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5191 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5192 The method executing in this frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5193 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5194 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5195 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5196 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5197 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5198 The slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5199 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5200 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5201 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5202 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5203 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5204 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5205 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5206 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5207 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5208 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5209
a61af66fc99e Initial load
duke
parents:
diff changeset
5210 <callback id="jvmtiObjectReferenceCallback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5211 <enum>jvmtiIterationControl</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5212 <synopsis>Object Reference Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5213 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5214 Agent supplied callback function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5215 Describes a reference from an object (the referrer) to another object
a61af66fc99e Initial load
duke
parents:
diff changeset
5216 (the referree).
a61af66fc99e Initial load
duke
parents:
diff changeset
5217 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5218 Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
a61af66fc99e Initial load
duke
parents:
diff changeset
5219 <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
a61af66fc99e Initial load
duke
parents:
diff changeset
5220 references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
a61af66fc99e Initial load
duke
parents:
diff changeset
5221 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5222 See the <internallink id="heapCallbacks">heap callback
a61af66fc99e Initial load
duke
parents:
diff changeset
5223 function restrictions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5224 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5225 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5226 <param id="reference_kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
5227 <enum>jvmtiObjectReferenceKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5228 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5229 The type of reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5230 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5231 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5232 <param id="class_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5233 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5234 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5235 The tag of the class of referree object (zero if the class is not tagged).
a61af66fc99e Initial load
duke
parents:
diff changeset
5236 If the referree object represents a runtime class,
a61af66fc99e Initial load
duke
parents:
diff changeset
5237 the <code>class_tag</code> is the tag
a61af66fc99e Initial load
duke
parents:
diff changeset
5238 associated with <code>java.lang.Class</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5239 (zero if <code>java.lang.Class</code> is not tagged).
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="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
5243 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5244 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5245 Size of the referree object (in bytes).
a61af66fc99e Initial load
duke
parents:
diff changeset
5246 See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5247 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5248 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5249 <param id="tag_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5250 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5251 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5252 The referree object tag value, or zero if the object is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5253 tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5254 To set the tag value to be associated with the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5255 the agent sets the <code>jlong</code> pointed to by the parameter.
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_tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
5259 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5260 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5261 The tag of the referrer object, or zero if the referrer
a61af66fc99e Initial load
duke
parents:
diff changeset
5262 object is not tagged.
a61af66fc99e Initial load
duke
parents:
diff changeset
5263 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5264 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5265 <param id="referrer_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
5266 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5267 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5268 For references of type <code>JVMTI_REFERENCE_FIELD</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5269 <code>JVMTI_REFERENCE_STATIC_FIELD</code> the index
a61af66fc99e Initial load
duke
parents:
diff changeset
5270 of the field in the referrer object. The index is based on the
a61af66fc99e Initial load
duke
parents:
diff changeset
5271 order of all the object's fields - see <internallink
a61af66fc99e Initial load
duke
parents:
diff changeset
5272 id="JVMTI_REFERENCE_FIELD">JVMTI_REFERENCE_FIELD</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5273 or <internallink
a61af66fc99e Initial load
duke
parents:
diff changeset
5274 id="JVMTI_REFERENCE_STATIC_FIELD">JVMTI_REFERENCE_STATIC_FIELD
a61af66fc99e Initial load
duke
parents:
diff changeset
5275 </internallink> for further description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5276 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5277 For references of type <code>JVMTI_REFERENCE_ARRAY_ELEMENT</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5278 the array index - see <internallink id="JVMTI_REFERENCE_ARRAY_ELEMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5279 JVMTI_REFERENCE_ARRAY_ELEMENT</internallink> for further description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5280 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5281 For references of type <code>JVMTI_REFERENCE_CONSTANT_POOL</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
5282 the index into the constant pool of the class - see
a61af66fc99e Initial load
duke
parents:
diff changeset
5283 <internallink id="JVMTI_REFERENCE_CONSTANT_POOL">
a61af66fc99e Initial load
duke
parents:
diff changeset
5284 JVMTI_REFERENCE_CONSTANT_POOL</internallink> for further
a61af66fc99e Initial load
duke
parents:
diff changeset
5285 description.
a61af66fc99e Initial load
duke
parents:
diff changeset
5286 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5287 For references of other kinds the <code>referrer_index</code> is
a61af66fc99e Initial load
duke
parents:
diff changeset
5288 <code>-1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5289 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5290 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5291 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5292 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5293 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5294 The user supplied data that was passed into the iteration function.
a61af66fc99e Initial load
duke
parents:
diff changeset
5295 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5296 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5297 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5298 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
5299
a61af66fc99e Initial load
duke
parents:
diff changeset
5300 <function id="IterateOverObjectsReachableFromObject" num="109">
a61af66fc99e Initial load
duke
parents:
diff changeset
5301 <synopsis>Iterate Over Objects Reachable From Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5302 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5303 This function iterates over all objects that are directly
a61af66fc99e Initial load
duke
parents:
diff changeset
5304 and indirectly reachable from the specified object.
a61af66fc99e Initial load
duke
parents:
diff changeset
5305 For each object <i>A</i> (known
a61af66fc99e Initial load
duke
parents:
diff changeset
5306 as the referrer) with a reference to object <i>B</i> the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
5307 callback function is called to describe the object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5308 The callback is called exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
5309 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
5310 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5311 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
5312 These may be distinguished by the
a61af66fc99e Initial load
duke
parents:
diff changeset
5313 <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
5314 <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5315 The callback for an object will always occur after the callback for
a61af66fc99e Initial load
duke
parents:
diff changeset
5316 its referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5317 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5318 See <functionlink id="FollowReferences"/> for the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5319 references which are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
5320 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5321 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5322 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5323 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5324 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5325 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5326 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5327 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5328 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5329 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5330 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5331 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5332 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5333 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5334 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5335 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
5336 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5337 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5338 The object
a61af66fc99e Initial load
duke
parents:
diff changeset
5339 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5340 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5341 <param id="object_reference_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5342 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5343 <struct>jvmtiObjectReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5344 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5345 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5346 The callback to be called to describe each
a61af66fc99e Initial load
duke
parents:
diff changeset
5347 object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5348 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5349 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5350 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5351 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5352 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5353 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5354 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5355 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5356 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5357 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5358 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5359 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5360 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5361 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5362 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5363
a61af66fc99e Initial load
duke
parents:
diff changeset
5364 <function id="IterateOverReachableObjects" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
5365 <synopsis>Iterate Over Reachable Objects</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5366 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5367 This function iterates over the root objects and all objects that
a61af66fc99e Initial load
duke
parents:
diff changeset
5368 are directly and indirectly reachable from the root objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5369 The root objects comprise the set of system classes,
a61af66fc99e Initial load
duke
parents:
diff changeset
5370 JNI globals, references from thread stacks, and other objects used as roots
a61af66fc99e Initial load
duke
parents:
diff changeset
5371 for the purposes of garbage collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
5372 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5373 For each root the <paramlink id="heap_root_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5374 or <paramlink id="stack_ref_callback"></paramlink> callback is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5375 An object can be a root object for more than one reason and in that case
a61af66fc99e Initial load
duke
parents:
diff changeset
5376 the appropriate callback is called for each reason.
a61af66fc99e Initial load
duke
parents:
diff changeset
5377 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5378 For each object reference the <paramlink id="object_ref_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5379 callback function is called to describe the object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5380 The callback is called exactly once for each reference from a referrer;
a61af66fc99e Initial load
duke
parents:
diff changeset
5381 this is true even if there are reference cycles or multiple paths to
a61af66fc99e Initial load
duke
parents:
diff changeset
5382 the referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5383 There may be more than one reference between a referrer and a referree,
a61af66fc99e Initial load
duke
parents:
diff changeset
5384 These may be distinguished by the
a61af66fc99e Initial load
duke
parents:
diff changeset
5385 <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
5386 <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5387 The callback for an object will always occur after the callback for
a61af66fc99e Initial load
duke
parents:
diff changeset
5388 its referrer.
a61af66fc99e Initial load
duke
parents:
diff changeset
5389 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5390 See <functionlink id="FollowReferences"/> for the object
a61af66fc99e Initial load
duke
parents:
diff changeset
5391 references which are reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
5392 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5393 Roots are always reported to the profiler before any object references
a61af66fc99e Initial load
duke
parents:
diff changeset
5394 are reported. In other words, the <paramlink id="object_ref_callback"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
5395 callback will not be called until the appropriate callback has been called
a61af66fc99e Initial load
duke
parents:
diff changeset
5396 for all roots. If the <paramlink id="object_ref_callback"></paramlink> callback is
a61af66fc99e Initial load
duke
parents:
diff changeset
5397 specified as <code>NULL</code> then this function returns after
a61af66fc99e Initial load
duke
parents:
diff changeset
5398 reporting the root objects to the profiler.
a61af66fc99e Initial load
duke
parents:
diff changeset
5399 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5400 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5401 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5402 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5403 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5404 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5405 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5406 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5407 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5408 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5409 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5410 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5411 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5412 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5413 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5414 <param id="heap_root_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5415 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5416 <struct>jvmtiHeapRootCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5417 <nullok>do not report heap roots</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5418 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5419 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5420 The callback function to be called for each heap root of type
a61af66fc99e Initial load
duke
parents:
diff changeset
5421 <code>JVMTI_HEAP_ROOT_JNI_GLOBAL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5422 <code>JVMTI_HEAP_ROOT_SYSTEM_CLASS</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5423 <code>JVMTI_HEAP_ROOT_MONITOR</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5424 <code>JVMTI_HEAP_ROOT_THREAD</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5425 <code>JVMTI_HEAP_ROOT_OTHER</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5426 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5427 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5428 <param id="stack_ref_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5429 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5430 <struct>jvmtiStackReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5431 <nullok>do not report stack references</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5432 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5433 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5434 The callback function to be called for each heap root of
a61af66fc99e Initial load
duke
parents:
diff changeset
5435 <code>JVMTI_HEAP_ROOT_STACK_LOCAL</code> or
a61af66fc99e Initial load
duke
parents:
diff changeset
5436 <code>JVMTI_HEAP_ROOT_JNI_LOCAL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5437 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5438 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5439 <param id="object_ref_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5440 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5441 <struct>jvmtiObjectReferenceCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5442 <nullok>do not follow references from the root objects</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5443 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5444 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5445 The callback function to be called for each object reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
5446 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5447 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5448 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5449 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5450 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5451 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5452 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5453 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5454 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5455 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5456 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5457 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5458 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5459 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5460 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5461
a61af66fc99e Initial load
duke
parents:
diff changeset
5462 <function id="IterateOverHeap" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
5463 <synopsis>Iterate Over Heap</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5464 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5465 Iterate over all objects in the heap. This includes both reachable and
a61af66fc99e Initial load
duke
parents:
diff changeset
5466 unreachable objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5467 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5468 The <paramlink id="object_filter"></paramlink> parameter indicates the
a61af66fc99e Initial load
duke
parents:
diff changeset
5469 objects for which the callback function is called. If this parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5470 is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5471 called for every object that is tagged. If the parameter is
a61af66fc99e Initial load
duke
parents:
diff changeset
5472 <code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5473 for objects that are not tagged. If the parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5474 is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
a61af66fc99e Initial load
duke
parents:
diff changeset
5475 called for every object in the heap, irrespective of whether it is
a61af66fc99e Initial load
duke
parents:
diff changeset
5476 tagged or not.
a61af66fc99e Initial load
duke
parents:
diff changeset
5477 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5478 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5479 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5480 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5481 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5482 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5483 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5484 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5485 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5486 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5487 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5488 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5489 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5490 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5491 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5492 <param id="object_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
5493 <enum>jvmtiHeapObjectFilter</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5494 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5495 Indicates the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5496 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5497 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5498 <param id="heap_object_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5499 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5500 <struct>jvmtiHeapObjectCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5501 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5502 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5503 The iterator function to be called for each
a61af66fc99e Initial load
duke
parents:
diff changeset
5504 object matching the <paramlink id="object_filter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5505 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5506 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5507 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5508 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5509 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5510 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5511 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5512 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5513 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5514 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5515 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5516 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5517 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5518 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5519 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5520
a61af66fc99e Initial load
duke
parents:
diff changeset
5521 <function id="IterateOverInstancesOfClass" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
5522 <synopsis>Iterate Over Instances Of Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5523 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5524 Iterate over all objects in the heap that are instances of the specified class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5525 This includes direct instances of the specified class and
a61af66fc99e Initial load
duke
parents:
diff changeset
5526 instances of all subclasses of the specified class.
a61af66fc99e Initial load
duke
parents:
diff changeset
5527 This includes both reachable and unreachable objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
5528 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5529 The <paramlink id="object_filter"></paramlink> parameter indicates the
a61af66fc99e Initial load
duke
parents:
diff changeset
5530 objects for which the callback function is called. If this parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5531 is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5532 called for every object that is tagged. If the parameter is
a61af66fc99e Initial load
duke
parents:
diff changeset
5533 <code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
a61af66fc99e Initial load
duke
parents:
diff changeset
5534 called for objects that are not tagged. If the parameter
a61af66fc99e Initial load
duke
parents:
diff changeset
5535 is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
a61af66fc99e Initial load
duke
parents:
diff changeset
5536 called for every object in the heap, irrespective of whether it is
a61af66fc99e Initial load
duke
parents:
diff changeset
5537 tagged or not.
a61af66fc99e Initial load
duke
parents:
diff changeset
5538 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5539 During the execution of this function the state of the heap
a61af66fc99e Initial load
duke
parents:
diff changeset
5540 does not change: no objects are allocated, no objects are
a61af66fc99e Initial load
duke
parents:
diff changeset
5541 garbage collected, and the state of objects (including
a61af66fc99e Initial load
duke
parents:
diff changeset
5542 held values) does not change.
a61af66fc99e Initial load
duke
parents:
diff changeset
5543 As a result, threads executing Java
a61af66fc99e Initial load
duke
parents:
diff changeset
5544 programming language code, threads attempting to resume the
a61af66fc99e Initial load
duke
parents:
diff changeset
5545 execution of Java programming language code, and threads
a61af66fc99e Initial load
duke
parents:
diff changeset
5546 attempting to execute JNI functions are typically stalled.
a61af66fc99e Initial load
duke
parents:
diff changeset
5547 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5548 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5549 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5550 <required id="can_tag_objects"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5551 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5552 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5553 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
5554 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5555 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5556 Iterate over objects of this class only.
a61af66fc99e Initial load
duke
parents:
diff changeset
5557 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5558 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5559 <param id="object_filter">
a61af66fc99e Initial load
duke
parents:
diff changeset
5560 <enum>jvmtiHeapObjectFilter</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
5561 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5562 Indicates the objects for which the callback function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
5563 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5564 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5565 <param id="heap_object_callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
5566 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5567 <struct>jvmtiHeapObjectCallback</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
5568 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
5569 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5570 The iterator function to be called for each
a61af66fc99e Initial load
duke
parents:
diff changeset
5571 <paramlink id="klass"/> instance matching
a61af66fc99e Initial load
duke
parents:
diff changeset
5572 the <paramlink id="object_filter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5573 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5574 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5575 <param id="user_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
5576 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5577 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5578 <nullok><code>NULL</code> is passed as the user supplied data</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
5579 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
5580 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5581 User supplied data to be passed to the callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
5582 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5583 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5584 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5585 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5586 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5587 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5588
a61af66fc99e Initial load
duke
parents:
diff changeset
5589 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
5590
a61af66fc99e Initial load
duke
parents:
diff changeset
5591 <category id="local" label="Local Variable">
a61af66fc99e Initial load
duke
parents:
diff changeset
5592
a61af66fc99e Initial load
duke
parents:
diff changeset
5593 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5594 These functions are used to retrieve or set the value of a local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5595 The variable is identified by the depth of the frame containing its
a61af66fc99e Initial load
duke
parents:
diff changeset
5596 value and the variable's slot number within that frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
5597 The mapping of variables to
a61af66fc99e Initial load
duke
parents:
diff changeset
5598 slot numbers can be obtained with the function
a61af66fc99e Initial load
duke
parents:
diff changeset
5599 <functionlink id="GetLocalVariableTable"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5600 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
5601
a61af66fc99e Initial load
duke
parents:
diff changeset
5602 <function id="GetLocalObject" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
5603 <synopsis>Get Local Variable - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5604 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5605 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5606 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5607 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5608 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5609 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5610 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5611 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5612 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5613 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5614 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5615 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5616 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5617 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5618 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5619 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5620 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5621 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5622 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5623 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5624 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5625 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5626 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5627 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5628 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5629 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5630 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5631 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5632 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5633 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5634 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5635 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5636 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5637 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5638 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5639 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5640 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5641 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5642 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5643 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5644 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5645 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5646 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5647 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5648 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5649 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5650 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5651
2019
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5652 <function id="GetLocalInstance" num="155" since="1.2">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5653 <synopsis>Get Local Instance</synopsis>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5654 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5655 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
5656 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
5657 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
5658 native method frames, whereas <code>GetLocalObject()</code> would
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5659 return <code>JVMTI_ERROR_OPAQUE_FRAME</code> in those cases.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5660 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5661 <origin>new</origin>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5662 <capabilities>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5663 <required id="can_access_local_variables"></required>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5664 </capabilities>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5665 <parameters>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5666 <param id="thread">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5667 <jthread null="current" frame="frame"/>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5668 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5669 The thread of the frame containing the variable's value.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5670 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5671 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5672 <param id="depth">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5673 <jframeID thread="thread"/>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5674 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5675 The depth of the frame containing the variable's value.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5676 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5677 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5678 <param id="value_ptr">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5679 <outptr><jobject/></outptr>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5680 <description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5681 On return, points to the variable's value.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5682 </description>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5683 </param>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5684 </parameters>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5685 <errors>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5686 <error id="JVMTI_ERROR_INVALID_SLOT">
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5687 If the specified frame is a static method frame.
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5688 </error>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5689 </errors>
09b4dd4f152b 7004582: Add GetThisObject() function to JVMTI 1.2
kamg
parents: 1988
diff changeset
5690 </function>
0
a61af66fc99e Initial load
duke
parents:
diff changeset
5691 <function id="GetLocalInt" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
5692 <synopsis>Get Local Variable - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5693 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5694 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5695 variable whose type is <code>int</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5696 <code>short</code>, <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5697 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5698 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5699 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5700 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5701 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5702 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5703 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5704 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5705 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5706 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5707 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5708 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5709 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5710 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5711 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5712 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5713 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5714 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5715 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5716 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5717 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5718 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5719 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5720 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5721 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5722 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5723 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5724 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5725 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5726 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5727 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5728 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5729 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5730 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5731 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5732 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5733 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5734 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5735 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5736 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5737 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5738 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5739 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5740 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5741 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5742 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5743 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5744
a61af66fc99e Initial load
duke
parents:
diff changeset
5745 <function id="GetLocalLong" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
5746 <synopsis>Get Local Variable - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5747 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5748 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5749 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5750 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5751 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5752 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5753 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5754 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5755 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5756 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5757 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5758 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5759 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5760 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5761 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5762 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5763 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5764 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5765 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5766 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5767 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5768 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5769 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5771 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5772 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5773 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5774 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5775 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5776 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5777 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5778 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5779 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5780 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5781 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5782 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5783 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5784 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5785 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5786 The variable type is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5787 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5788 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5789 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5790 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5791 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5792 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5793
a61af66fc99e Initial load
duke
parents:
diff changeset
5794 <function id="GetLocalFloat" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
5795 <synopsis>Get Local Variable - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5796 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5797 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5798 variable whose type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5799 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5800 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5801 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5802 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5803 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5804 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5805 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5806 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5807 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5808 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5809 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5810 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5811 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5812 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5813 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5814 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5815 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5816 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5817 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5818 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5819 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5820 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5821 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5822 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5823 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5824 <outptr><jfloat/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5825 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5826 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5827 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5828 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5829 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5830 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5831 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5832 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5833 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5834 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5835 The variable type is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5836 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5837 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5838 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5839 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5840 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5841 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5842
a61af66fc99e Initial load
duke
parents:
diff changeset
5843 <function id="GetLocalDouble" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
5844 <synopsis>Get Local Variable - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5845 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5846 This function can be used to retrieve the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5847 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5848 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5849 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5850 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5851 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5852 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5853 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5854 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5855 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5856 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5857 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5858 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5859 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5860 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5861 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5862 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5863 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5864 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5865 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5866 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5867 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5868 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5869 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5870 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5871 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5872 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
5873 <outptr><jdouble/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
5874 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5875 On return, points to the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5876 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5877 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5878 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5879 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5880 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5881 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5882 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5883 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5884 The variable type is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5885 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5886 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5887 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5888 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5889 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5890 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5891
a61af66fc99e Initial load
duke
parents:
diff changeset
5892 <function id="SetLocalObject" num="26">
a61af66fc99e Initial load
duke
parents:
diff changeset
5893 <synopsis>Set Local Variable - Object</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5894 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5895 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5896 variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5897 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5898 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5899 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5900 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5901 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5902 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5903 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5904 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5905 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5906 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5907 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5908 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5909 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5910 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5911 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5912 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5913 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5914 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5915 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5916 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5917 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5918 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5919 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5920 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5921 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
5922 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5923 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5924 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5925 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5926 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5927 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5928 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5929 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5930 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5931 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5932 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5933 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5934 <code>Object</code> or a subclass of <code>Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5935 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5936 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5937 The supplied <paramlink id="value"/> is not compatible
a61af66fc99e Initial load
duke
parents:
diff changeset
5938 with the variable type.
a61af66fc99e Initial load
duke
parents:
diff changeset
5939 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5940 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5941 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5942 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5943 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5944 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5945
a61af66fc99e Initial load
duke
parents:
diff changeset
5946 <function id="SetLocalInt" num="27">
a61af66fc99e Initial load
duke
parents:
diff changeset
5947 <synopsis>Set Local Variable - Int</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
5948 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5949 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
5950 variable whose type is <code>int</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5951 <code>short</code>, <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5952 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5953 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5954 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
5955 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5956 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
5957 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
5958 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5959 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
5960 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5961 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5962 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5963 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5964 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5965 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
5966 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5967 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5968 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
5969 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5970 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5971 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
5972 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5973 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5974 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
5975 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5976 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5977 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
5978 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
5979 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5980 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
5981 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
5982 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
5983 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
5984 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5985 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
5986 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5987 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5988 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
5989 The variable type is not
a61af66fc99e Initial load
duke
parents:
diff changeset
5990 <code>int</code>, <code>short</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
5991 <code>char</code>, <code>byte</code>, or
a61af66fc99e Initial load
duke
parents:
diff changeset
5992 <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
5993 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5994 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
5995 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
5996 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
5997 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
5998 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
5999
a61af66fc99e Initial load
duke
parents:
diff changeset
6000 <function id="SetLocalLong" num="28">
a61af66fc99e Initial load
duke
parents:
diff changeset
6001 <synopsis>Set Local Variable - Long</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6002 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6003 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6004 variable whose type is <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6005 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6006 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6007 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6008 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6009 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6010 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6011 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6012 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6013 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6014 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6015 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6016 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6017 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6018 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6019 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6020 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6021 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6022 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6023 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6024 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6025 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6026 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6027 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6028 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6029 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6030 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6031 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6032 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6033 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6034 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6035 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6036 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6037 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6038 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6039 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6040 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6041 The variable type is not <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6042 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6043 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6044 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6045 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6046 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6047 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6048
a61af66fc99e Initial load
duke
parents:
diff changeset
6049 <function id="SetLocalFloat" num="29">
a61af66fc99e Initial load
duke
parents:
diff changeset
6050 <synopsis>Set Local Variable - Float</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6051 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6052 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6053 variable whose type is <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6054 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6055 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6056 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6057 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6058 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6059 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6060 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6061 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6062 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6063 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6064 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6065 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6066 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6067 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6068 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6069 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6070 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6071 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6072 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6073 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6074 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6075 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6076 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6077 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6078 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6079 <jfloat/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6080 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6081 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6082 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6083 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6084 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6085 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6086 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6087 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6088 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6089 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6090 The variable type is not <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6091 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6092 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6093 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6094 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6095 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6096 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6097
a61af66fc99e Initial load
duke
parents:
diff changeset
6098 <function id="SetLocalDouble" num="30">
a61af66fc99e Initial load
duke
parents:
diff changeset
6099 <synopsis>Set Local Variable - Double</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6100 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6101 This function can be used to set the value of a local
a61af66fc99e Initial load
duke
parents:
diff changeset
6102 variable whose type is <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6103 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6104 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6105 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6106 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6107 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6108 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6109 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
6110 <jthread null="current" frame="frame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6111 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6112 The thread of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6113 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6114 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6115 <param id="depth">
a61af66fc99e Initial load
duke
parents:
diff changeset
6116 <jframeID thread="thread"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6117 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6118 The depth of the frame containing the variable's value.
a61af66fc99e Initial load
duke
parents:
diff changeset
6119 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6120 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6121 <param id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
6122 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6123 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6124 The variable's slot number.
a61af66fc99e Initial load
duke
parents:
diff changeset
6125 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6126 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6127 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
6128 <jdouble/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6129 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6130 The new value for the variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6131 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6132 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6133 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6134 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6135 <error id="JVMTI_ERROR_INVALID_SLOT">
a61af66fc99e Initial load
duke
parents:
diff changeset
6136 Invalid <code>slot</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6137 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6138 <error id="JVMTI_ERROR_TYPE_MISMATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
6139 The variable type is not <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6140 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6141 <error id="JVMTI_ERROR_OPAQUE_FRAME">
a61af66fc99e Initial load
duke
parents:
diff changeset
6142 Not a visible frame
a61af66fc99e Initial load
duke
parents:
diff changeset
6143 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6144 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6145 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6146 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6147
a61af66fc99e Initial load
duke
parents:
diff changeset
6148 <category id="breakpointCategory" label="Breakpoint">
a61af66fc99e Initial load
duke
parents:
diff changeset
6149
a61af66fc99e Initial load
duke
parents:
diff changeset
6150 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6151 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6152
a61af66fc99e Initial load
duke
parents:
diff changeset
6153 <function id="SetBreakpoint" num="38">
a61af66fc99e Initial load
duke
parents:
diff changeset
6154 <synopsis>Set Breakpoint</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6155 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6156 Set a breakpoint at the instruction indicated by
a61af66fc99e Initial load
duke
parents:
diff changeset
6157 <code>method</code> and <code>location</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6158 An instruction can only have one breakpoint.
a61af66fc99e Initial load
duke
parents:
diff changeset
6159 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6160 Whenever the designated instruction is about to be executed, a
a61af66fc99e Initial load
duke
parents:
diff changeset
6161 <eventlink id="Breakpoint"></eventlink> event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
6162 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6163 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6164 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6165 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6166 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6167 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6168 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6169 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6170 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6171 The class in which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6172 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6173 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6174 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
6175 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6176 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6177 The method in which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6178 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6179 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6180 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
6181 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6182 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6183 the index of the instruction at which to set the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6184
a61af66fc99e Initial load
duke
parents:
diff changeset
6185 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6186 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6187 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6188 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6189 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6190 The designated bytecode already has a breakpoint.
a61af66fc99e Initial load
duke
parents:
diff changeset
6191 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6192 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6193 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6194
a61af66fc99e Initial load
duke
parents:
diff changeset
6195 <function id="ClearBreakpoint" num="39">
a61af66fc99e Initial load
duke
parents:
diff changeset
6196 <synopsis>Clear Breakpoint</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6197 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6198 Clear the breakpoint at the bytecode indicated by
a61af66fc99e Initial load
duke
parents:
diff changeset
6199 <code>method</code> and <code>location</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6200 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6201 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6202 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6203 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6204 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6205 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6206 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6207 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6208 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6209 The class in which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6210 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6211 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6212 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
6213 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6214 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6215 The method in which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6216 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6217 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6218 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
6219 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6220 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6221 the index of the instruction at which to clear the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
6222 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6223 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6224 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6225 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6226 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6227 There's no breakpoint at the designated bytecode.
a61af66fc99e Initial load
duke
parents:
diff changeset
6228 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6229 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6230 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6231
a61af66fc99e Initial load
duke
parents:
diff changeset
6232 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6233
a61af66fc99e Initial load
duke
parents:
diff changeset
6234 <category id="fieldWatch" label="Watched Field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6235
a61af66fc99e Initial load
duke
parents:
diff changeset
6236 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6237 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6238
a61af66fc99e Initial load
duke
parents:
diff changeset
6239 <function id="SetFieldAccessWatch" num="41">
a61af66fc99e Initial load
duke
parents:
diff changeset
6240 <synopsis>Set Field Access Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6241 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6242 Generate a <eventlink id="FieldAccess"></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
6243 when the field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6244 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6245 <code>field</code> is about to be accessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
6246 An event will be generated for each access of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
6247 until it is canceled with
a61af66fc99e Initial load
duke
parents:
diff changeset
6248 <functionlink id="ClearFieldAccessWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6249 Field accesses from Java programming language code or from JNI code are watched,
a61af66fc99e Initial load
duke
parents:
diff changeset
6250 fields modified by other means are not watched.
a61af66fc99e Initial load
duke
parents:
diff changeset
6251 Note that <jvmti/> users should be aware that their own field accesses
a61af66fc99e Initial load
duke
parents:
diff changeset
6252 will trigger the watch.
a61af66fc99e Initial load
duke
parents:
diff changeset
6253 A field can only have one field access watch set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6254 Modification of a field is not considered an access--use
a61af66fc99e Initial load
duke
parents:
diff changeset
6255 <functionlink id="SetFieldModificationWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
6256 to monitor modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6257 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6258 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6259 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6260 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6261 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6262 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6263 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6264 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6265 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6266 The class containing the field to watch
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 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6270 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6271 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6272 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6273
a61af66fc99e Initial load
duke
parents:
diff changeset
6274 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6275 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6276 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6277 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6278 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6279 The designated field is already being watched for accesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
6280 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6281 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6282 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6283
a61af66fc99e Initial load
duke
parents:
diff changeset
6284 <function id="ClearFieldAccessWatch" num="42">
a61af66fc99e Initial load
duke
parents:
diff changeset
6285 <synopsis>Clear Field Access Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6286 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6287 Cancel a field access watch previously set by
a61af66fc99e Initial load
duke
parents:
diff changeset
6288 <functionlink id="SetFieldAccessWatch"></functionlink>, on the
a61af66fc99e Initial load
duke
parents:
diff changeset
6289 field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6290 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6291 <code>field</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6292 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6293 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6294 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6295 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6296 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6297 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6298 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6299 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6300 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6301 The class containing the field to watch
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 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6305 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6306 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6307 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6308
a61af66fc99e Initial load
duke
parents:
diff changeset
6309 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6310 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6311 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6312 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6313 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6314 The designated field is not being watched for accesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
6315 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6316 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6317 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6318
a61af66fc99e Initial load
duke
parents:
diff changeset
6319 <function id="SetFieldModificationWatch" num="43">
a61af66fc99e Initial load
duke
parents:
diff changeset
6320 <synopsis>Set Field Modification Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6321 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6322 Generate a <eventlink id="FieldModification"></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
6323 when the field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6324 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6325 <code>field</code> is about to be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
6326 An event will be generated for each modification of the field
a61af66fc99e Initial load
duke
parents:
diff changeset
6327 until it is canceled with
a61af66fc99e Initial load
duke
parents:
diff changeset
6328 <functionlink id="ClearFieldModificationWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6329 Field modifications from Java programming language code or from JNI code are watched,
a61af66fc99e Initial load
duke
parents:
diff changeset
6330 fields modified by other means are not watched.
a61af66fc99e Initial load
duke
parents:
diff changeset
6331 Note that <jvmti/> users should be aware that their own field modifications
a61af66fc99e Initial load
duke
parents:
diff changeset
6332 will trigger the watch.
a61af66fc99e Initial load
duke
parents:
diff changeset
6333 A field can only have one field modification watch set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6334 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6335 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6336 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6337 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6338 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6339 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6340 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6341 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6342 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6343 The class containing the field to watch
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 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6347 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6348 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6349 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6350
a61af66fc99e Initial load
duke
parents:
diff changeset
6351 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6352 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6353 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6354 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6355 <error id="JVMTI_ERROR_DUPLICATE">
a61af66fc99e Initial load
duke
parents:
diff changeset
6356 The designated field is already being watched for modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6357 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6358 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6359 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6360
a61af66fc99e Initial load
duke
parents:
diff changeset
6361 <function id="ClearFieldModificationWatch" num="44">
a61af66fc99e Initial load
duke
parents:
diff changeset
6362 <synopsis>Clear Field Modification Watch</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6363 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6364
a61af66fc99e Initial load
duke
parents:
diff changeset
6365 Cancel a field modification watch previously set by
a61af66fc99e Initial load
duke
parents:
diff changeset
6366 <functionlink id="SetFieldModificationWatch"></functionlink>, on the
a61af66fc99e Initial load
duke
parents:
diff changeset
6367 field specified
a61af66fc99e Initial load
duke
parents:
diff changeset
6368 by <code>klass</code> and
a61af66fc99e Initial load
duke
parents:
diff changeset
6369 <code>field</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6370 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6371 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6372 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6373 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6374 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6375 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6376 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6377 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6378 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6379 The class containing the field to watch
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 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
6383 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6384 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6385 The field to watch
a61af66fc99e Initial load
duke
parents:
diff changeset
6386
a61af66fc99e Initial load
duke
parents:
diff changeset
6387 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6388 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6389 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6390 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6391 <error id="JVMTI_ERROR_NOT_FOUND">
a61af66fc99e Initial load
duke
parents:
diff changeset
6392 The designated field is not being watched for modifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
6393 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6394 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6395 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6396 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
6397
a61af66fc99e Initial load
duke
parents:
diff changeset
6398 <category id="class" label="Class">
a61af66fc99e Initial load
duke
parents:
diff changeset
6399
a61af66fc99e Initial load
duke
parents:
diff changeset
6400 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6401 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
6402
a61af66fc99e Initial load
duke
parents:
diff changeset
6403 <function id="GetLoadedClasses" jkernel="yes" num="78">
a61af66fc99e Initial load
duke
parents:
diff changeset
6404 <synopsis>Get Loaded Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6405 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6406 Return an array of all classes loaded in the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
6407 The number of classes in the array is returned via
a61af66fc99e Initial load
duke
parents:
diff changeset
6408 <code>class_count_ptr</code>, and the array itself via
a61af66fc99e Initial load
duke
parents:
diff changeset
6409 <code>classes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6410 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6411 Array classes of all types (including arrays of primitive types) are
a61af66fc99e Initial load
duke
parents:
diff changeset
6412 included in the returned list. Primitive classes (for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
6413 <code>java.lang.Integer.TYPE</code>) are <i>not</i> included in this list.
a61af66fc99e Initial load
duke
parents:
diff changeset
6414 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6415 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6416 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6417 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6418 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6419 <param id="class_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6420 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6421 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6422 On return, points to the number of classes.
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 <param id="classes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6426 <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6427 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6428 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
6429 for each class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6430 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6431 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6432 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6433 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6434 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6435 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6436
a61af66fc99e Initial load
duke
parents:
diff changeset
6437 <function id="GetClassLoaderClasses" jkernel="yes" num="79">
a61af66fc99e Initial load
duke
parents:
diff changeset
6438 <synopsis>Get Classloader Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6439 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6440 Returns an array of those classes for which this class loader has
a61af66fc99e Initial load
duke
parents:
diff changeset
6441 been recorded as an initiating loader. Each
a61af66fc99e Initial load
duke
parents:
diff changeset
6442 class in the returned array was created by this class loader,
a61af66fc99e Initial load
duke
parents:
diff changeset
6443 either by defining it directly or by delegation to another class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
6444 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
6445 <vmspeclink id="ConstantPool.doc.html#72007"
a61af66fc99e Initial load
duke
parents:
diff changeset
6446 name="Creation and Loading section"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6447 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6448 For JDK version 1.1 implementations that don't
a61af66fc99e Initial load
duke
parents:
diff changeset
6449 recognize the distinction between initiating and defining class loaders,
a61af66fc99e Initial load
duke
parents:
diff changeset
6450 this function should return all classes loaded in the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
6451 The number of classes in the array is returned via
a61af66fc99e Initial load
duke
parents:
diff changeset
6452 <code>class_count_ptr</code>, and the array itself via
a61af66fc99e Initial load
duke
parents:
diff changeset
6453 <code>classes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6454 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6455 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6456 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6457 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6458 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6459 <param id="initiating_loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
6460 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
6461 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6462 <nullok>the classes initiated by the bootstrap loader will be returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6463 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
6464 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6465 An initiating class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
6466 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6467 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6468 <param id="class_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6469 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6470 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6471 On return, points to the number of classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
6472 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6473 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6474 <param id="classes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6475 <allocbuf outcount="class_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6476 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6477 On return, points to an array of references, one
a61af66fc99e Initial load
duke
parents:
diff changeset
6478 for each class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6479 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6480 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6481 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6482 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6483 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6484 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6485
a61af66fc99e Initial load
duke
parents:
diff changeset
6486 <function id="GetClassSignature" phase="start" num="48">
a61af66fc99e Initial load
duke
parents:
diff changeset
6487 <synopsis>Get Class Signature</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6488 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6489 For the class indicated by <code>klass</code>, return the
a61af66fc99e Initial load
duke
parents:
diff changeset
6490 <externallink id="http://java.sun.com/javase/6/docs/guide/jni/spec/types.html#wp16432">JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
6491 type signature</externallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
6492 and the generic signature of the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6493 For example, <code>java.util.List</code> is <code>"Ljava/util/List;"</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6494 and <code>int[]</code> is <code>"[I"</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6495 The returned name for primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6496 is the type signature character of the corresponding primitive type.
a61af66fc99e Initial load
duke
parents:
diff changeset
6497 For example, <code>java.lang.Integer.TYPE</code> is <code>"I"</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6498 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6499 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6500 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6501 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6502 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6503 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6504 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6505 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6506 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6507 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6508 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6509 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6510 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6511 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6512 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6513 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6514 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6515 On return, points to the JNI type signature of the class, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6516 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6517 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6518 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6519 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6520 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6521 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6522 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
6523 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6524 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6525 On return, points to the generic signature of the class, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6526 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6527 If there is no generic signature attribute for the class, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
6528 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6529 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6530 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6531 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6532 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6533 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6534 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6535
a61af66fc99e Initial load
duke
parents:
diff changeset
6536 <function id="GetClassStatus" phase="start" num="49">
a61af66fc99e Initial load
duke
parents:
diff changeset
6537 <synopsis>Get Class Status</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6538 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6539 Get the status of the class. Zero or more of the following bits can be
a61af66fc99e Initial load
duke
parents:
diff changeset
6540 set.
a61af66fc99e Initial load
duke
parents:
diff changeset
6541 <constants id="jvmtiClassStatus" label="Class Status Flags" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
6542 <constant id="JVMTI_CLASS_STATUS_VERIFIED" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6543 Class bytecodes have been verified
a61af66fc99e Initial load
duke
parents:
diff changeset
6544 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6545 <constant id="JVMTI_CLASS_STATUS_PREPARED" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
6546 Class preparation is complete
a61af66fc99e Initial load
duke
parents:
diff changeset
6547 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6548 <constant id="JVMTI_CLASS_STATUS_INITIALIZED" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
6549 Class initialization is complete. Static initializer has been run.
a61af66fc99e Initial load
duke
parents:
diff changeset
6550 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6551 <constant id="JVMTI_CLASS_STATUS_ERROR" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
6552 Error during initialization makes class unusable
a61af66fc99e Initial load
duke
parents:
diff changeset
6553 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6554 <constant id="JVMTI_CLASS_STATUS_ARRAY" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
6555 Class is an array. If set, all other bits are zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
6556 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6557 <constant id="JVMTI_CLASS_STATUS_PRIMITIVE" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
6558 Class is a primitive class (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6559 If set, all other bits are zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
6560 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
6561 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
6562 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6563 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6564 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6565 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6566 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6567 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6568 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6569 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6570 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6571 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6572 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6573 <param id="status_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6574 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6575 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6576 On return, points to the current state of this class as one or
a61af66fc99e Initial load
duke
parents:
diff changeset
6577 more of the <internallink id="jvmtiClassStatus">class status flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6578 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6579 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6580 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6581 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6582 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6583 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6584
a61af66fc99e Initial load
duke
parents:
diff changeset
6585 <function id="GetSourceFileName" phase="start" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
6586 <synopsis>Get Source File Name</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6587 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6588 For the class indicated by <code>klass</code>, return the source file
a61af66fc99e Initial load
duke
parents:
diff changeset
6589 name via <code>source_name_ptr</code>. The returned string
a61af66fc99e Initial load
duke
parents:
diff changeset
6590 is a file name only and never contains a directory name.
a61af66fc99e Initial load
duke
parents:
diff changeset
6591 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6592 For primitive classes (for example, <code>java.lang.Integer.TYPE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
6593 and for arrays this function returns
a61af66fc99e Initial load
duke
parents:
diff changeset
6594 <errorlink id="JVMTI_ERROR_ABSENT_INFORMATION"></errorlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6595 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6596 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6597 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6598 <required id="can_get_source_file_name"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6599 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6600 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6601 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6602 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6603 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6604 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6605 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6606 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6607 <param id="source_name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6608 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6609 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6610 On return, points to the class's source file name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
6611 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
6612 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6613 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6614 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6615 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6616 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6617 Class information does not include a source file name. This includes
a61af66fc99e Initial load
duke
parents:
diff changeset
6618 cases where the class is an array class or primitive class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6619 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6620 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6621 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6622
a61af66fc99e Initial load
duke
parents:
diff changeset
6623 <function id="GetClassModifiers" phase="start" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
6624 <synopsis>Get Class Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6625 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6626 For the class indicated by <code>klass</code>, return the access
a61af66fc99e Initial load
duke
parents:
diff changeset
6627 flags
a61af66fc99e Initial load
duke
parents:
diff changeset
6628 via <code>modifiers_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6629 Access flags are defined in the
a61af66fc99e Initial load
duke
parents:
diff changeset
6630 <vmspeclink id="ClassFile.doc.html"
a61af66fc99e Initial load
duke
parents:
diff changeset
6631 name="Class File Format chapter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6632 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6633 If the class is an array class, then its public, private, and protected
a61af66fc99e Initial load
duke
parents:
diff changeset
6634 modifiers are the same as those of its component type. For arrays of
a61af66fc99e Initial load
duke
parents:
diff changeset
6635 primitives, this component type is represented by one of the primitive
a61af66fc99e Initial load
duke
parents:
diff changeset
6636 classes (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6637 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6638 If the class is a primitive class, its public modifier is always true,
a61af66fc99e Initial load
duke
parents:
diff changeset
6639 and its protected and private modifiers are always false.
a61af66fc99e Initial load
duke
parents:
diff changeset
6640 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6641 If the class is an array class or a primitive class then its final
a61af66fc99e Initial load
duke
parents:
diff changeset
6642 modifier is always true and its interface modifier is always false.
a61af66fc99e Initial load
duke
parents:
diff changeset
6643 The values of its other modifiers are not determined by this specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
6644
a61af66fc99e Initial load
duke
parents:
diff changeset
6645 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6646 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6647 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6648 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6649 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6650 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6651 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6652 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6653 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6654 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6655 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6656 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6657 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6658 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6659 On return, points to the current access flags of this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6660
a61af66fc99e Initial load
duke
parents:
diff changeset
6661 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6662 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6663 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6664 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6665 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6666 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6667
a61af66fc99e Initial load
duke
parents:
diff changeset
6668 <function id="GetClassMethods" phase="start" num="52">
a61af66fc99e Initial load
duke
parents:
diff changeset
6669 <synopsis>Get Class Methods</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6670 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6671 For the class indicated by <code>klass</code>, return a count of
a61af66fc99e Initial load
duke
parents:
diff changeset
6672 methods via <code>method_count_ptr</code> and a list of
a61af66fc99e Initial load
duke
parents:
diff changeset
6673 method IDs via <code>methods_ptr</code>. The method list contains
a61af66fc99e Initial load
duke
parents:
diff changeset
6674 constructors and static initializers as well as true methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
6675 Only directly declared methods are returned (not inherited methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
6676 An empty method list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6677 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6678 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6679 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6680 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6681 <capability id="can_maintain_original_method_order"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6682 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6683 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6684 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6685 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6687 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6688 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6689 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6690 <param id="method_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6691 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6692 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6693 On return, points to the number of methods declared in this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6694 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6695 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6696 <param id="methods_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6697 <allocbuf outcount="method_count_ptr"><jmethodID class="klass"/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6698 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6699 On return, points to the method ID array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6700 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6701 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6702 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6703 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6704 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6705 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6706 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6707 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6708 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6709
a61af66fc99e Initial load
duke
parents:
diff changeset
6710 <function id="GetClassFields" phase="start" num="53">
a61af66fc99e Initial load
duke
parents:
diff changeset
6711 <synopsis>Get Class Fields</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6712 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6713 For the class indicated by <code>klass</code>, return a count of fields
a61af66fc99e Initial load
duke
parents:
diff changeset
6714 via <code>field_count_ptr</code> and a list of field IDs via
a61af66fc99e Initial load
duke
parents:
diff changeset
6715 <code>fields_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6716 Only directly declared fields are returned (not inherited fields).
a61af66fc99e Initial load
duke
parents:
diff changeset
6717 Fields are returned in the order they occur in the class file.
a61af66fc99e Initial load
duke
parents:
diff changeset
6718 An empty field list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6719 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6720 Use JNI to determine the length of an array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6721 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6722 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6723 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6724 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6725 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6726 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6727 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6728 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6729 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6730 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6731 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6732 <param id="field_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6733 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6734 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6735 On return, points to the number of fields declared in this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6736 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6737 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6738 <param id="fields_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6739 <allocbuf outcount="field_count_ptr"><jfieldID/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6740 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6741 On return, points to the field ID array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6742 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6743 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6744 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6745 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6746 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6747 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6748 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6749 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6750 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6751
a61af66fc99e Initial load
duke
parents:
diff changeset
6752 <function id="GetImplementedInterfaces" phase="start" num="54">
a61af66fc99e Initial load
duke
parents:
diff changeset
6753 <synopsis>Get Implemented Interfaces</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6754 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6755 Return the direct super-interfaces of this class. For a class, this
a61af66fc99e Initial load
duke
parents:
diff changeset
6756 function returns the interfaces declared in its <code>implements</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6757 clause. For an interface, this function returns the interfaces declared in
a61af66fc99e Initial load
duke
parents:
diff changeset
6758 its <code>extends</code> clause.
a61af66fc99e Initial load
duke
parents:
diff changeset
6759 An empty interface list is returned for array classes and primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
6760 (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
6761 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6762 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6763 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6764 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6765 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6766 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6767 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6768 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6769 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6770 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6771 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6772 <param id="interface_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6773 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6774 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6775 On return, points to the number of interfaces.
a61af66fc99e Initial load
duke
parents:
diff changeset
6776 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6777 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6778 <param id="interfaces_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6779 <allocbuf outcount="interface_count_ptr"><jclass/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6780 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6781 On return, points to the interface array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6782 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6783 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6784 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6785 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6786 <error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
a61af66fc99e Initial load
duke
parents:
diff changeset
6787 <paramlink id="klass"></paramlink> is not prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
6788 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6789 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6790 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6791
a61af66fc99e Initial load
duke
parents:
diff changeset
6792 <function id="GetClassVersionNumbers" phase="start" num="145" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6793 <synopsis>Get Class Version Numbers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6794 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6795 For the class indicated by <code>klass</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6796 return the minor and major version numbers,
a61af66fc99e Initial load
duke
parents:
diff changeset
6797 as defined in the
a61af66fc99e Initial load
duke
parents:
diff changeset
6798 <vmspeclink id="ClassFile.doc.html"
a61af66fc99e Initial load
duke
parents:
diff changeset
6799 name="Class File Format chapter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6800 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6801 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6802 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6803 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6804 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6805 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6806 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6807 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6808 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6809 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6810 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6811 <param id="minor_version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6812 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6813 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6814 On return, points to the value of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6815 <code>minor_version</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6816 Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6817 Note: to be consistent with the Class File Format,
a61af66fc99e Initial load
duke
parents:
diff changeset
6818 the minor version number is the first parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
6819 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6820 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6821 <param id="major_version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6822 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6823 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6824 On return, points to the value of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6825 <code>major_version</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6826 Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6827 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6828 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6829 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6830 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6831 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6832 The class is a primitive or array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6833 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6834 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6835 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6836
a61af66fc99e Initial load
duke
parents:
diff changeset
6837 <function id="GetConstantPool" phase="start" num="146" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6838 <synopsis>Get Constant Pool</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6839 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6840 For the class indicated by <code>klass</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
6841 return the raw bytes of the constant pool in the format of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6842 <code>constant_pool</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6843 <vmspeclink id="ClassFile.doc.html"
a61af66fc99e Initial load
duke
parents:
diff changeset
6844 name="Class File Format"
a61af66fc99e Initial load
duke
parents:
diff changeset
6845 preposition="in"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6846 The format of the constant pool may differ between versions
a61af66fc99e Initial load
duke
parents:
diff changeset
6847 of the Class File Format, so, the
a61af66fc99e Initial load
duke
parents:
diff changeset
6848 <functionlink id="GetClassVersionNumbers">minor and major
a61af66fc99e Initial load
duke
parents:
diff changeset
6849 class version numbers</functionlink> should be checked for
a61af66fc99e Initial load
duke
parents:
diff changeset
6850 compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
6851 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6852 The returned constant pool might not have the same layout or
a61af66fc99e Initial load
duke
parents:
diff changeset
6853 contents as the constant pool in the defining class file.
a61af66fc99e Initial load
duke
parents:
diff changeset
6854 The constant pool returned by GetConstantPool() may have
a61af66fc99e Initial load
duke
parents:
diff changeset
6855 more or fewer entries than the defining constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6856 Entries may be in a different order.
a61af66fc99e Initial load
duke
parents:
diff changeset
6857 The constant pool returned by GetConstantPool() will match the
a61af66fc99e Initial load
duke
parents:
diff changeset
6858 constant pool used by
a61af66fc99e Initial load
duke
parents:
diff changeset
6859 <functionlink id="GetBytecodes">GetBytecodes()</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
6860 That is, the bytecodes returned by GetBytecodes() will have
a61af66fc99e Initial load
duke
parents:
diff changeset
6861 constant pool indices which refer to constant pool entries returned
a61af66fc99e Initial load
duke
parents:
diff changeset
6862 by GetConstantPool().
a61af66fc99e Initial load
duke
parents:
diff changeset
6863 Note that since <functionlink id="RetransformClasses"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6864 and <functionlink id="RedefineClasses"/> can change
a61af66fc99e Initial load
duke
parents:
diff changeset
6865 the constant pool, the constant pool returned by this function
a61af66fc99e Initial load
duke
parents:
diff changeset
6866 can change accordingly. Thus, the correspondence between
a61af66fc99e Initial load
duke
parents:
diff changeset
6867 GetConstantPool() and GetBytecodes() does not hold if there
a61af66fc99e Initial load
duke
parents:
diff changeset
6868 is an intervening class retransformation or redefinition.
a61af66fc99e Initial load
duke
parents:
diff changeset
6869 The value of a constant pool entry used by a given bytecode will
a61af66fc99e Initial load
duke
parents:
diff changeset
6870 match that of the defining class file (even if the indices don't match).
a61af66fc99e Initial load
duke
parents:
diff changeset
6871 Constant pool entries which are not used directly or indirectly by
a61af66fc99e Initial load
duke
parents:
diff changeset
6872 bytecodes (for example, UTF-8 strings associated with annotations) are
a61af66fc99e Initial load
duke
parents:
diff changeset
6873 not required to exist in the returned constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6874 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6875 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6876 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6877 <required id="can_get_constant_pool"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
6878 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6879 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6880 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6881 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6882 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6883 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6884 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6885 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6886 <param id="constant_pool_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6887 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6888 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6889 On return, points to the number of entries
a61af66fc99e Initial load
duke
parents:
diff changeset
6890 in the constant pool table plus one.
a61af66fc99e Initial load
duke
parents:
diff changeset
6891 This corresponds to the <code>constant_pool_count</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
6892 item of the Class File Format.
a61af66fc99e Initial load
duke
parents:
diff changeset
6893 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6894 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6895 <param id="constant_pool_byte_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6896 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6897 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6898 On return, points to the number of bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
6899 in the returned raw constant pool.
a61af66fc99e Initial load
duke
parents:
diff changeset
6900 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6901 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6902 <param id="constant_pool_bytes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6903 <allocbuf outcount="constant_pool_byte_count_ptr"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
6904 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6905 On return, points to the raw constant pool, that is the bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
6906 defined by the <code>constant_pool</code> item of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6907 Class File Format
a61af66fc99e Initial load
duke
parents:
diff changeset
6908 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6909 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6910 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6911 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6912 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
6913 The class is a primitive or array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
6914 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
6915 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6916 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6917
a61af66fc99e Initial load
duke
parents:
diff changeset
6918 <function id="IsInterface" phase="start" num="55">
a61af66fc99e Initial load
duke
parents:
diff changeset
6919 <synopsis>Is Interface</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6920 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6921 Determines whether a class object reference represents an interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
6922 The <code>jboolean</code> result is
a61af66fc99e Initial load
duke
parents:
diff changeset
6923 <code>JNI_TRUE</code> if the "class" is actually an interface,
a61af66fc99e Initial load
duke
parents:
diff changeset
6924 <code>JNI_FALSE</code> otherwise.
a61af66fc99e Initial load
duke
parents:
diff changeset
6925 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6926 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6927 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6928 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6929 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6930 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6931 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6932 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6933 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6934 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6935 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6936 <param id="is_interface_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6937 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6938 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6939 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
6940
a61af66fc99e Initial load
duke
parents:
diff changeset
6941 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6942 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6943 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6944 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6945 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6946 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6947
a61af66fc99e Initial load
duke
parents:
diff changeset
6948 <function id="IsArrayClass" phase="start" num="56">
a61af66fc99e Initial load
duke
parents:
diff changeset
6949 <synopsis>Is Array Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6950 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6951 Determines whether a class object reference represents an array.
a61af66fc99e Initial load
duke
parents:
diff changeset
6952 The <code>jboolean</code> result is
a61af66fc99e Initial load
duke
parents:
diff changeset
6953 <code>JNI_TRUE</code> if the class is an array,
a61af66fc99e Initial load
duke
parents:
diff changeset
6954 <code>JNI_FALSE</code> otherwise.
a61af66fc99e Initial load
duke
parents:
diff changeset
6955 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6956 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
6957 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6958 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
6959 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6960 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
6961 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6962 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6963 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
6964 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6965 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6966 <param id="is_array_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
6967 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
6968 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6969 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
6970
a61af66fc99e Initial load
duke
parents:
diff changeset
6971 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6972 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
6973 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
6974 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6975 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
6976 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
6977
a61af66fc99e Initial load
duke
parents:
diff changeset
6978 <function id="IsModifiableClass" jkernel="yes" phase="start" num="45" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
6979 <synopsis>Is Modifiable Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
6980 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
6981 Determines whether a class is modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6982 If a class is modifiable (<paramlink id="is_modifiable_class_ptr"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6983 returns <code>JNI_TRUE</code>) the class can be
a61af66fc99e Initial load
duke
parents:
diff changeset
6984 redefined with <functionlink id="RedefineClasses"/> (assuming
a61af66fc99e Initial load
duke
parents:
diff changeset
6985 the agent possesses the
a61af66fc99e Initial load
duke
parents:
diff changeset
6986 <fieldlink id="can_redefine_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6987 capability) or
a61af66fc99e Initial load
duke
parents:
diff changeset
6988 retransformed with <functionlink id="RetransformClasses"/> (assuming
a61af66fc99e Initial load
duke
parents:
diff changeset
6989 the agent possesses the
a61af66fc99e Initial load
duke
parents:
diff changeset
6990 <fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6991 capability).
a61af66fc99e Initial load
duke
parents:
diff changeset
6992 If a class is not modifiable (<paramlink id="is_modifiable_class_ptr"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6993 returns <code>JNI_FALSE</code>) the class can be neither
a61af66fc99e Initial load
duke
parents:
diff changeset
6994 redefined nor retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
6995 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6996 Primitive classes (for example, <code>java.lang.Integer.TYPE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
6997 and array classes are never modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
6998 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
6999 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7000 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7001 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7002 <capability id="can_redefine_any_class">
a61af66fc99e Initial load
duke
parents:
diff changeset
7003 If possessed then all classes (except primitive and array classes)
a61af66fc99e Initial load
duke
parents:
diff changeset
7004 are modifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
7005 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7006 <capability id="can_redefine_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7007 No effect on the result of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7008 But must additionally be possessed to modify the class with
a61af66fc99e Initial load
duke
parents:
diff changeset
7009 <functionlink id="RedefineClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7010 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7011 <capability id="can_retransform_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7012 No effect on the result of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7013 But must additionally be possessed to modify the class with
a61af66fc99e Initial load
duke
parents:
diff changeset
7014 <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7015 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7016 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7017 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7018 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7019 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7020 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7021 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7022 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7023 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7024 <param id="is_modifiable_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7025 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7026 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7027 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7028 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7029 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7030 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7031 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7032 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7033 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7034
a61af66fc99e Initial load
duke
parents:
diff changeset
7035 <function id="GetClassLoader" phase="start" num="57">
a61af66fc99e Initial load
duke
parents:
diff changeset
7036 <synopsis>Get Class Loader</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7037 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7038 For the class indicated by <code>klass</code>, return via
a61af66fc99e Initial load
duke
parents:
diff changeset
7039 <code>classloader_ptr</code> a reference to the class loader for the
a61af66fc99e Initial load
duke
parents:
diff changeset
7040 class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7041 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7042 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7043 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7044 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7045 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7046 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7047 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7048 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7049 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7050 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7051 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7052 <param id="classloader_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7053 <outptr><jobject/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7054 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7055 On return, points to the class loader that loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
7056 this class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7057 If the class was not created by a class loader
a61af66fc99e Initial load
duke
parents:
diff changeset
7058 or if the class loader is the bootstrap class loader,
a61af66fc99e Initial load
duke
parents:
diff changeset
7059 points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7060 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7061 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7062 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7063 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7064 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7065
a61af66fc99e Initial load
duke
parents:
diff changeset
7066 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7067
a61af66fc99e Initial load
duke
parents:
diff changeset
7068 <function id="GetSourceDebugExtension" phase="start" num="90">
a61af66fc99e Initial load
duke
parents:
diff changeset
7069 <synopsis>Get Source Debug Extension</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7070 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7071 For the class indicated by <code>klass</code>, return the debug
a61af66fc99e Initial load
duke
parents:
diff changeset
7072 extension via <code>source_debug_extension_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7073 The returned string
a61af66fc99e Initial load
duke
parents:
diff changeset
7074 contains exactly the debug extension information present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7075 class file of <code>klass</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7076 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7077 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7078 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7079 <required id="can_get_source_debug_extension"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7080 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7081 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7082 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7083 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7084 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7085 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7086 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7087 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7088 <param id="source_debug_extension_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7089 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7090 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7091 On return, points to the class's debug extension, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7092 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7093 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7094 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7095 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7096 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7097 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7098 Class information does not include a debug extension.
a61af66fc99e Initial load
duke
parents:
diff changeset
7099 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7100 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7101 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7102
a61af66fc99e Initial load
duke
parents:
diff changeset
7103 <function id="RetransformClasses" jkernel="yes" num="152" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
7104 <synopsis>Retransform Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7105 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7106 This function facilitates the
a61af66fc99e Initial load
duke
parents:
diff changeset
7107 <internallink id="bci">bytecode instrumentation</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7108 of already loaded classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7109 To replace the class definition without reference to the existing
a61af66fc99e Initial load
duke
parents:
diff changeset
7110 bytecodes, as one might do when recompiling from source for
a61af66fc99e Initial load
duke
parents:
diff changeset
7111 fix-and-continue debugging, <functionlink id="RedefineClasses"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7112 function should be used instead.
a61af66fc99e Initial load
duke
parents:
diff changeset
7113 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7114 When classes are initially loaded or when they are
a61af66fc99e Initial load
duke
parents:
diff changeset
7115 <functionlink id="RedefineClasses">redefined</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7116 the initial class file bytes can be transformed with the
a61af66fc99e Initial load
duke
parents:
diff changeset
7117 <eventlink id="ClassFileLoadHook"/> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
7118 This function reruns the transformation process
a61af66fc99e Initial load
duke
parents:
diff changeset
7119 (whether or not a transformation has previously occurred).
a61af66fc99e Initial load
duke
parents:
diff changeset
7120 This retransformation follows these steps:
a61af66fc99e Initial load
duke
parents:
diff changeset
7121 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7122 <li>starting from the initial class file bytes
a61af66fc99e Initial load
duke
parents:
diff changeset
7123 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7124 <li>for each <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
7125 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
7126 incapable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7127 agent which received a
a61af66fc99e Initial load
duke
parents:
diff changeset
7128 <code>ClassFileLoadHook</code> event during the previous
a61af66fc99e Initial load
duke
parents:
diff changeset
7129 load or redefine, the bytes it returned
a61af66fc99e Initial load
duke
parents:
diff changeset
7130 (via the <code>new_class_data</code> parameter)
a61af66fc99e Initial load
duke
parents:
diff changeset
7131 are reused as the output of the transformation;
a61af66fc99e Initial load
duke
parents:
diff changeset
7132 note that this is equivalent to reapplying
a61af66fc99e Initial load
duke
parents:
diff changeset
7133 the previous transformation, unaltered. except that
a61af66fc99e Initial load
duke
parents:
diff changeset
7134 the <code>ClassFileLoadHook</code> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7135 is <b>not</b> sent to these agents
a61af66fc99e Initial load
duke
parents:
diff changeset
7136 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7137 <li>for each <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
7138 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
7139 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7140 agent, the <code>ClassFileLoadHook</code> event is sent,
a61af66fc99e Initial load
duke
parents:
diff changeset
7141 allowing a new transformation to be applied
a61af66fc99e Initial load
duke
parents:
diff changeset
7142 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7143 <li>the transformed class file bytes are installed as the new
a61af66fc99e Initial load
duke
parents:
diff changeset
7144 definition of the class
a61af66fc99e Initial load
duke
parents:
diff changeset
7145 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7146 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7147 See the <eventlink id="ClassFileLoadHook"/> event for more details.
a61af66fc99e Initial load
duke
parents:
diff changeset
7148 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7149 The initial class file bytes represent the bytes passed to
a61af66fc99e Initial load
duke
parents:
diff changeset
7150 <code>ClassLoader.defineClass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7151 or <code>RedefineClasses</code> (before any transformations
a61af66fc99e Initial load
duke
parents:
diff changeset
7152 were applied), however they may not exactly match them.
a61af66fc99e Initial load
duke
parents:
diff changeset
7153 The constant pool may differ in ways described in
a61af66fc99e Initial load
duke
parents:
diff changeset
7154 <functionlink id="GetConstantPool"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7155 Constant pool indices in the bytecodes of methods will correspond.
a61af66fc99e Initial load
duke
parents:
diff changeset
7156 Some attributes may not be present.
a61af66fc99e Initial load
duke
parents:
diff changeset
7157 Where order is not meaningful, for example the order of methods,
a61af66fc99e Initial load
duke
parents:
diff changeset
7158 order may not be preserved.
a61af66fc99e Initial load
duke
parents:
diff changeset
7159 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7160 Retransformation can cause new versions of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7161 Old method versions may become
a61af66fc99e Initial load
duke
parents:
diff changeset
7162 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7163 The new method version will be used on new invokes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7164 If a method has active stack frames, those active frames continue to
a61af66fc99e Initial load
duke
parents:
diff changeset
7165 run the bytecodes of the original method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7166 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7167 This function does not cause any initialization except that which
a61af66fc99e Initial load
duke
parents:
diff changeset
7168 would occur under the customary JVM semantics.
a61af66fc99e Initial load
duke
parents:
diff changeset
7169 In other words, retransforming a class does not cause its initializers to be
a61af66fc99e Initial load
duke
parents:
diff changeset
7170 run. The values of static fields will remain as they were
a61af66fc99e Initial load
duke
parents:
diff changeset
7171 prior to the call.
a61af66fc99e Initial load
duke
parents:
diff changeset
7172 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7173 Threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
7174 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7175 All breakpoints in the class are cleared.
a61af66fc99e Initial load
duke
parents:
diff changeset
7176 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7177 All attributes are updated.
a61af66fc99e Initial load
duke
parents:
diff changeset
7178 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7179 Instances of the retransformed class are not affected -- fields retain their
a61af66fc99e Initial load
duke
parents:
diff changeset
7180 previous values.
a61af66fc99e Initial load
duke
parents:
diff changeset
7181 <functionlink id="GetTag">Tags</functionlink> on the instances are
a61af66fc99e Initial load
duke
parents:
diff changeset
7182 also unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
7183 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7184 In response to this call, no events other than the
a61af66fc99e Initial load
duke
parents:
diff changeset
7185 <eventlink id="ClassFileLoadHook"/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7186 will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
7187 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7188 The retransformation may change method bodies, the constant pool and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7189 The retransformation must not add, remove or rename fields or methods, change the
a61af66fc99e Initial load
duke
parents:
diff changeset
7190 signatures of methods, change modifiers, or change inheritance.
a61af66fc99e Initial load
duke
parents:
diff changeset
7191 These restrictions may be lifted in future versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7192 See the error return description below for information on error codes
a61af66fc99e Initial load
duke
parents:
diff changeset
7193 returned if an unsupported retransformation is attempted.
a61af66fc99e Initial load
duke
parents:
diff changeset
7194 The class file bytes are not verified or installed until they have passed
a61af66fc99e Initial load
duke
parents:
diff changeset
7195 through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
a61af66fc99e Initial load
duke
parents:
diff changeset
7196 returned error code reflects the result of the transformations.
a61af66fc99e Initial load
duke
parents:
diff changeset
7197 If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7198 none of the classes to be retransformed will have a new definition installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7199 When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7200 all of the classes to be retransformed will have their new definitions installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7201 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7202 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7203 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7204 <required id="can_retransform_classes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7205 <capability id="can_retransform_any_class"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7206 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7207 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7208 <param id="class_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7209 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7210 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7211 The number of classes to be retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7212 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7213 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7214 <param id="classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7215 <inbuf incount="class_count"><jclass/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7216 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7217 The array of classes to be retransformed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7218 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7219 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7220 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7221 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7222 <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7223 One of the <paramlink id="classes"/> cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
7224 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7225 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7226 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7227 One of the <paramlink id="classes"/> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7228 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7229 <error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7230 A retransformed class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7231 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7232 <error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
a61af66fc99e Initial load
duke
parents:
diff changeset
7233 A retransformed class file is malformed (The VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7234 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7235 <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7236 The retransformed class file definitions would lead to a circular definition
a61af66fc99e Initial load
duke
parents:
diff changeset
7237 (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7238 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7239 <error id="JVMTI_ERROR_FAILS_VERIFICATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7240 The retransformed class file bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
7241 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7242 <error id="JVMTI_ERROR_NAMES_DONT_MATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
7243 The class name defined in a retransformed class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
7244 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7245 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7246 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7247 A retransformed class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
7248 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7249 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7250 A retransformed class file changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
7251 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7252 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7253 A direct superclass is different for a retransformed class file,
a61af66fc99e Initial load
duke
parents:
diff changeset
7254 or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
7255 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
7256 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7257 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7258 A retransformed class file does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
7259 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7260 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7261 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7262 A retransformed class file has different class modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
7263 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7264 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7265 A method in the retransformed class file has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
7266 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7267 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7268 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7269 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7270
a61af66fc99e Initial load
duke
parents:
diff changeset
7271 <function id="RedefineClasses" jkernel="yes" num="87">
a61af66fc99e Initial load
duke
parents:
diff changeset
7272 <synopsis>Redefine Classes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7273 <typedef id="jvmtiClassDefinition" label="Class redefinition description">
a61af66fc99e Initial load
duke
parents:
diff changeset
7274 <field id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7275 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7276 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7277 Class object for this class
a61af66fc99e Initial load
duke
parents:
diff changeset
7278 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7279 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7280 <field id="class_byte_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7281 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7282 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7283 Number of bytes defining class (below)
a61af66fc99e Initial load
duke
parents:
diff changeset
7284 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7285 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7286 <field id="class_bytes">
a61af66fc99e Initial load
duke
parents:
diff changeset
7287 <inbuf incount="class_byte_count"><uchar/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7288 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7289 Bytes defining class (in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7290 <vmspeclink id="ClassFile.doc.html"
a61af66fc99e Initial load
duke
parents:
diff changeset
7291 name="Class File Format"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7292 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7293 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7294 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
7295 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7296 All classes given are redefined according to the definitions
a61af66fc99e Initial load
duke
parents:
diff changeset
7297 supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
7298 This function is used to replace the definition of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
7299 with a new definition, as might be needed in fix-and-continue
a61af66fc99e Initial load
duke
parents:
diff changeset
7300 debugging.
a61af66fc99e Initial load
duke
parents:
diff changeset
7301 Where the existing class file bytes are to be transformed, for
a61af66fc99e Initial load
duke
parents:
diff changeset
7302 example in
a61af66fc99e Initial load
duke
parents:
diff changeset
7303 <internallink id="bci">bytecode instrumentation</internallink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7304 <functionlink id="RetransformClasses"/> should be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
7305 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7306 Redefinition can cause new versions of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7307 Old method versions may become
a61af66fc99e Initial load
duke
parents:
diff changeset
7308 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7309 The new method version will be used on new invokes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7310 If a method has active stack frames, those active frames continue to
a61af66fc99e Initial load
duke
parents:
diff changeset
7311 run the bytecodes of the original method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7312 If resetting of stack frames is desired, use
a61af66fc99e Initial load
duke
parents:
diff changeset
7313 <functionlink id="PopFrame"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7314 to pop frames with obsolete method versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7315 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7316 This function does not cause any initialization except that which
a61af66fc99e Initial load
duke
parents:
diff changeset
7317 would occur under the customary JVM semantics.
a61af66fc99e Initial load
duke
parents:
diff changeset
7318 In other words, redefining a class does not cause its initializers to be
a61af66fc99e Initial load
duke
parents:
diff changeset
7319 run. The values of static fields will remain as they were
a61af66fc99e Initial load
duke
parents:
diff changeset
7320 prior to the call.
a61af66fc99e Initial load
duke
parents:
diff changeset
7321 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7322 Threads need not be suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
7323 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7324 All breakpoints in the class are cleared.
a61af66fc99e Initial load
duke
parents:
diff changeset
7325 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7326 All attributes are updated.
a61af66fc99e Initial load
duke
parents:
diff changeset
7327 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7328 Instances of the redefined class are not affected -- fields retain their
a61af66fc99e Initial load
duke
parents:
diff changeset
7329 previous values.
a61af66fc99e Initial load
duke
parents:
diff changeset
7330 <functionlink id="GetTag">Tags</functionlink> on the instances are
a61af66fc99e Initial load
duke
parents:
diff changeset
7331 also unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
7332 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7333 In response to this call, the <jvmti/> event
a61af66fc99e Initial load
duke
parents:
diff changeset
7334 <eventlink id="ClassFileLoadHook">Class File Load Hook</eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7335 will be sent (if enabled), but no other <jvmti/> events will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
7336 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7337 The redefinition may change method bodies, the constant pool and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7338 The redefinition must not add, remove or rename fields or methods, change the
a61af66fc99e Initial load
duke
parents:
diff changeset
7339 signatures of methods, change modifiers, or change inheritance.
a61af66fc99e Initial load
duke
parents:
diff changeset
7340 These restrictions may be lifted in future versions.
a61af66fc99e Initial load
duke
parents:
diff changeset
7341 See the error return description below for information on error codes
a61af66fc99e Initial load
duke
parents:
diff changeset
7342 returned if an unsupported redefinition is attempted.
a61af66fc99e Initial load
duke
parents:
diff changeset
7343 The class file bytes are not verified or installed until they have passed
a61af66fc99e Initial load
duke
parents:
diff changeset
7344 through the chain of <eventlink id="ClassFileLoadHook"/> events, thus the
a61af66fc99e Initial load
duke
parents:
diff changeset
7345 returned error code reflects the result of the transformations applied
a61af66fc99e Initial load
duke
parents:
diff changeset
7346 to the bytes passed into <paramlink id="class_definitions"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7347 If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7348 none of the classes to be redefined will have a new definition installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7349 When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
7350 all of the classes to be redefined will have their new definitions installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7351 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7352 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7353 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7354 <required id="can_redefine_classes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7355 <capability id="can_redefine_any_class"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
7356 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7357 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7358 <param id="class_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7359 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7360 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7361 The number of classes specified in <code>class_definitions</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7362 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7363 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7364 <param id="class_definitions">
a61af66fc99e Initial load
duke
parents:
diff changeset
7365 <inbuf incount="class_count"><struct>jvmtiClassDefinition</struct></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7366 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7367 The array of new class definitions
a61af66fc99e Initial load
duke
parents:
diff changeset
7368 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7369 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7370 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7371 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7372 <error id="JVMTI_ERROR_NULL_POINTER">
a61af66fc99e Initial load
duke
parents:
diff changeset
7373 One of <code>class_bytes</code> is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7374 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7375 <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7376 An element of <code>class_definitions</code> cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
7377 See <functionlink id="IsModifiableClass"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7378 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7379 <error id="JVMTI_ERROR_INVALID_CLASS">
a61af66fc99e Initial load
duke
parents:
diff changeset
7380 An element of <code>class_definitions</code> is not a valid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
7381 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7382 <error id="JVMTI_ERROR_UNSUPPORTED_VERSION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7383 A new class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7384 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7385 <error id="JVMTI_ERROR_INVALID_CLASS_FORMAT">
a61af66fc99e Initial load
duke
parents:
diff changeset
7386 A new class file is malformed (The VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7387 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7388 <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7389 The new class file definitions would lead to a circular definition
a61af66fc99e Initial load
duke
parents:
diff changeset
7390 (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
7391 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7392 <error id="JVMTI_ERROR_FAILS_VERIFICATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
7393 The class bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
7394 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7395 <error id="JVMTI_ERROR_NAMES_DONT_MATCH">
a61af66fc99e Initial load
duke
parents:
diff changeset
7396 The class name defined in a new class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
7397 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7398 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7399 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7400 A new class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
7401 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7402 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7403 A new class version changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
7404 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7405 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7406 A direct superclass is different for a new class
a61af66fc99e Initial load
duke
parents:
diff changeset
7407 version, or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
7408 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
7409 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7410 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7411 A new class version does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
7412 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7413 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7414 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7415 A new class version has different modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
7416 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7417 <error id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED">
a61af66fc99e Initial load
duke
parents:
diff changeset
7418 A method in the new class version has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
7419 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7420 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
7421 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7422 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7423
a61af66fc99e Initial load
duke
parents:
diff changeset
7424 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7425
a61af66fc99e Initial load
duke
parents:
diff changeset
7426 <category id="object" label="Object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7427
a61af66fc99e Initial load
duke
parents:
diff changeset
7428 <function id="GetObjectSize" jkernel="yes" phase="start" num="154">
a61af66fc99e Initial load
duke
parents:
diff changeset
7429 <synopsis>Get Object Size</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7430 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7431 For the object indicated by <code>object</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7432 return via <code>size_ptr</code> the size of the object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7433 This size is an implementation-specific approximation of
a61af66fc99e Initial load
duke
parents:
diff changeset
7434 the amount of storage consumed by this object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7435 It may include some or all of the object's overhead, and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
7436 is useful for comparison within an implementation but not
a61af66fc99e Initial load
duke
parents:
diff changeset
7437 between implementations.
a61af66fc99e Initial load
duke
parents:
diff changeset
7438 The estimate may change during a single invocation of the JVM.
a61af66fc99e Initial load
duke
parents:
diff changeset
7439 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7440 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7441 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7442 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7443 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7444 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7445 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7446 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7447 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7448 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7449 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7450 <param id="size_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7451 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7452 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7453 On return, points to the object's size in bytes.
a61af66fc99e Initial load
duke
parents:
diff changeset
7454 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7455 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7456 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7457 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7458 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7459 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7460
a61af66fc99e Initial load
duke
parents:
diff changeset
7461 <function id="GetObjectHashCode" phase="start" num="58">
a61af66fc99e Initial load
duke
parents:
diff changeset
7462 <synopsis>Get Object Hash Code</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7463 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7464 For the object indicated by <code>object</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7465 return via <code>hash_code_ptr</code> a hash code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7466 This hash code could be used to maintain a hash table of object references,
a61af66fc99e Initial load
duke
parents:
diff changeset
7467 however, on some implementations this can cause significant performance
a61af66fc99e Initial load
duke
parents:
diff changeset
7468 impacts--in most cases
a61af66fc99e Initial load
duke
parents:
diff changeset
7469 <internallink id="Heap">tags</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
7470 will be a more efficient means of associating information with objects.
a61af66fc99e Initial load
duke
parents:
diff changeset
7471 This function guarantees
a61af66fc99e Initial load
duke
parents:
diff changeset
7472 the same hash code value for a particular object throughout its life
a61af66fc99e Initial load
duke
parents:
diff changeset
7473 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7474 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7475 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7476 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7477 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7478 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7479 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7480 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7481 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7482 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7483 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7484 <param id="hash_code_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7485 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7486 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7487 On return, points to the object's hash code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7488 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7489 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7490 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7491 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7492 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7493 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7494
a61af66fc99e Initial load
duke
parents:
diff changeset
7495 <function id="GetObjectMonitorUsage" num="59">
a61af66fc99e Initial load
duke
parents:
diff changeset
7496 <synopsis>Get Object Monitor Usage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7497 <typedef id="jvmtiMonitorUsage" label="Object monitor usage information">
a61af66fc99e Initial load
duke
parents:
diff changeset
7498 <field id="owner">
a61af66fc99e Initial load
duke
parents:
diff changeset
7499 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7500 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7501 The thread owning this monitor, or <code>NULL</code> if unused
a61af66fc99e Initial load
duke
parents:
diff changeset
7502 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7503 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7504 <field id="entry_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7505 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7506 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7507 The number of times the owning thread has entered the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7508 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7509 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7510 <field id="waiter_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7511 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7512 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7513 The number of threads waiting to own this monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7514 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7515 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7516 <field id="waiters">
a61af66fc99e Initial load
duke
parents:
diff changeset
7517 <allocfieldbuf><jthread/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7518 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7519 The <code>waiter_count</code> waiting threads
a61af66fc99e Initial load
duke
parents:
diff changeset
7520 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7521 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7522 <field id="notify_waiter_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
7523 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7524 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7525 The number of threads waiting to be notified by this monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
7526 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7527 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7528 <field id="notify_waiters">
a61af66fc99e Initial load
duke
parents:
diff changeset
7529 <allocfieldbuf><jthread/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7530 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7531 The <code>notify_waiter_count</code> threads waiting to be notified
a61af66fc99e Initial load
duke
parents:
diff changeset
7532 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7533 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
7534 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
7535 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7536 Get information about the object's monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
7537 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
7538 are filled in with information about usage of the monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
7539 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
7540 Decide and then clarify suspend requirements.
a61af66fc99e Initial load
duke
parents:
diff changeset
7541 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
7542 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7543 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7544 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7545 <required id="can_get_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7546 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7547 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7548 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
7549 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7550 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7551 The object to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7552 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7553 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7554 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7555 <outptr><struct>jvmtiMonitorUsage</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7556 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7557 On return, filled with monitor information for the
a61af66fc99e Initial load
duke
parents:
diff changeset
7558 specified object.
a61af66fc99e Initial load
duke
parents:
diff changeset
7559 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7560 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7561 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7562 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7563 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7564 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7565
a61af66fc99e Initial load
duke
parents:
diff changeset
7566 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
7567 <function id="GetObjectMonitors" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
7568 <synopsis>Get Object Monitors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7569 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7570 Return the list of object monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
7571 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7572 Note: details about each monitor can be examined with
a61af66fc99e Initial load
duke
parents:
diff changeset
7573 <functionlink id="GetObjectMonitorUsage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7574 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7575 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7576 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7577 <required id="can_get_monitor_info"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7578 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7579 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7580 <param id="monitorCnt">
a61af66fc99e Initial load
duke
parents:
diff changeset
7581 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7582 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7583 On return, pointer to the number
a61af66fc99e Initial load
duke
parents:
diff changeset
7584 of monitors returned in <code>monitors_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7585 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7586 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7587 <param id="monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7588 <allocbuf outcount="monitorCnt"><jobject/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7589 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7590 On return, pointer to the monitor list.
a61af66fc99e Initial load
duke
parents:
diff changeset
7591 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7592 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7593 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7594 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7595 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7596 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7597 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
7598
a61af66fc99e Initial load
duke
parents:
diff changeset
7599 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7600
a61af66fc99e Initial load
duke
parents:
diff changeset
7601 <category id="fieldCategory" label="Field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7602
a61af66fc99e Initial load
duke
parents:
diff changeset
7603 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7604 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7605
a61af66fc99e Initial load
duke
parents:
diff changeset
7606 <function id="GetFieldName" phase="start" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
7607 <synopsis>Get Field Name (and Signature)</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7608 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7609 For the field indicated by <paramlink id="klass"/> and <paramlink id="field"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7610 return the field name via <paramlink id="name_ptr"/> and field signature via
a61af66fc99e Initial load
duke
parents:
diff changeset
7611 <paramlink id="signature_ptr"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7612 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7613 Field signatures are defined in the JNI Specification and
a61af66fc99e Initial load
duke
parents:
diff changeset
7614 are referred to as
a61af66fc99e Initial load
duke
parents:
diff changeset
7615 <vmspeclink id="ClassFile.doc.html#14152"
a61af66fc99e Initial load
duke
parents:
diff changeset
7616 name="field descriptors"
a61af66fc99e Initial load
duke
parents:
diff changeset
7617 preposition="in"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7618 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7619 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7620 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7621 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7622 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7623 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7624 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7625 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7626 The class of the field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7627 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7628 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7629 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7630 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7631 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7632 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7633 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7634 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7635 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7636 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7637 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7638 <nullok>the name is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7639 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7640 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7641 On return, points to the field name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7642 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7643 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7644 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7645 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7646 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7647 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7648 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7649 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7650 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7651 On return, points to the field signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7652 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7653 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7654 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7655 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7656 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7657 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7658 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7659 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7660 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7661 On return, points to the generic signature of the field, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7662 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7663 If there is no generic signature attribute for the field, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
7664 on return, points to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7665 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7666 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7667 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7668 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7669 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7670 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7671
a61af66fc99e Initial load
duke
parents:
diff changeset
7672 <function id="GetFieldDeclaringClass" phase="start" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
7673 <synopsis>Get Field Declaring Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7674 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7675 For the field indicated by <code>klass</code> and <code>field</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7676 return the class that defined it via <code>declaring_class_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7677 The declaring class will either be <code>klass</code>, a superclass, or
a61af66fc99e Initial load
duke
parents:
diff changeset
7678 an implemented interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
7679 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7680 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7681 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7682 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7683 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7684 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7685 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7686 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7687 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7688 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7689 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7690 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7691 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7692 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7693 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7694 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7695 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7696 <param id="declaring_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7697 <outptr><jclass/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7698 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7699 On return, points to the declaring class
a61af66fc99e Initial load
duke
parents:
diff changeset
7700 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7701 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7702 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7703 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7704 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7705 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7706
a61af66fc99e Initial load
duke
parents:
diff changeset
7707 <function id="GetFieldModifiers" phase="start" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
7708 <synopsis>Get Field Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7709 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7710 For the field indicated by <code>klass</code> and <code>field</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
7711 return the access flags via <code>modifiers_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7712 Access flags are defined in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7713 <vmspeclink id="ClassFile.doc.html"
a61af66fc99e Initial load
duke
parents:
diff changeset
7714 name="Class File Format chapter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7715 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7716 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7717 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7718 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7719 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7720 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7721 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7722 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7723 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7724 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7725 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7726 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7727 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7728 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7729 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7730 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7731 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7732 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7733 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7734 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7735 On return, points to the access flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
7736 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7737 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7738 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7739 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7740 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7741 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7742
a61af66fc99e Initial load
duke
parents:
diff changeset
7743 <function id="IsFieldSynthetic" phase="start" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
7744 <synopsis>Is Field Synthetic</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7745 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7746 For the field indicated by <code>klass</code> and <code>field</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
7747 value indicating whether the field is synthetic via <code>is_synthetic_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7748 Synthetic fields are generated by the compiler but not present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7749 original source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
7750 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7751 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7752 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7753 <required id="can_get_synthetic_attribute"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
7754 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7755 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7756 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7757 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7758 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7759 The class of the field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7760 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7761 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7762 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
7763 <jfieldID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7764 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7765 The field to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7766 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7767 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7768 <param id="is_synthetic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7769 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7770 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7771 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
7772 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7773 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7774 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7775 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7776 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7777 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7778
a61af66fc99e Initial load
duke
parents:
diff changeset
7779 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
7780
a61af66fc99e Initial load
duke
parents:
diff changeset
7781 <category id="method" label="Method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7782
a61af66fc99e Initial load
duke
parents:
diff changeset
7783 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7784 These functions provide information about a method (represented as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7785 <typelink id="jmethodID"/>) and set how methods are processed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7786 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7787
a61af66fc99e Initial load
duke
parents:
diff changeset
7788 <intro id="obsoleteMethods" label="Obsolete Methods">
a61af66fc99e Initial load
duke
parents:
diff changeset
7789 The functions <functionlink id="RetransformClasses"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
7790 <functionlink id="RedefineClasses"/> can cause new versions
a61af66fc99e Initial load
duke
parents:
diff changeset
7791 of methods to be installed.
a61af66fc99e Initial load
duke
parents:
diff changeset
7792 An original version of a method is considered equivalent
a61af66fc99e Initial load
duke
parents:
diff changeset
7793 to the new version if:
a61af66fc99e Initial load
duke
parents:
diff changeset
7794 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7795 <li>their bytecodes are the same except for indices into the
a61af66fc99e Initial load
duke
parents:
diff changeset
7796 constant pool and </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7797 <li>the referenced constants are equal.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
7798 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
7799 An original method version which is not equivalent to the
a61af66fc99e Initial load
duke
parents:
diff changeset
7800 new method version is called obsolete and is assigned a new method ID;
a61af66fc99e Initial load
duke
parents:
diff changeset
7801 the original method ID now refers to the new method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
7802 A method ID can be tested for obsolescence with
a61af66fc99e Initial load
duke
parents:
diff changeset
7803 <functionlink id="IsMethodObsolete"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7804 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
7805
a61af66fc99e Initial load
duke
parents:
diff changeset
7806 <function id="GetMethodName" phase="start" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
7807 <synopsis>Get Method Name (and Signature)</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7808 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7809 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7810 return the method name via <code>name_ptr</code> and method signature via
a61af66fc99e Initial load
duke
parents:
diff changeset
7811 <code>signature_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7812 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7813 Method signatures are defined in the JNI Specification and are referred to as
a61af66fc99e Initial load
duke
parents:
diff changeset
7814 <vmspeclink id="ClassFile.doc.html#7035"
a61af66fc99e Initial load
duke
parents:
diff changeset
7815 name="method descriptors"
a61af66fc99e Initial load
duke
parents:
diff changeset
7816 preposition="in"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7817 Note this is different
a61af66fc99e Initial load
duke
parents:
diff changeset
7818 than method signatures as defined in the <i>Java Language Specification</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7819 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7820 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7821 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7822 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7823 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7824 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7825 <jmethodID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7826 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7827 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7828 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7829 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7830 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7831 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7832 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7833 <nullok>the name is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7834 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7835 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7836 On return, points to the method name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7837 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7838 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7839 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7840 <param id="signature_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7841 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7842 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7843 <nullok>the signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7844 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7845 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7846 On return, points to the method signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7847 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7848 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7849 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7850 <param id="generic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7851 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7852 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7853 <nullok>the generic signature is not returned</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
7854 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
7855 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7856 On return, points to the generic signature of the method, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
7857 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
7858 If there is no generic signature attribute for the method, then,
a61af66fc99e Initial load
duke
parents:
diff changeset
7859 on return, points to <code>NULL</code>.
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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7863 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7864 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7865 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7866
a61af66fc99e Initial load
duke
parents:
diff changeset
7867 <function id="GetMethodDeclaringClass" phase="start" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
7868 <synopsis>Get Method Declaring Class</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7869 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7870 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7871 return the class that defined it via <code>declaring_class_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7872 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7873 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7874 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7875 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7876 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7877 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7878 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7879 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7880 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7881 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7882 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7883 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7884 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7885 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7886 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7887 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7888 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7889 <param id="declaring_class_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7890 <outptr><jclass/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7891 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7892 On return, points to the declaring class
a61af66fc99e Initial load
duke
parents:
diff changeset
7893 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7894 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7895 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7896 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7897 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7898 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7899
a61af66fc99e Initial load
duke
parents:
diff changeset
7900 <function id="GetMethodModifiers" phase="start" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
7901 <synopsis>Get Method Modifiers</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7902 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7903 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7904 return the access flags via <code>modifiers_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7905 Access flags are defined in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7906 <vmspeclink id="ClassFile.doc.html"
a61af66fc99e Initial load
duke
parents:
diff changeset
7907 name="Class File Format chapter"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7908 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7909 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7910 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7911 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7912 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7913 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7914 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7915 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7916 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7917 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7918 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7919 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7920 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7921 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7922 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7923 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7924 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7925 <param id="modifiers_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7926 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7927 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7928 On return, points to the access flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
7929 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7930 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7931 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7932 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7933 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7934 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7935
a61af66fc99e Initial load
duke
parents:
diff changeset
7936 <function id="GetMaxLocals" phase="start" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
7937 <synopsis>Get Max Locals</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7938 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7939 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7940 return the number of local variable slots used by the method,
a61af66fc99e Initial load
duke
parents:
diff changeset
7941 including the local variables used to pass parameters to the
a61af66fc99e Initial load
duke
parents:
diff changeset
7942 method on its invocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
7943 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7944 See <code>max_locals</code> in the
a61af66fc99e Initial load
duke
parents:
diff changeset
7945 <vmspeclink id="ClassFile.doc.html#1546"
a61af66fc99e Initial load
duke
parents:
diff changeset
7946 name="Code Attribute section"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
7947 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7948 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7949 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7950 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7951 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7952 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7953 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7954 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7955 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7956 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7957 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7958 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7959 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7960 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7961 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7962 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7963 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7964 <param id="max_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
7965 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
7966 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7967 On return, points to the maximum number of local slots
a61af66fc99e Initial load
duke
parents:
diff changeset
7968 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7969 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7970 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7971 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7972 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
7973 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
7974
a61af66fc99e Initial load
duke
parents:
diff changeset
7975 <function id="GetArgumentsSize" phase="start" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
7976 <synopsis>Get Arguments Size</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
7977 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7978 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
7979 return via <code>max_ptr</code> the number of local variable slots used
a61af66fc99e Initial load
duke
parents:
diff changeset
7980 by the method's arguments.
a61af66fc99e Initial load
duke
parents:
diff changeset
7981 Note that two-word arguments use two slots.
a61af66fc99e Initial load
duke
parents:
diff changeset
7982 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7983 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
7984 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7985 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
7986 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
7987 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
7988 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7989 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7990 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7991 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7992 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7993 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
7994 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
7995 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7996 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
7997 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
7998 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
7999 <param id="size_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8000 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8001 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8002 On return, points to the number of argument slots
a61af66fc99e Initial load
duke
parents:
diff changeset
8003 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8004 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8005 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8006 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8007 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8008 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8009
a61af66fc99e Initial load
duke
parents:
diff changeset
8010 <function id="GetLineNumberTable" phase="start" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
8011 <synopsis>Get Line Number Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8012 <typedef id="jvmtiLineNumberEntry" label="Line number table entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
8013 <field id="start_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
8014 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8015 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8016 the <datalink id="jlocation"></datalink> where the line begins
a61af66fc99e Initial load
duke
parents:
diff changeset
8017 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8018 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8019 <field id="line_number">
a61af66fc99e Initial load
duke
parents:
diff changeset
8020 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8021 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8022 the line number
a61af66fc99e Initial load
duke
parents:
diff changeset
8023 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8024 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8025 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
8026 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8027 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8028 return a table of source line number entries. The size of the table is
a61af66fc99e Initial load
duke
parents:
diff changeset
8029 returned via <code>entry_count_ptr</code> and the table itself is
a61af66fc99e Initial load
duke
parents:
diff changeset
8030 returned via <code>table_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8031 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8032 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8033 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8034 <required id="can_get_line_numbers"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8035 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8036 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8037 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8038 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8039 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8040 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8041 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8042 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8043 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8044 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8045 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8046 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8047 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8048 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8049 <param id="entry_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8050 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8051 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8052 On return, points to the number of entries in the table
a61af66fc99e Initial load
duke
parents:
diff changeset
8053 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8054 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8055 <param id="table_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8056 <allocbuf outcount="entry_count_ptr"><struct>jvmtiLineNumberEntry</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8057 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8058 On return, points to the line number table pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
8059 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8060 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8061 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8062 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8063 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8064 Class information does not include line numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
8065 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8066 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8067 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8068
a61af66fc99e Initial load
duke
parents:
diff changeset
8069 <function id="GetMethodLocation" phase="start" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
8070 <synopsis>Get Method Location</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8071 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8072 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8073 return the beginning and ending addresses through
a61af66fc99e Initial load
duke
parents:
diff changeset
8074 <code>start_location_ptr</code> and <code>end_location_ptr</code>. In a
a61af66fc99e Initial load
duke
parents:
diff changeset
8075 conventional byte code indexing scheme,
a61af66fc99e Initial load
duke
parents:
diff changeset
8076 <code>start_location_ptr</code> will always point to zero
a61af66fc99e Initial load
duke
parents:
diff changeset
8077 and <code>end_location_ptr</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8078 will always point to the byte code count minus one.
a61af66fc99e Initial load
duke
parents:
diff changeset
8079 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8080 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8081 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8082 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8083 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8084 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8085 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8086 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8087 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8088 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8089 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8090 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8091 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8092 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8093 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8094 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8095 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8096 <param id="start_location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8097 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8098 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8099 On return, points to the first location, or
a61af66fc99e Initial load
duke
parents:
diff changeset
8100 <code>-1</code> if location information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
8101 If the information is available and
a61af66fc99e Initial load
duke
parents:
diff changeset
8102 <functionlink id="GetJLocationFormat"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8103 returns <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8104 then this will always be zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
8105 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8106 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8107 <param id="end_location_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8108 <outptr><jlocation/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8109 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8110 On return, points to the last location,
a61af66fc99e Initial load
duke
parents:
diff changeset
8111 or <code>-1</code> if location information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
8112 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8113 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8114 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8115 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8116 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8117 Class information does not include method sizes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8118 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8119 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8120 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8121
a61af66fc99e Initial load
duke
parents:
diff changeset
8122 <function id="GetLocalVariableTable" num="72">
a61af66fc99e Initial load
duke
parents:
diff changeset
8123 <synopsis>Get Local Variable Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8124 <typedef id="jvmtiLocalVariableEntry" label="Local variable table entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
8125 <field id="start_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
8126 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8127 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8128 The code array index where the local variable is first valid
a61af66fc99e Initial load
duke
parents:
diff changeset
8129 (that is, where it must have a value).
a61af66fc99e Initial load
duke
parents:
diff changeset
8130 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8131 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8132 <field id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
8133 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8134 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8135 The length of the valid section for this local variable.
a61af66fc99e Initial load
duke
parents:
diff changeset
8136 The last code array index where the local variable is valid
a61af66fc99e Initial load
duke
parents:
diff changeset
8137 is <code>start_location + length</code>.
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="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
8141 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8142 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8143 The local variable name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8144 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8145 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8146 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8147 <field id="signature">
a61af66fc99e Initial load
duke
parents:
diff changeset
8148 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8149 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8150 The local variable's type signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8151 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8152 The signature format is the same as that defined in
a61af66fc99e Initial load
duke
parents:
diff changeset
8153 <vmspeclink id="ClassFile.doc.html#14152"
a61af66fc99e Initial load
duke
parents:
diff changeset
8154 name="Field Descriptors section"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8155 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8156 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8157 <field id="generic_signature">
a61af66fc99e Initial load
duke
parents:
diff changeset
8158 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8159 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8160 The local variable's generic signature, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8161 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8162 The value of this field will be <code>NULL</code> for any local
a61af66fc99e Initial load
duke
parents:
diff changeset
8163 variable which does not have a generic type.
a61af66fc99e Initial load
duke
parents:
diff changeset
8164 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8165 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8166 <field id="slot">
a61af66fc99e Initial load
duke
parents:
diff changeset
8167 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8168 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8169 The local variable's slot. See <internallink id="local">Local Variables</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8170 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8171 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
8172 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
8173 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8174 Return local variable information.
a61af66fc99e Initial load
duke
parents:
diff changeset
8175 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8176 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8177 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8178 <required id="can_access_local_variables"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8179 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8180 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8181 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8182 <jmethodID native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8183 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8184 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8185 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8186 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8187 <param id="entry_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8188 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8189 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8190 On return, points to the number of entries in the table
a61af66fc99e Initial load
duke
parents:
diff changeset
8191 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8192 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8193 <param id="table_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8194 <allocbuf outcount="entry_count_ptr"><struct>jvmtiLocalVariableEntry</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8195 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8196 On return, points to an array of local variable table entries.
a61af66fc99e Initial load
duke
parents:
diff changeset
8197 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8198 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8199 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8200 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8201 <error id="JVMTI_ERROR_ABSENT_INFORMATION">
a61af66fc99e Initial load
duke
parents:
diff changeset
8202 Class information does not include local variable
a61af66fc99e Initial load
duke
parents:
diff changeset
8203 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
8204 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8205 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8206 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8207
a61af66fc99e Initial load
duke
parents:
diff changeset
8208 <function id="GetBytecodes" phase="start" num="75">
a61af66fc99e Initial load
duke
parents:
diff changeset
8209 <synopsis>Get Bytecodes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8210 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8211 For the method indicated by <code>method</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8212 return the byte codes that implement the method. The number of
a61af66fc99e Initial load
duke
parents:
diff changeset
8213 bytecodes is returned via <code>bytecode_count_ptr</code>. The byte codes
a61af66fc99e Initial load
duke
parents:
diff changeset
8214 themselves are returned via <code>bytecodes_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8215 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8216 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8217 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8218 <required id="can_get_bytecodes"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8219 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8220 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8221 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8222 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8223 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8224 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8225 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8226 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8227 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8228 <jmethodID class="klass" native="error"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8229 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8230 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8231 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8232 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8233 <param id="bytecode_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8234 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8235 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8236 On return, points to the length of the byte code array
a61af66fc99e Initial load
duke
parents:
diff changeset
8237 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8238 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8239 <param id="bytecodes_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8240 <allocbuf outcount="bytecode_count_ptr"><uchar/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8241 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8242 On return, points to the pointer to the byte code array
a61af66fc99e Initial load
duke
parents:
diff changeset
8243 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8244 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8245 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8246 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8247 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8248 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8249
a61af66fc99e Initial load
duke
parents:
diff changeset
8250 <function id="IsMethodNative" phase="start" num="76">
a61af66fc99e Initial load
duke
parents:
diff changeset
8251 <synopsis>Is Method Native</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8252 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8253 For the method indicated by <code>method</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
8254 value indicating whether the method is native via <code>is_native_ptr</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8255 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8256 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8257 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8258 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8259 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8260 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8261 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8262 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8263 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8264 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8265 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8266 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8267 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8268 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8269 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8270 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8271 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8272 <param id="is_native_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8273 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8274 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8275 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8276 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8277 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8278 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8279 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8280 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8281 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8282
a61af66fc99e Initial load
duke
parents:
diff changeset
8283 <function id="IsMethodSynthetic" phase="start" num="77">
a61af66fc99e Initial load
duke
parents:
diff changeset
8284 <synopsis>Is Method Synthetic</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8285 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8286 For the method indicated by <code>method</code>, return a
a61af66fc99e Initial load
duke
parents:
diff changeset
8287 value indicating whether the method is synthetic via <code>is_synthetic_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8288 Synthetic methods are generated by the compiler but not present in the
a61af66fc99e Initial load
duke
parents:
diff changeset
8289 original source code.
a61af66fc99e Initial load
duke
parents:
diff changeset
8290 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8291 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8292 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8293 <required id="can_get_synthetic_attribute"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8294 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8295 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8296 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8297 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8298 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8299 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8300 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8301 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8302 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8303 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8304 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8305 The method to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8306 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8307 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8308 <param id="is_synthetic_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8309 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8310 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8311 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8312 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8313 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8314 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8315 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8316 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8317 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8318
a61af66fc99e Initial load
duke
parents:
diff changeset
8319 <function id="IsMethodObsolete" phase="start" num="91">
a61af66fc99e Initial load
duke
parents:
diff changeset
8320 <synopsis>Is Method Obsolete</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8321 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8322 Determine if a method ID refers to an
a61af66fc99e Initial load
duke
parents:
diff changeset
8323 <internallink id="obsoleteMethods">obsolete</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8324 method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
8325 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8326 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8327 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8328 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8329 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8330 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
8331 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8332 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8333 The class to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8334 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8335 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8336 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
8337 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8338 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8339 The method ID to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8340 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8341 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8342 <param id="is_obsolete_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8343 <outptr><jboolean/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8344 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8345 On return, points to the boolean result of this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8346 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8347 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8348 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8349 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8350 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8351 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8352
a61af66fc99e Initial load
duke
parents:
diff changeset
8353 <function id="SetNativeMethodPrefix" jkernel="yes" phase="any" num="73" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8354 <synopsis>Set Native Method Prefix</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8355 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8356 This function modifies the failure handling of
a61af66fc99e Initial load
duke
parents:
diff changeset
8357 native method resolution by allowing retry
a61af66fc99e Initial load
duke
parents:
diff changeset
8358 with a prefix applied to the name.
a61af66fc99e Initial load
duke
parents:
diff changeset
8359 When used with the
a61af66fc99e Initial load
duke
parents:
diff changeset
8360 <eventlink id="ClassFileLoadHook">ClassFileLoadHook
a61af66fc99e Initial load
duke
parents:
diff changeset
8361 event</eventlink>, it enables native methods to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8362 <internallink id="bci">instrumented</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8363 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8364 Since native methods cannot be directly instrumented
a61af66fc99e Initial load
duke
parents:
diff changeset
8365 (they have no bytecodes), they must be wrapped with
a61af66fc99e Initial load
duke
parents:
diff changeset
8366 a non-native method which can be instrumented.
a61af66fc99e Initial load
duke
parents:
diff changeset
8367 For example, if we had:
a61af66fc99e Initial load
duke
parents:
diff changeset
8368 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8369 native boolean foo(int x);</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8370 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8371 We could transform the class file (with the
a61af66fc99e Initial load
duke
parents:
diff changeset
8372 ClassFileLoadHook event) so that this becomes:
a61af66fc99e Initial load
duke
parents:
diff changeset
8373 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8374 boolean foo(int x) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8375 <i>... record entry to foo ...</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
8376 return wrapped_foo(x);
a61af66fc99e Initial load
duke
parents:
diff changeset
8377 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8378
a61af66fc99e Initial load
duke
parents:
diff changeset
8379 native boolean wrapped_foo(int x);</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8380 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8381 Where foo becomes a wrapper for the actual native method
a61af66fc99e Initial load
duke
parents:
diff changeset
8382 with the appended prefix "wrapped_". Note that
a61af66fc99e Initial load
duke
parents:
diff changeset
8383 "wrapped_" would be a poor choice of prefix since it
a61af66fc99e Initial load
duke
parents:
diff changeset
8384 might conceivably form the name of an existing method
a61af66fc99e Initial load
duke
parents:
diff changeset
8385 thus something like "$$$MyAgentWrapped$$$_" would be
a61af66fc99e Initial load
duke
parents:
diff changeset
8386 better but would make these examples less readable.
a61af66fc99e Initial load
duke
parents:
diff changeset
8387 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8388 The wrapper will allow data to be collected on the native
a61af66fc99e Initial load
duke
parents:
diff changeset
8389 method call, but now the problem becomes linking up the
a61af66fc99e Initial load
duke
parents:
diff changeset
8390 wrapped method with the native implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8391 That is, the method <code>wrapped_foo</code> needs to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8392 resolved to the native implementation of <code>foo</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8393 which might be:
a61af66fc99e Initial load
duke
parents:
diff changeset
8394 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8395 Java_somePackage_someClass_foo(JNIEnv* env, jint x)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8396 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8397 This function allows the prefix to be specified and the
a61af66fc99e Initial load
duke
parents:
diff changeset
8398 proper resolution to occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
8399 Specifically, when the standard resolution fails, the
a61af66fc99e Initial load
duke
parents:
diff changeset
8400 resolution is retried taking the prefix into consideration.
a61af66fc99e Initial load
duke
parents:
diff changeset
8401 There are two ways that resolution occurs, explicit
a61af66fc99e Initial load
duke
parents:
diff changeset
8402 resolution with the JNI function <code>RegisterNatives</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8403 and the normal automatic resolution. For
a61af66fc99e Initial load
duke
parents:
diff changeset
8404 <code>RegisterNatives</code>, the VM will attempt this
a61af66fc99e Initial load
duke
parents:
diff changeset
8405 association:
a61af66fc99e Initial load
duke
parents:
diff changeset
8406 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8407 method(foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8408 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8409 When this fails, the resolution will be retried with
a61af66fc99e Initial load
duke
parents:
diff changeset
8410 the specified prefix prepended to the method name,
a61af66fc99e Initial load
duke
parents:
diff changeset
8411 yielding the correct resolution:
a61af66fc99e Initial load
duke
parents:
diff changeset
8412 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8413 method(wrapped_foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8414 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8415 For automatic resolution, the VM will attempt:
a61af66fc99e Initial load
duke
parents:
diff changeset
8416 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8417 method(wrapped_foo) -> nativeImplementation(wrapped_foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8418 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8419 When this fails, the resolution will be retried with
a61af66fc99e Initial load
duke
parents:
diff changeset
8420 the specified prefix deleted from the implementation name,
a61af66fc99e Initial load
duke
parents:
diff changeset
8421 yielding the correct resolution:
a61af66fc99e Initial load
duke
parents:
diff changeset
8422 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8423 method(wrapped_foo) -> nativeImplementation(foo)</example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8424 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8425 Note that since the prefix is only used when standard
a61af66fc99e Initial load
duke
parents:
diff changeset
8426 resolution fails, native methods can be wrapped selectively.
a61af66fc99e Initial load
duke
parents:
diff changeset
8427 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8428 Since each <jvmti/> environment is independent and
a61af66fc99e Initial load
duke
parents:
diff changeset
8429 can do its own transformation of the bytecodes, more
a61af66fc99e Initial load
duke
parents:
diff changeset
8430 than one layer of wrappers may be applied. Thus each
a61af66fc99e Initial load
duke
parents:
diff changeset
8431 environment needs its own prefix. Since transformations
a61af66fc99e Initial load
duke
parents:
diff changeset
8432 are applied in order, the prefixes, if applied, will
a61af66fc99e Initial load
duke
parents:
diff changeset
8433 be applied in the same order.
a61af66fc99e Initial load
duke
parents:
diff changeset
8434 The order of transformation application is described in
a61af66fc99e Initial load
duke
parents:
diff changeset
8435 the <eventlink id="ClassFileLoadHook"/> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
8436 Thus if three environments applied
a61af66fc99e Initial load
duke
parents:
diff changeset
8437 wrappers, <code>foo</code> might become
a61af66fc99e Initial load
duke
parents:
diff changeset
8438 <code>$env3_$env2_$env1_foo</code>. But if, say,
a61af66fc99e Initial load
duke
parents:
diff changeset
8439 the second environment did not apply a wrapper to
a61af66fc99e Initial load
duke
parents:
diff changeset
8440 <code>foo</code> it would be just
a61af66fc99e Initial load
duke
parents:
diff changeset
8441 <code>$env3_$env1_foo</code>. To be able to
a61af66fc99e Initial load
duke
parents:
diff changeset
8442 efficiently determine the sequence of prefixes,
a61af66fc99e Initial load
duke
parents:
diff changeset
8443 an intermediate prefix is only applied if its non-native
a61af66fc99e Initial load
duke
parents:
diff changeset
8444 wrapper exists. Thus, in the last example, even though
a61af66fc99e Initial load
duke
parents:
diff changeset
8445 <code>$env1_foo</code> is not a native method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
8446 <code>$env1_</code> prefix is applied since
a61af66fc99e Initial load
duke
parents:
diff changeset
8447 <code>$env1_foo</code> exists.
a61af66fc99e Initial load
duke
parents:
diff changeset
8448 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8449 Since the prefixes are used at resolution time
a61af66fc99e Initial load
duke
parents:
diff changeset
8450 and since resolution may be arbitrarily delayed, a
a61af66fc99e Initial load
duke
parents:
diff changeset
8451 native method prefix must remain set as long as there
a61af66fc99e Initial load
duke
parents:
diff changeset
8452 are corresponding prefixed native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
8453 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8454 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8455 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8456 <required id="can_set_native_method_prefix"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8457 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8458 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8459 <param id="prefix">
a61af66fc99e Initial load
duke
parents:
diff changeset
8460 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8461 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8462 <nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8463 any existing prefix in this environment is cancelled
a61af66fc99e Initial load
duke
parents:
diff changeset
8464 </nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8465 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8466 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8467 The prefix to apply, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8468 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8469 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8470 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8471 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8472 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8473 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8474 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8475
a61af66fc99e Initial load
duke
parents:
diff changeset
8476 <function id="SetNativeMethodPrefixes" jkernel="yes" phase="any" num="74" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8477 <synopsis>Set Native Method Prefixes</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8478 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8479 For a normal agent, <functionlink id="SetNativeMethodPrefix"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8480 will provide all needed native method prefixing.
a61af66fc99e Initial load
duke
parents:
diff changeset
8481 For a meta-agent that performs multiple independent class
a61af66fc99e Initial load
duke
parents:
diff changeset
8482 file transformations (for example as a proxy for another
a61af66fc99e Initial load
duke
parents:
diff changeset
8483 layer of agents) this function allows each transformation
a61af66fc99e Initial load
duke
parents:
diff changeset
8484 to have its own prefix.
a61af66fc99e Initial load
duke
parents:
diff changeset
8485 The prefixes are applied in the order supplied and are
a61af66fc99e Initial load
duke
parents:
diff changeset
8486 processed in the same manor as described for the
a61af66fc99e Initial load
duke
parents:
diff changeset
8487 application of prefixes from multiple <jvmti/> environments
a61af66fc99e Initial load
duke
parents:
diff changeset
8488 in <functionlink id="SetNativeMethodPrefix"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8489 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8490 Any previous prefixes are replaced. Thus, calling this
a61af66fc99e Initial load
duke
parents:
diff changeset
8491 function with a <paramlink id="prefix_count"/> of <code>0</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8492 disables prefixing in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
8493 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8494 <functionlink id="SetNativeMethodPrefix"/> and this function
a61af66fc99e Initial load
duke
parents:
diff changeset
8495 are the two ways to set the prefixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8496 Calling <code>SetNativeMethodPrefix</code> with
a61af66fc99e Initial load
duke
parents:
diff changeset
8497 a prefix is the same as calling this function with
a61af66fc99e Initial load
duke
parents:
diff changeset
8498 <paramlink id="prefix_count"/> of <code>1</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8499 Calling <code>SetNativeMethodPrefix</code> with
a61af66fc99e Initial load
duke
parents:
diff changeset
8500 <code>NULL</code> is the same as calling this function with
a61af66fc99e Initial load
duke
parents:
diff changeset
8501 <paramlink id="prefix_count"/> of <code>0</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8502 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8503 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8504 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8505 <required id="can_set_native_method_prefix"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8506 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8507 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8508 <param id="prefix_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
8509 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8510 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8511 The number of prefixes to apply.
a61af66fc99e Initial load
duke
parents:
diff changeset
8512 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8513 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8514 <param id="prefixes">
a61af66fc99e Initial load
duke
parents:
diff changeset
8515 <agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8516 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8517 </agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8518 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8519 The prefixes to apply for this environment, each encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8520 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8521 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8522 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8523 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8524 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8525 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8526 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8527
a61af66fc99e Initial load
duke
parents:
diff changeset
8528 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8529
a61af66fc99e Initial load
duke
parents:
diff changeset
8530 <category id="RawMonitors" label="Raw Monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8531
a61af66fc99e Initial load
duke
parents:
diff changeset
8532 <function id="CreateRawMonitor" phase="onload" callbacksafe="safe" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
8533 <synopsis>Create Raw Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8534 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8535 Create a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8536 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8537 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8538 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8539 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8540 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8541 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
8542 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8543 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8544 A name to identify the monitor, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
8545 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
8546 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8547 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8548 <param id="monitor_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8549 <outptr><jrawMonitorID/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8550 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8551 On return, points to the created monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8552 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8553 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8554 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8555 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8556 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8557 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8558
a61af66fc99e Initial load
duke
parents:
diff changeset
8559 <function id="DestroyRawMonitor" phase="onload" callbacksafe="safe" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
8560 <synopsis>Destroy Raw Monitor</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8561 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8562 Destroy the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8563 If the monitor being destroyed has been entered by this thread, it will be
a61af66fc99e Initial load
duke
parents:
diff changeset
8564 exited before it is destroyed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8565 If the monitor being destroyed has been entered by another thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
8566 an error will be returned and the monitor will not be destroyed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8567 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8568 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8569 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8570 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8571 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8572 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8573 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8574 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8575 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8576 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8577 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8578 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8579 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8580 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8581 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8582 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8583 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8584 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8585
a61af66fc99e Initial load
duke
parents:
diff changeset
8586 <function id="RawMonitorEnter" phase="any" callbacksafe="safe" impl="innative notrace" num="33">
a61af66fc99e Initial load
duke
parents:
diff changeset
8587 <synopsis>Raw Monitor Enter</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8588 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8589 Gain exclusive ownership of a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8590 The same thread may enter a monitor more then once.
a61af66fc99e Initial load
duke
parents:
diff changeset
8591 The thread must
a61af66fc99e Initial load
duke
parents:
diff changeset
8592 <functionlink id="RawMonitorExit">exit</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8593 the monitor the same number of times as it is entered.
a61af66fc99e Initial load
duke
parents:
diff changeset
8594 If a monitor is entered during <code>OnLoad</code> (before attached threads exist)
a61af66fc99e Initial load
duke
parents:
diff changeset
8595 and has not exited when attached threads come into existence, the enter
a61af66fc99e Initial load
duke
parents:
diff changeset
8596 is considered to have occurred on the main thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
8597 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8598 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8599 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8600 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8601 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8602 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8603 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8604 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8605 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8606 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8607 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8608 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8609 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8610 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8611 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8612
a61af66fc99e Initial load
duke
parents:
diff changeset
8613 <function id="RawMonitorExit" phase="any" callbacksafe="safe" impl="innative notrace" num="34">
a61af66fc99e Initial load
duke
parents:
diff changeset
8614 <synopsis>Raw Monitor Exit</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8615 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8616 Release exclusive ownership of a raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8617 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8618 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8619 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8620 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8621 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8622 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8623 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8624 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8625 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8626 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8627 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8628 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8629 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8630 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8631 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8632 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8633 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8634 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8635
a61af66fc99e Initial load
duke
parents:
diff changeset
8636 <function id="RawMonitorWait" phase="any" callbacksafe="safe" impl="innative notrace" num="35">
a61af66fc99e Initial load
duke
parents:
diff changeset
8637 <synopsis>Raw Monitor Wait</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8638 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8639 Wait for notification of the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8640 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8641 Causes the current thread to wait until either another thread calls
a61af66fc99e Initial load
duke
parents:
diff changeset
8642 <functionlink id="RawMonitorNotify"/> or
a61af66fc99e Initial load
duke
parents:
diff changeset
8643 <functionlink id="RawMonitorNotifyAll"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8644 for the specified raw monitor, or the specified
a61af66fc99e Initial load
duke
parents:
diff changeset
8645 <paramlink id="millis">timeout</paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8646 has elapsed.
a61af66fc99e Initial load
duke
parents:
diff changeset
8647 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8648 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8649 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8650 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8651 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8652 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8653 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8654 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8655 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8656 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8657 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8658 <param id="millis">
a61af66fc99e Initial load
duke
parents:
diff changeset
8659 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8660 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8661 The timeout, in milliseconds. If the timeout is
a61af66fc99e Initial load
duke
parents:
diff changeset
8662 zero, then real time is not taken into consideration
a61af66fc99e Initial load
duke
parents:
diff changeset
8663 and the thread simply waits until notified.
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 <error id="JVMTI_ERROR_INTERRUPT">
a61af66fc99e Initial load
duke
parents:
diff changeset
8672 Wait was interrupted, try again
a61af66fc99e Initial load
duke
parents:
diff changeset
8673 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8674 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8675 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8676
a61af66fc99e Initial load
duke
parents:
diff changeset
8677 <function id="RawMonitorNotify" phase="any" callbacksafe="safe" impl="notrace" num="36">
a61af66fc99e Initial load
duke
parents:
diff changeset
8678 <synopsis>Raw Monitor Notify</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8679 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8680 Notify a single thread waiting on the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8681 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8682 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8683 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8684 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8685 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8686 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8687 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8688 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8689 The monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
8690 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8691 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8692 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8693 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8694 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8695 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8696 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8697 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8698 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8699
a61af66fc99e Initial load
duke
parents:
diff changeset
8700 <function id="RawMonitorNotifyAll" phase="any" callbacksafe="safe" impl="notrace" num="37">
a61af66fc99e Initial load
duke
parents:
diff changeset
8701 <synopsis>Raw Monitor Notify All</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8702 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8703 Notify all threads waiting on the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8704 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8705 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8706 <capabilities>
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 monitor
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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8716 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8717 <error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
a61af66fc99e Initial load
duke
parents:
diff changeset
8718 Not monitor owner
a61af66fc99e Initial load
duke
parents:
diff changeset
8719 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
8720 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8721 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8722
a61af66fc99e Initial load
duke
parents:
diff changeset
8723 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
8724 <function id="GetRawMonitorUse" num="118">
a61af66fc99e Initial load
duke
parents:
diff changeset
8725 <synopsis>Get Raw Monitor Use</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8726 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8727 The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
8728 are filled in with information about usage of the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8729 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8730 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8731 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8732 <required id="can_get_raw_monitor_usage"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8733 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8734 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8735 <param id="monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
8736 <jrawMonitorID/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8737 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8738 the raw monitor to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
8739 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8740 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8741 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8742 <outptr><struct>jvmtiMonitorUsage</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8743 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8744 On return, filled with monitor information for the
a61af66fc99e Initial load
duke
parents:
diff changeset
8745 specified raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
8746 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8747 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8748 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8749 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8750 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8751 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8752
a61af66fc99e Initial load
duke
parents:
diff changeset
8753 <function id="GetRawMonitors" num="119">
a61af66fc99e Initial load
duke
parents:
diff changeset
8754 <synopsis>Get Raw Monitors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8755 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8756 Return the list of raw monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
8757 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8758 Note: details about each monitor can be examined with
a61af66fc99e Initial load
duke
parents:
diff changeset
8759 <functionlink id="GetRawMonitorUse"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8760 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8761 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8762 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8763 <required id="can_get_raw_monitor_usage"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
8764 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8765 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8766 <param id="monitorCnt">
a61af66fc99e Initial load
duke
parents:
diff changeset
8767 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8768 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8769 On return, pointer to the number
a61af66fc99e Initial load
duke
parents:
diff changeset
8770 of monitors returned in <code>monitors_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8771 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8772 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8773 <param id="monitors_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
8774 <allocbuf outcount="monitorCnt"><jrawMonitorID/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8775 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8776 On return, pointer to the monitor list.
a61af66fc99e Initial load
duke
parents:
diff changeset
8777 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8778 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8779 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8780 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8781 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8782 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8783 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
8784 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8785
a61af66fc99e Initial load
duke
parents:
diff changeset
8786 <category id="jniIntercept" label="JNI Function Interception">
a61af66fc99e Initial load
duke
parents:
diff changeset
8787
a61af66fc99e Initial load
duke
parents:
diff changeset
8788 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
8789 Provides the ability to intercept and resend
a61af66fc99e Initial load
duke
parents:
diff changeset
8790 Java Native Interface (JNI) function calls
a61af66fc99e Initial load
duke
parents:
diff changeset
8791 by manipulating the JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8792 See <externallink id="http://java.sun.com/javase/6/docs/guide/jni/spec/functions.html">JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
8793 Functions</externallink> in the <i>Java Native Interface Specification</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8794 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8795 The following example illustrates intercepting the
a61af66fc99e Initial load
duke
parents:
diff changeset
8796 <code>NewGlobalRef</code> JNI call in order to count reference
a61af66fc99e Initial load
duke
parents:
diff changeset
8797 creation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8798 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8799 JNIEnv original_jni_Functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
8800 JNIEnv redirected_jni_Functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
8801 int my_global_ref_count = 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
8802
a61af66fc99e Initial load
duke
parents:
diff changeset
8803 jobject
a61af66fc99e Initial load
duke
parents:
diff changeset
8804 MyNewGlobalRef(JNIEnv *jni_env, jobject lobj) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8805 ++my_global_ref_count;
a61af66fc99e Initial load
duke
parents:
diff changeset
8806 return originalJNIFunctions-&gt;NewGlobalRef(env, lobj);
a61af66fc99e Initial load
duke
parents:
diff changeset
8807 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8808
a61af66fc99e Initial load
duke
parents:
diff changeset
8809 void
a61af66fc99e Initial load
duke
parents:
diff changeset
8810 myInit() {
a61af66fc99e Initial load
duke
parents:
diff changeset
8811 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
8812
a61af66fc99e Initial load
duke
parents:
diff changeset
8813 err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;original_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8814 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8815 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8816 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8817 err = (*jvmti_env)-&gt;GetJNIFunctionTable(jvmti_env, &amp;redirected_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8818 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8819 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8820 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8821 redirectedJNIFunctions-&gt;NewGlobalRef = MyNewGlobalRef;
a61af66fc99e Initial load
duke
parents:
diff changeset
8822 err = (*jvmti_env)-&gt;SetJNIFunctionTable(jvmti_env, redirected_jni_Functions);
a61af66fc99e Initial load
duke
parents:
diff changeset
8823 if (err != JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
8824 die();
a61af66fc99e Initial load
duke
parents:
diff changeset
8825 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8826 }
a61af66fc99e Initial load
duke
parents:
diff changeset
8827 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
8828 Sometime after <code>myInit</code> is called the user's JNI
a61af66fc99e Initial load
duke
parents:
diff changeset
8829 code is executed which makes the call to create a new global
a61af66fc99e Initial load
duke
parents:
diff changeset
8830 reference. Instead of going to the normal JNI implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
8831 the call goes to <code>myNewGlobalRef</code>. Note that a
a61af66fc99e Initial load
duke
parents:
diff changeset
8832 copy of the original function table is kept so that the normal
a61af66fc99e Initial load
duke
parents:
diff changeset
8833 JNI function can be called after the data is collected.
a61af66fc99e Initial load
duke
parents:
diff changeset
8834 Note also that any JNI functions which are not overwritten
a61af66fc99e Initial load
duke
parents:
diff changeset
8835 will behave normally.
a61af66fc99e Initial load
duke
parents:
diff changeset
8836 <todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
8837 check that the example compiles and executes.
a61af66fc99e Initial load
duke
parents:
diff changeset
8838 </todo>
a61af66fc99e Initial load
duke
parents:
diff changeset
8839 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
8840
a61af66fc99e Initial load
duke
parents:
diff changeset
8841 <function id="SetJNIFunctionTable" phase="start" num="120">
a61af66fc99e Initial load
duke
parents:
diff changeset
8842 <synopsis>Set JNI Function Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8843 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8844 Set the JNI function table
a61af66fc99e Initial load
duke
parents:
diff changeset
8845 in all current and future JNI environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
8846 As a result, all future JNI calls are directed to the specified functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
8847 Use <functionlink id="GetJNIFunctionTable"></functionlink> to get the
a61af66fc99e Initial load
duke
parents:
diff changeset
8848 function table to pass to this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8849 For this function to take effect the the updated table entries must be
a61af66fc99e Initial load
duke
parents:
diff changeset
8850 used by the JNI clients.
a61af66fc99e Initial load
duke
parents:
diff changeset
8851 Since the table is defined <code>const</code> some compilers may optimize
a61af66fc99e Initial load
duke
parents:
diff changeset
8852 away the access to the table, thus preventing this function from taking
a61af66fc99e Initial load
duke
parents:
diff changeset
8853 effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8854 The table is copied--changes to the local copy of the
a61af66fc99e Initial load
duke
parents:
diff changeset
8855 table have no effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8856 This function affects only the function table, all other aspects of the environment are
a61af66fc99e Initial load
duke
parents:
diff changeset
8857 unaffected.
a61af66fc99e Initial load
duke
parents:
diff changeset
8858 See the examples <internallink id="jniIntercept">above</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8859 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8860 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8861 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8862 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8863 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8864 <param id="function_table">
a61af66fc99e Initial load
duke
parents:
diff changeset
8865 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8866 <struct>jniNativeInterface</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8867 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8868 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8869 Points to the new JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8870 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8871 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8872 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8873 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8874 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8875 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8876
a61af66fc99e Initial load
duke
parents:
diff changeset
8877 <function id="GetJNIFunctionTable" phase="start" num="121">
a61af66fc99e Initial load
duke
parents:
diff changeset
8878 <synopsis>Get JNI Function Table</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8879 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8880 Get the JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8881 The JNI function table is copied into allocated memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
8882 If <functionlink id="SetJNIFunctionTable"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8883 has been called, the modified (not the original) function
a61af66fc99e Initial load
duke
parents:
diff changeset
8884 table is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
8885 Only the function table is copied, no other aspects of the environment
a61af66fc99e Initial load
duke
parents:
diff changeset
8886 are copied.
a61af66fc99e Initial load
duke
parents:
diff changeset
8887 See the examples <internallink id="jniIntercept">above</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8888 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8889 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8890 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8891 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8892 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8893 <param id="function_table">
a61af66fc99e Initial load
duke
parents:
diff changeset
8894 <allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8895 <struct>jniNativeInterface</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8896 </allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
8897 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8898 On return, <code>*function_table</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
8899 points a newly allocated copy of the JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8900 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8901 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8902 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8903 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8904 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8905 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8906
a61af66fc99e Initial load
duke
parents:
diff changeset
8907 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
8908
a61af66fc99e Initial load
duke
parents:
diff changeset
8909 <category id="eventManagement" label="Event Management">
a61af66fc99e Initial load
duke
parents:
diff changeset
8910
a61af66fc99e Initial load
duke
parents:
diff changeset
8911 <function id="SetEventCallbacks" jkernel="yes" phase="onload" num="122">
a61af66fc99e Initial load
duke
parents:
diff changeset
8912 <synopsis>Set Event Callbacks</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8913 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8914 Set the functions to be called for each event.
a61af66fc99e Initial load
duke
parents:
diff changeset
8915 The callbacks are specified by supplying a replacement function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
8916 The function table is copied--changes to the local copy of the
a61af66fc99e Initial load
duke
parents:
diff changeset
8917 table have no effect.
a61af66fc99e Initial load
duke
parents:
diff changeset
8918 This is an atomic action, all callbacks are set at once.
a61af66fc99e Initial load
duke
parents:
diff changeset
8919 No events are sent before this function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
8920 When an entry is <code>NULL</code> or when the event is beyond
a61af66fc99e Initial load
duke
parents:
diff changeset
8921 <paramlink id="size_of_callbacks"></paramlink> no event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
8922 Details on events are
a61af66fc99e Initial load
duke
parents:
diff changeset
8923 described <internallink id="EventSection">later</internallink> in this document.
a61af66fc99e Initial load
duke
parents:
diff changeset
8924 An event must be enabled and have a callback in order to be
a61af66fc99e Initial load
duke
parents:
diff changeset
8925 sent--the order in which this function and
a61af66fc99e Initial load
duke
parents:
diff changeset
8926 <functionlink id="SetEventNotificationMode"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
8927 are called does not affect the result.
a61af66fc99e Initial load
duke
parents:
diff changeset
8928 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8929 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
8930 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8931 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
8932 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8933 <param id="callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
8934 <inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8935 <struct>jvmtiEventCallbacks</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
8936 <nullok>remove the existing callbacks</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
8937 </inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
8938 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8939 The new event callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
8940 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8941 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8942 <param id="size_of_callbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
8943 <jint min="0"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8944 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8945 <code>sizeof(jvmtiEventCallbacks)</code>--for version
a61af66fc99e Initial load
duke
parents:
diff changeset
8946 compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
8947 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8948 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
8949 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
8950 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8951 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
8952 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
8953
a61af66fc99e Initial load
duke
parents:
diff changeset
8954 <function id="SetEventNotificationMode" jkernel="yes" phase="onload" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
8955 <synopsis>Set Event Notification Mode</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
8956 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8957 Control the generation of events.
a61af66fc99e Initial load
duke
parents:
diff changeset
8958 <constants id="jvmtiEventMode" label="Event Enable/Disable" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
8959 <constant id="JVMTI_ENABLE" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
8960 If <paramlink id="mode"></paramlink> is <code>JVMTI_ENABLE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8961 the event <paramlink id="event_type"></paramlink> will be enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
8962 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
8963 <constant id="JVMTI_DISABLE" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
8964 If <paramlink id="mode"></paramlink> is <code>JVMTI_DISABLE</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8965 the event <paramlink id="event_type"></paramlink> will be disabled
a61af66fc99e Initial load
duke
parents:
diff changeset
8966 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
8967 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
8968 If <code>thread</code> is <code>NULL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
8969 the event is enabled or disabled globally; otherwise, it is
a61af66fc99e Initial load
duke
parents:
diff changeset
8970 enabled or disabled for a particular thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
8971 An event is generated for
a61af66fc99e Initial load
duke
parents:
diff changeset
8972 a particular thread if it is enabled either at the thread or global
a61af66fc99e Initial load
duke
parents:
diff changeset
8973 levels.
a61af66fc99e Initial load
duke
parents:
diff changeset
8974 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8975 See <internallink id="EventIndex">below</internallink> for information on specific events.
a61af66fc99e Initial load
duke
parents:
diff changeset
8976 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8977 The following events cannot be controlled at the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
8978 level through this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8979 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
8980 <li><eventlink id="VMInit"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8981 <li><eventlink id="VMStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8982 <li><eventlink id="VMDeath"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8983 <li><eventlink id="ThreadStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8984 <li><eventlink id="CompiledMethodLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8985 <li><eventlink id="CompiledMethodUnload"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8986 <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8987 <li><eventlink id="DataDumpRequest"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
8988 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
8989 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8990 Initially, no events are enabled at either the thread level
a61af66fc99e Initial load
duke
parents:
diff changeset
8991 or the global level.
a61af66fc99e Initial load
duke
parents:
diff changeset
8992 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8993 Any needed capabilities (see Event Enabling Capabilities below) must be possessed
a61af66fc99e Initial load
duke
parents:
diff changeset
8994 before calling this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
8995 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
8996 Details on events are
a61af66fc99e Initial load
duke
parents:
diff changeset
8997 described <internallink id="EventSection">below</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
8998 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
8999 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9000 <eventcapabilities></eventcapabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9001 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9002 <param id="mode">
a61af66fc99e Initial load
duke
parents:
diff changeset
9003 <enum>jvmtiEventMode</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9004 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9005 <code>JVMTI_ENABLE</code> or <code>JVMTI_DISABLE</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9006 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9007 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9008 <param id="event_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9009 <enum>jvmtiEvent</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9010 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9011 the event to control
a61af66fc99e Initial load
duke
parents:
diff changeset
9012 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9013 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9014 <param id="event_thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
9015 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9016 <jthread impl="noconvert"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9017 <nullok>event is controlled at the global level</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
9018 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9019 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9020 The thread to control
a61af66fc99e Initial load
duke
parents:
diff changeset
9021 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9022 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9023 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9024 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9025 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9026 for future expansion
a61af66fc99e Initial load
duke
parents:
diff changeset
9027 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9028 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9029 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9030 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9031 <error id="JVMTI_ERROR_INVALID_THREAD">
a61af66fc99e Initial load
duke
parents:
diff changeset
9032 <paramlink id="event_thread"/> is non-<code>NULL</code> and is not a valid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9033 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9034 <error id="JVMTI_ERROR_THREAD_NOT_ALIVE">
a61af66fc99e Initial load
duke
parents:
diff changeset
9035 <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
9036 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9037 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9038 thread level control was attempted on events which do not
a61af66fc99e Initial load
duke
parents:
diff changeset
9039 permit thread level control.
a61af66fc99e Initial load
duke
parents:
diff changeset
9040 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9041 <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
9042 The Required Event Enabling Capability is not possessed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9043 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9044 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9045 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9046
a61af66fc99e Initial load
duke
parents:
diff changeset
9047 <function id="GenerateEvents" num="123">
a61af66fc99e Initial load
duke
parents:
diff changeset
9048 <synopsis>Generate Events</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9049 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9050 Generate events to represent the current state of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
9051 For example, if <paramlink id="event_type"/> is
a61af66fc99e Initial load
duke
parents:
diff changeset
9052 <code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9053 a <eventlink id="CompiledMethodLoad"></eventlink> event will be
a61af66fc99e Initial load
duke
parents:
diff changeset
9054 sent for each currently compiled method.
a61af66fc99e Initial load
duke
parents:
diff changeset
9055 Methods that were loaded and now have been unloaded are not sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
9056 The history of what events have previously been sent does not
a61af66fc99e Initial load
duke
parents:
diff changeset
9057 effect what events are sent by this function--for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
9058 all currently compiled methods
a61af66fc99e Initial load
duke
parents:
diff changeset
9059 will be sent each time this function is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
9060 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9061 This function is useful when
a61af66fc99e Initial load
duke
parents:
diff changeset
9062 events may have been missed due to the agent attaching after program
a61af66fc99e Initial load
duke
parents:
diff changeset
9063 execution begins; this function generates the missed events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9064 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9065 Attempts to execute Java programming language code or
a61af66fc99e Initial load
duke
parents:
diff changeset
9066 JNI functions may be paused until this function returns -
a61af66fc99e Initial load
duke
parents:
diff changeset
9067 so neither should be called from the thread sending the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9068 This function returns only after the missed events have been
a61af66fc99e Initial load
duke
parents:
diff changeset
9069 sent, processed and have returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
9070 The event may be sent on a different thread than the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
9071 on which the event occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
9072 The callback for the event must be set with
a61af66fc99e Initial load
duke
parents:
diff changeset
9073 <functionlink id="SetEventCallbacks"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9074 and the event must be enabled with
a61af66fc99e Initial load
duke
parents:
diff changeset
9075 <functionlink id="SetEventNotificationMode"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9076 or the events will not occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
9077 If the VM no longer has the information to generate some or
a61af66fc99e Initial load
duke
parents:
diff changeset
9078 all of the requested events, the events are simply not sent -
a61af66fc99e Initial load
duke
parents:
diff changeset
9079 no error is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
9080 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9081 Only the following events are supported:
a61af66fc99e Initial load
duke
parents:
diff changeset
9082 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9083 <li><eventlink id="CompiledMethodLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9084 <li><eventlink id="DynamicCodeGenerated"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9085 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9086 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9087 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9088 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9089 <capability id="can_generate_compiled_method_load_events"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
9090 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9091 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9092 <param id="event_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9093 <enum>jvmtiEvent</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9094 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9095 The type of event to generate. Must be one of these:
a61af66fc99e Initial load
duke
parents:
diff changeset
9096 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9097 <li><eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9098 <li><eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9099 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9100 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9101 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9102 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9103 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9104 <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
a61af66fc99e Initial load
duke
parents:
diff changeset
9105 <paramlink id="event_type"/> is
a61af66fc99e Initial load
duke
parents:
diff changeset
9106 <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9107 and <fieldlink id="can_generate_compiled_method_load_events" struct="jvmtiCapabilities"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9108 is <code>false</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9109 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9110 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9111 <paramlink id="event_type"/> is other than
a61af66fc99e Initial load
duke
parents:
diff changeset
9112 <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9113 or <eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9114 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9115 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9116 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9117
a61af66fc99e Initial load
duke
parents:
diff changeset
9118 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
9119
a61af66fc99e Initial load
duke
parents:
diff changeset
9120 <category id="extension" label="Extension Mechanism">
a61af66fc99e Initial load
duke
parents:
diff changeset
9121
a61af66fc99e Initial load
duke
parents:
diff changeset
9122 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9123 These functions
a61af66fc99e Initial load
duke
parents:
diff changeset
9124 allow a <jvmti/> implementation to provide functions and events
a61af66fc99e Initial load
duke
parents:
diff changeset
9125 beyond those defined in this specification.
a61af66fc99e Initial load
duke
parents:
diff changeset
9126 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9127 Both extension functions and extension events have parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9128 each of which has a 'type' and 'kind' chosen from the following tables:
a61af66fc99e Initial load
duke
parents:
diff changeset
9129
a61af66fc99e Initial load
duke
parents:
diff changeset
9130 <constants id="jvmtiParamTypes" label="Extension Function/Event Parameter Types" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9131 <constant id="JVMTI_TYPE_JBYTE" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
9132 Java programming language primitive type - <code>byte</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9133 JNI type <code>jbyte</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9134 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9135 <constant id="JVMTI_TYPE_JCHAR" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
9136 Java programming language primitive type - <code>char</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9137 JNI type <code>jchar</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9138 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9139 <constant id="JVMTI_TYPE_JSHORT" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
9140 Java programming language primitive type - <code>short</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9141 JNI type <code>jshort</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9142 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9143 <constant id="JVMTI_TYPE_JINT" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
9144 Java programming language primitive type - <code>int</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9145 JNI type <datalink id="jint"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9146 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9147 <constant id="JVMTI_TYPE_JLONG" num="105">
a61af66fc99e Initial load
duke
parents:
diff changeset
9148 Java programming language primitive type - <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9149 JNI type <datalink id="jlong"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9150 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9151 <constant id="JVMTI_TYPE_JFLOAT" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
9152 Java programming language primitive type - <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9153 JNI type <datalink id="jfloat"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9154 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9155 <constant id="JVMTI_TYPE_JDOUBLE" num="107">
a61af66fc99e Initial load
duke
parents:
diff changeset
9156 Java programming language primitive type - <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9157 JNI type <datalink id="jdouble"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9158 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9159 <constant id="JVMTI_TYPE_JBOOLEAN" num="108">
a61af66fc99e Initial load
duke
parents:
diff changeset
9160 Java programming language primitive type - <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9161 JNI type <datalink id="jboolean"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9162 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9163 <constant id="JVMTI_TYPE_JOBJECT" num="109">
a61af66fc99e Initial load
duke
parents:
diff changeset
9164 Java programming language object type - <code>java.lang.Object</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9165 JNI type <datalink id="jobject"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9166 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9167 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9168 <constant id="JVMTI_TYPE_JTHREAD" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
9169 Java programming language object type - <code>java.lang.Thread</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9170 <jvmti/> type <datalink id="jthread"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9171 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9172 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9173 <constant id="JVMTI_TYPE_JCLASS" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
9174 Java programming language object type - <code>java.lang.Class</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9175 JNI type <datalink id="jclass"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9176 Returned values are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9177 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9178 <constant id="JVMTI_TYPE_JVALUE" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
9179 Union of all Java programming language primitive and object types -
a61af66fc99e Initial load
duke
parents:
diff changeset
9180 JNI type <datalink id="jvalue"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9181 Returned values which represent object types are JNI local references and must be managed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9182 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9183 <constant id="JVMTI_TYPE_JFIELDID" num="113">
a61af66fc99e Initial load
duke
parents:
diff changeset
9184 Java programming language field identifier -
a61af66fc99e Initial load
duke
parents:
diff changeset
9185 JNI type <datalink id="jfieldID"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9186 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9187 <constant id="JVMTI_TYPE_JMETHODID" num="114">
a61af66fc99e Initial load
duke
parents:
diff changeset
9188 Java programming language method identifier -
a61af66fc99e Initial load
duke
parents:
diff changeset
9189 JNI type <datalink id="jmethodID"></datalink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9190 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9191 <constant id="JVMTI_TYPE_CCHAR" num="115">
a61af66fc99e Initial load
duke
parents:
diff changeset
9192 C programming language type - <code>char</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9193 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9194 <constant id="JVMTI_TYPE_CVOID" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
9195 C programming language type - <code>void</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9196 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9197 <constant id="JVMTI_TYPE_JNIENV" num="117">
a61af66fc99e Initial load
duke
parents:
diff changeset
9198 JNI environment - <code>JNIEnv</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9199 Should be used with the correct <datalink id="jvmtiParamKind"/> to make it a pointer type.
a61af66fc99e Initial load
duke
parents:
diff changeset
9200 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9201 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9202
a61af66fc99e Initial load
duke
parents:
diff changeset
9203 <constants id="jvmtiParamKind" label="Extension Function/Event Parameter Kinds" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
9204 <constant id="JVMTI_KIND_IN" num="91">
a61af66fc99e Initial load
duke
parents:
diff changeset
9205 Ingoing argument - <code>foo</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9206 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9207 <constant id="JVMTI_KIND_IN_PTR" num="92">
a61af66fc99e Initial load
duke
parents:
diff changeset
9208 Ingoing pointer argument - <code>const foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9209 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9210 <constant id="JVMTI_KIND_IN_BUF" num="93">
a61af66fc99e Initial load
duke
parents:
diff changeset
9211 Ingoing array argument - <code>const foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9212 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9213 <constant id="JVMTI_KIND_ALLOC_BUF" num="94">
a61af66fc99e Initial load
duke
parents:
diff changeset
9214 Outgoing allocated array argument - <code>foo**</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9215 Free with <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9216 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9217 <constant id="JVMTI_KIND_ALLOC_ALLOC_BUF" num="95">
a61af66fc99e Initial load
duke
parents:
diff changeset
9218 Outgoing allocated array of allocated arrays argument - <code>foo***</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9219 Free with <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9220 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9221 <constant id="JVMTI_KIND_OUT" num="96">
a61af66fc99e Initial load
duke
parents:
diff changeset
9222 Outgoing argument - <code>foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9223 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9224 <constant id="JVMTI_KIND_OUT_BUF" num="97">
a61af66fc99e Initial load
duke
parents:
diff changeset
9225 Outgoing array argument (pre-allocated by agent) - <code>foo*</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9226 Do not <code>Deallocate</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9227 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
9228 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
9229
a61af66fc99e Initial load
duke
parents:
diff changeset
9230 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9231
a61af66fc99e Initial load
duke
parents:
diff changeset
9232 <typedef id="jvmtiParamInfo" label="Extension Function/Event Parameter Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9233 <field id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
9234 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9235 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9236 The parameter name, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9237 <internallink id="mUTF">modified UTF-8</internallink> string
a61af66fc99e Initial load
duke
parents:
diff changeset
9238 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9239 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9240 <field id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
9241 <enum>jvmtiParamKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9242 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9243 The kind of the parameter - type modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
9244 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9245 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9246 <field id="base_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
9247 <enum>jvmtiParamTypes</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9248 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9249 The base type of the parameter - modified by <code>kind</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9250 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9251 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9252 <field id="null_ok">
a61af66fc99e Initial load
duke
parents:
diff changeset
9253 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9254 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9255 Is a <code>NULL</code> argument permitted? Applies only to pointer and object types.
a61af66fc99e Initial load
duke
parents:
diff changeset
9256 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9257 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9258 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9259
a61af66fc99e Initial load
duke
parents:
diff changeset
9260 <callback id="jvmtiExtensionFunction">
a61af66fc99e Initial load
duke
parents:
diff changeset
9261 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9262 <synopsis>Extension Function</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9263 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9264 This is the implementation-specific extension function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9265 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9266 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9267 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
9268 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9269 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9270 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9271 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9272 The <jvmti/> environment is the only fixed parameter for extension functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9273 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9274 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9275 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9276 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9277 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9278 The extension function-specific parameters
a61af66fc99e Initial load
duke
parents:
diff changeset
9279 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9280 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9281 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9282 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
9283
a61af66fc99e Initial load
duke
parents:
diff changeset
9284 <function id="GetExtensionFunctions" phase="onload" num="124">
a61af66fc99e Initial load
duke
parents:
diff changeset
9285 <synopsis>Get Extension Functions</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9286
a61af66fc99e Initial load
duke
parents:
diff changeset
9287 <typedef id="jvmtiExtensionFunctionInfo" label="Extension Function Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9288 <field id="func">
a61af66fc99e Initial load
duke
parents:
diff changeset
9289 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9290 <struct>jvmtiExtensionFunction</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9291 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9292 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9293 The actual function to call
a61af66fc99e Initial load
duke
parents:
diff changeset
9294 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9295 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9296 <field id="id">
a61af66fc99e Initial load
duke
parents:
diff changeset
9297 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9298 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9299 The identifier for the extension function, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9300 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9301 Uses package name conventions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9302 For example, <code>com.sun.hotspot.bar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9303 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9304 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9305 <field id="short_description">
a61af66fc99e Initial load
duke
parents:
diff changeset
9306 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9307 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9308 A one sentence description of the function, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9309 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9310 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9311 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9312 <field id="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9313 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9314 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9315 The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9316 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9317 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9318 <field id="params">
a61af66fc99e Initial load
duke
parents:
diff changeset
9319 <allocfieldbuf outcount="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9320 <struct>jvmtiParamInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9321 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9322 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9323 Array of
a61af66fc99e Initial load
duke
parents:
diff changeset
9324 <fieldlink id="param_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9325 parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
a61af66fc99e Initial load
duke
parents:
diff changeset
9326 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9327 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9328 <field id="error_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9329 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9330 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9331 The number of possible error returns (excluding universal errors)
a61af66fc99e Initial load
duke
parents:
diff changeset
9332 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9333 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9334 <field id="errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
9335 <allocfieldbuf outcount="error_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9336 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
9337 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9338 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9339 Array of <fieldlink id="error_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9340 possible errors
a61af66fc99e Initial load
duke
parents:
diff changeset
9341 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9342 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9343 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9344
a61af66fc99e Initial load
duke
parents:
diff changeset
9345 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9346 Returns the set of extension functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9347 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9348 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9349 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9350 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9351 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9352 <param id="extension_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9353 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9354 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9355 On return, points to the number of extension functions
a61af66fc99e Initial load
duke
parents:
diff changeset
9356 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9357 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9358 <param id="extensions">
a61af66fc99e Initial load
duke
parents:
diff changeset
9359 <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionFunctionInfo</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9360 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9361 Returns an array of extension function info, one per function
a61af66fc99e Initial load
duke
parents:
diff changeset
9362 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9363 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9364 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9365 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9366 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9367 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9368
a61af66fc99e Initial load
duke
parents:
diff changeset
9369 <function id="GetExtensionEvents" phase="onload" num="125">
a61af66fc99e Initial load
duke
parents:
diff changeset
9370 <synopsis>Get Extension Events</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9371
a61af66fc99e Initial load
duke
parents:
diff changeset
9372 <typedef id="jvmtiExtensionEventInfo" label="Extension Event Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9373 <field id="extension_event_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
9374 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9375 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9376 The identifying index of the event
a61af66fc99e Initial load
duke
parents:
diff changeset
9377 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9378 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9379 <field id="id">
a61af66fc99e Initial load
duke
parents:
diff changeset
9380 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9381 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9382 The identifier for the extension event, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9383 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9384 Uses package name conventions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9385 For example, <code>com.sun.hotspot.bar</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9386 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9387 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9388 <field id="short_description">
a61af66fc99e Initial load
duke
parents:
diff changeset
9389 <allocfieldbuf><char/></allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9390 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9391 A one sentence description of the event, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
9392 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
9393 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9394 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9395 <field id="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9396 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9397 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9398 The number of parameters excluding <code>jvmtiEnv *jvmti_env</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9399 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9400 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9401 <field id="params">
a61af66fc99e Initial load
duke
parents:
diff changeset
9402 <allocfieldbuf outcount="param_count">
a61af66fc99e Initial load
duke
parents:
diff changeset
9403 <struct>jvmtiParamInfo</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9404 </allocfieldbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9405 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9406 Array of
a61af66fc99e Initial load
duke
parents:
diff changeset
9407 <fieldlink id="param_count" struct="jvmtiExtensionEventInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9408 parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
a61af66fc99e Initial load
duke
parents:
diff changeset
9409 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9410 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
9411 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9412
a61af66fc99e Initial load
duke
parents:
diff changeset
9413 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9414 Returns the set of extension events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9415 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9416 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9417 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9418 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9419 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9420 <param id="extension_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9421 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9422 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9423 On return, points to the number of extension events
a61af66fc99e Initial load
duke
parents:
diff changeset
9424 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9425 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9426 <param id="extensions">
a61af66fc99e Initial load
duke
parents:
diff changeset
9427 <allocbuf outcount="extension_count_ptr"><struct>jvmtiExtensionEventInfo</struct></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
9428 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9429 Returns an array of extension event info, one per event
a61af66fc99e Initial load
duke
parents:
diff changeset
9430 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9431 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9432 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9433 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9434 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9435 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9436
a61af66fc99e Initial load
duke
parents:
diff changeset
9437 <callback id="jvmtiExtensionEvent">
a61af66fc99e Initial load
duke
parents:
diff changeset
9438 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9439 <synopsis>Extension Event</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9440 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9441 This is the implementation-specific event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9442 The event handler is set with
a61af66fc99e Initial load
duke
parents:
diff changeset
9443 <functionlink id="SetExtensionEventCallback"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9444 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9445 Event handlers for extension events must be declared varargs to match this definition.
a61af66fc99e Initial load
duke
parents:
diff changeset
9446 Failure to do so could result in calling convention mismatch and undefined behavior
a61af66fc99e Initial load
duke
parents:
diff changeset
9447 on some platforms.
a61af66fc99e Initial load
duke
parents:
diff changeset
9448 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9449 For example, if the <code>jvmtiParamInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
9450 returned by <functionlink id="GetExtensionEvents"/> indicates that
a61af66fc99e Initial load
duke
parents:
diff changeset
9451 there is a <code>jint</code> parameter, the event handler should be
a61af66fc99e Initial load
duke
parents:
diff changeset
9452 declared:
a61af66fc99e Initial load
duke
parents:
diff changeset
9453 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9454 void JNICALL myHandler(jvmtiEnv* jvmti_env, jint myInt, ...)
a61af66fc99e Initial load
duke
parents:
diff changeset
9455 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9456 Note the terminal "<code>...</code>" which indicates varargs.
a61af66fc99e Initial load
duke
parents:
diff changeset
9457 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9458 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9459 <param id="jvmti_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
9460 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9461 <struct>jvmtiEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9462 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9463 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9464 The <jvmti/> environment is the only fixed parameter for extension events.
a61af66fc99e Initial load
duke
parents:
diff changeset
9465 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9466 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9467 <param id="...">
a61af66fc99e Initial load
duke
parents:
diff changeset
9468 <varargs/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9469 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9470 The extension event-specific parameters
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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9474 </callback>
a61af66fc99e Initial load
duke
parents:
diff changeset
9475
a61af66fc99e Initial load
duke
parents:
diff changeset
9476 <function id="SetExtensionEventCallback" phase="onload" num="126">
a61af66fc99e Initial load
duke
parents:
diff changeset
9477 <synopsis>Set Extension Event Callback</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9478
a61af66fc99e Initial load
duke
parents:
diff changeset
9479 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9480 Sets the callback function for an extension event and
a61af66fc99e Initial load
duke
parents:
diff changeset
9481 enables the event. Or, if the callback is <code>NULL</code>, disables
a61af66fc99e Initial load
duke
parents:
diff changeset
9482 the event. Note that unlike standard events, setting
a61af66fc99e Initial load
duke
parents:
diff changeset
9483 the callback and enabling the event are a single operation.
a61af66fc99e Initial load
duke
parents:
diff changeset
9484 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9485 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9486 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9487 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9488 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9489 <param id="extension_event_index">
a61af66fc99e Initial load
duke
parents:
diff changeset
9490 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9491 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9492 Identifies which callback to set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9493 This index is the
a61af66fc99e Initial load
duke
parents:
diff changeset
9494 <fieldlink id="extension_event_index" struct="jvmtiExtensionEventInfo"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9495 field of
a61af66fc99e Initial load
duke
parents:
diff changeset
9496 <datalink id="jvmtiExtensionEventInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9497 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9498 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9499 <param id="callback">
a61af66fc99e Initial load
duke
parents:
diff changeset
9500 <ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9501 <struct>jvmtiExtensionEvent</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
9502 <nullok>disable the event</nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
9503 </ptrtype>
a61af66fc99e Initial load
duke
parents:
diff changeset
9504 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9505 If <code>callback</code> is non-<code>NULL</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9506 set <code>callback</code> to be the event callback function
a61af66fc99e Initial load
duke
parents:
diff changeset
9507 and enable the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
9508 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9509 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9510 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9511 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9512 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
9513 <paramlink id="extension_event_index"/> is not an
a61af66fc99e Initial load
duke
parents:
diff changeset
9514 <fieldlink id="extension_event_index"
a61af66fc99e Initial load
duke
parents:
diff changeset
9515 struct="jvmtiExtensionEventInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9516 returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
9517 <functionlink id="GetExtensionEvents"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9518 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
9519 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9520 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9521
a61af66fc99e Initial load
duke
parents:
diff changeset
9522 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
9523
a61af66fc99e Initial load
duke
parents:
diff changeset
9524 <category id="capability" label="Capability">
a61af66fc99e Initial load
duke
parents:
diff changeset
9525
a61af66fc99e Initial load
duke
parents:
diff changeset
9526 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9527 The capabilities functions allow you to change the
a61af66fc99e Initial load
duke
parents:
diff changeset
9528 functionality available to <jvmti/>--that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
9529 which <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9530 functions can be called, what events can be generated,
a61af66fc99e Initial load
duke
parents:
diff changeset
9531 and what functionality these events and functions can
a61af66fc99e Initial load
duke
parents:
diff changeset
9532 provide.
a61af66fc99e Initial load
duke
parents:
diff changeset
9533 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9534 The "Capabilities" section of each function and event describe which
a61af66fc99e Initial load
duke
parents:
diff changeset
9535 capabilities, if any, they are associated with. "Required Functionality"
a61af66fc99e Initial load
duke
parents:
diff changeset
9536 means it is available for use and no capabilities must be added to use it.
a61af66fc99e Initial load
duke
parents:
diff changeset
9537 "Optional Functionality" means the agent must possess the capability
a61af66fc99e Initial load
duke
parents:
diff changeset
9538 before it can be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
9539 To possess a capability, the agent must
a61af66fc99e Initial load
duke
parents:
diff changeset
9540 <functionlink id="AddCapabilities">add the capability</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9541 "Optional Features" describe capabilities which,
a61af66fc99e Initial load
duke
parents:
diff changeset
9542 if added, extend the feature set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9543 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9544 The potentially available capabilities of each <jvmti/> implementation are different.
a61af66fc99e Initial load
duke
parents:
diff changeset
9545 Depending on the implementation, a capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
9546 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9547 <li>may never be added</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9548 <li>may be added in either the <code>OnLoad</code> or live phase in any environment</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9549 <li>may be added only during the <code>OnLoad</code> phase</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9550 <li>may be possessed by only one environment at a time</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9551 <li>may be possessed by only one environment at a time,
a61af66fc99e Initial load
duke
parents:
diff changeset
9552 and only during the <code>OnLoad</code> phase</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9553 <li>and so on ...</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9554 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9555 Frequently, the addition of a capability may incur a cost in execution speed, start up
a61af66fc99e Initial load
duke
parents:
diff changeset
9556 time, and/or memory footprint. Note that the overhead of using a capability
a61af66fc99e Initial load
duke
parents:
diff changeset
9557 is completely different than the overhead of possessing a capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
9558 Take single stepping as an example. When single stepping is on (that
a61af66fc99e Initial load
duke
parents:
diff changeset
9559 is, when the event is enabled and thus actively sending events)
a61af66fc99e Initial load
duke
parents:
diff changeset
9560 the overhead of sending and processing an event
a61af66fc99e Initial load
duke
parents:
diff changeset
9561 on each instruction is huge in any implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
9562 However, the overhead of possessing the capability may be small or large,
a61af66fc99e Initial load
duke
parents:
diff changeset
9563 depending on the implementation. Also, when and if a capability is potentially
a61af66fc99e Initial load
duke
parents:
diff changeset
9564 available depends on the implementation. Some examples:
a61af66fc99e Initial load
duke
parents:
diff changeset
9565 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9566 <li>One VM might perform all execution by compiling bytecodes into
a61af66fc99e Initial load
duke
parents:
diff changeset
9567 native code and be unable to generate single step instructions.
a61af66fc99e Initial load
duke
parents:
diff changeset
9568 In this implementation the capability can not be added.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9569 <li>Another VM may be able to switch execution to a single stepping
a61af66fc99e Initial load
duke
parents:
diff changeset
9570 interpreter at any time. In this implementation, having the capability has no
a61af66fc99e Initial load
duke
parents:
diff changeset
9571 overhead and could be added at any time.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9572 <li>Yet another VM might be able to choose a bytecode compiling or single stepping capable interpreted
a61af66fc99e Initial load
duke
parents:
diff changeset
9573 execution engine at start up, but be unable to switch between them.
a61af66fc99e Initial load
duke
parents:
diff changeset
9574 In this implementation the capability would need to be added
a61af66fc99e Initial load
duke
parents:
diff changeset
9575 during the <code>OnLoad</code> phase (before bytecode
a61af66fc99e Initial load
duke
parents:
diff changeset
9576 execution begins) and would have a large impact on execution speed
a61af66fc99e Initial load
duke
parents:
diff changeset
9577 even if single stepping was never used.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9578 <li>Still another VM might be able to add an "is single stepping on" check
a61af66fc99e Initial load
duke
parents:
diff changeset
9579 into compiled bytecodes or a generated interpreter. Again in this implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9580 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
9581 and branch on each instruction) would be considerably less.</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
9582 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
9583 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9584 Each <jvmti/> <internallink id="environments">environment</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9585 has its own set of capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9586 Initially, that set is empty.
a61af66fc99e Initial load
duke
parents:
diff changeset
9587 Any desired capability must be added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9588 If possible, capabilities should be added during the <code>OnLoad</code> phase. For most
a61af66fc99e Initial load
duke
parents:
diff changeset
9589 virtual machines certain capabilities require special set up for
a61af66fc99e Initial load
duke
parents:
diff changeset
9590 the virtual machine and this set up must happen
a61af66fc99e Initial load
duke
parents:
diff changeset
9591 during the <code>OnLoad</code> phase, before the virtual machine begins execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
9592 Once a capability is added, it can
a61af66fc99e Initial load
duke
parents:
diff changeset
9593 only be removed if explicitly relinquished by the environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
9594 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9595 The agent can,
a61af66fc99e Initial load
duke
parents:
diff changeset
9596 <functionlink id="GetPotentialCapabilities">determine what
a61af66fc99e Initial load
duke
parents:
diff changeset
9597 capabilities this VM can potentially provide</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9598 <functionlink id="AddCapabilities">add the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9599 to be used</functionlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
9600 <functionlink id="RelinquishCapabilities">release capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9601 which are no longer needed</functionlink>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
9602 <functionlink id="GetCapabilities">examine the currently available
a61af66fc99e Initial load
duke
parents:
diff changeset
9603 capabilities</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9604 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9605
a61af66fc99e Initial load
duke
parents:
diff changeset
9606 <intro id="capabilityExamples" label="Capability Examples">
a61af66fc99e Initial load
duke
parents:
diff changeset
9607 For example, a freshly started agent (in the <code>OnLoad</code> function)
a61af66fc99e Initial load
duke
parents:
diff changeset
9608 wants to enable all possible capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9609 Note that, in general, this is not advisable as the agent may suffer
a61af66fc99e Initial load
duke
parents:
diff changeset
9610 a performance penalty for functionality it is not using.
a61af66fc99e Initial load
duke
parents:
diff changeset
9611 The code might look like this in C:
a61af66fc99e Initial load
duke
parents:
diff changeset
9612 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9613 jvmtiCapabilities capa;
a61af66fc99e Initial load
duke
parents:
diff changeset
9614 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
9615
a61af66fc99e Initial load
duke
parents:
diff changeset
9616 err = (*jvmti)-&gt;GetPotentialCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9617 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
9618 err = (*jvmti)-&gt;AddCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9619 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9620 For example, if an agent wants to check if it can get
a61af66fc99e Initial load
duke
parents:
diff changeset
9621 the bytecodes of a method (that is, it wants to check
a61af66fc99e Initial load
duke
parents:
diff changeset
9622 if it previously added this capability and has not
a61af66fc99e Initial load
duke
parents:
diff changeset
9623 relinquished it), the code might
a61af66fc99e Initial load
duke
parents:
diff changeset
9624 look like this in C:
a61af66fc99e Initial load
duke
parents:
diff changeset
9625 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9626 jvmtiCapabilities capa;
a61af66fc99e Initial load
duke
parents:
diff changeset
9627 jvmtiError err;
a61af66fc99e Initial load
duke
parents:
diff changeset
9628
a61af66fc99e Initial load
duke
parents:
diff changeset
9629 err = (*jvmti)-&gt;GetCapabilities(jvmti, &amp;capa);
a61af66fc99e Initial load
duke
parents:
diff changeset
9630 if (err == JVMTI_ERROR_NONE) {
a61af66fc99e Initial load
duke
parents:
diff changeset
9631 if (capa.can_get_bytecodes) { ... } }
a61af66fc99e Initial load
duke
parents:
diff changeset
9632 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
9633 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
9634
a61af66fc99e Initial load
duke
parents:
diff changeset
9635 <capabilitiestypedef id="jvmtiCapabilities" label="The Capabilities Structure">
a61af66fc99e Initial load
duke
parents:
diff changeset
9636 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9637 The functions in this category use this capabilities structure
a61af66fc99e Initial load
duke
parents:
diff changeset
9638 which contains boolean flags corresponding to each capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
9639 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9640 <capabilityfield id="can_tag_objects">
a61af66fc99e Initial load
duke
parents:
diff changeset
9641 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9642 Can set and get tags, as described in the
a61af66fc99e Initial load
duke
parents:
diff changeset
9643 <internallink id="Heap">Heap category</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9644 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9645 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9646 <capabilityfield id="can_generate_field_modification_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9647 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9648 Can set watchpoints on field modification -
a61af66fc99e Initial load
duke
parents:
diff changeset
9649 <functionlink id="SetFieldModificationWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9650 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9651 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9652 <capabilityfield id="can_generate_field_access_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9653 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9654 Can set watchpoints on field access -
a61af66fc99e Initial load
duke
parents:
diff changeset
9655 <functionlink id="SetFieldAccessWatch"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9656 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9657 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9658 <capabilityfield id="can_get_bytecodes">
a61af66fc99e Initial load
duke
parents:
diff changeset
9659 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9660 Can get bytecodes of a method <functionlink id="GetBytecodes"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9661 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9662 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9663 <capabilityfield id="can_get_synthetic_attribute">
a61af66fc99e Initial load
duke
parents:
diff changeset
9664 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9665 Can test if a field or method is synthetic -
a61af66fc99e Initial load
duke
parents:
diff changeset
9666 <functionlink id="IsFieldSynthetic"></functionlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9667 <functionlink id="IsMethodSynthetic"></functionlink>
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_get_owned_monitor_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9671 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9672 Can get information about ownership of monitors -
a61af66fc99e Initial load
duke
parents:
diff changeset
9673 <functionlink id="GetOwnedMonitorInfo"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9674 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9675 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9676 <capabilityfield id="can_get_current_contended_monitor">
a61af66fc99e Initial load
duke
parents:
diff changeset
9677 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9678 Can <functionlink id="GetCurrentContendedMonitor"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9679 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9680 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9681 <capabilityfield id="can_get_monitor_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
9682 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9683 Can <functionlink id="GetObjectMonitorUsage"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9684 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9685 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9686 <capabilityfield id="can_pop_frame">
a61af66fc99e Initial load
duke
parents:
diff changeset
9687 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9688 Can pop frames off the stack - <functionlink id="PopFrame"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9689 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9690 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9691 <capabilityfield id="can_redefine_classes">
a61af66fc99e Initial load
duke
parents:
diff changeset
9692 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9693 Can redefine classes with <functionlink id="RedefineClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9694 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9695 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9696 <capabilityfield id="can_signal_thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
9697 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9698 Can send stop or interrupt to threads
a61af66fc99e Initial load
duke
parents:
diff changeset
9699 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9700 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9701 <capabilityfield id="can_get_source_file_name">
a61af66fc99e Initial load
duke
parents:
diff changeset
9702 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9703 Can get the source file name of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
9704 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9705 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9706 <capabilityfield id="can_get_line_numbers">
a61af66fc99e Initial load
duke
parents:
diff changeset
9707 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9708 Can get the line number table of a method
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_get_source_debug_extension">
a61af66fc99e Initial load
duke
parents:
diff changeset
9712 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9713 Can get the source debug extension of a class
a61af66fc99e Initial load
duke
parents:
diff changeset
9714 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9715 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9716 <capabilityfield id="can_access_local_variables">
a61af66fc99e Initial load
duke
parents:
diff changeset
9717 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9718 Can set and get local variables
a61af66fc99e Initial load
duke
parents:
diff changeset
9719 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9720 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9721 <capabilityfield id="can_maintain_original_method_order">
a61af66fc99e Initial load
duke
parents:
diff changeset
9722 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9723 Can return methods in the order they occur in the class file
a61af66fc99e Initial load
duke
parents:
diff changeset
9724 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9725 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9726 <capabilityfield id="can_generate_single_step_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9727 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9728 Can get <eventlink id="SingleStep">single step</eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9729 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9730 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9731 <capabilityfield id="can_generate_exception_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9732 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9733 Can get <eventlink id="Exception">exception thrown</eventlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9734 <eventlink id="ExceptionCatch">exception catch</eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9735 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9736 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9737 <capabilityfield id="can_generate_frame_pop_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9738 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9739 Can <functionlink id="NotifyFramePop">set</functionlink> and thus get
a61af66fc99e Initial load
duke
parents:
diff changeset
9740 <eventlink id="FramePop"></eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9741 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9742 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9743 <capabilityfield id="can_generate_breakpoint_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
9744 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9745 Can <functionlink id="SetBreakpoint">set</functionlink> and thus get
a61af66fc99e Initial load
duke
parents:
diff changeset
9746 <eventlink id="Breakpoint"></eventlink> events
a61af66fc99e Initial load
duke
parents:
diff changeset
9747 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9748 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9749 <capabilityfield id="can_suspend">
a61af66fc99e Initial load
duke
parents:
diff changeset
9750 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9751 Can suspend and resume threads
a61af66fc99e Initial load
duke
parents:
diff changeset
9752 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9753 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9754 <capabilityfield id="can_redefine_any_class">
a61af66fc99e Initial load
duke
parents:
diff changeset
9755 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9756 Can modify (retransform or redefine) any non-primitive non-array class.
a61af66fc99e Initial load
duke
parents:
diff changeset
9757 See <functionlink id="IsModifiableClass"/>.
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_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
9761 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9762 Can <functionlink id="GetCurrentThreadCpuTime">get</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9763 current thread CPU time
a61af66fc99e Initial load
duke
parents:
diff changeset
9764 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9765 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9766 <capabilityfield id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
9767 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9768 Can <functionlink id="GetThreadCpuTime">get</functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9769 thread CPU time
a61af66fc99e Initial load
duke
parents:
diff changeset
9770 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9771 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9772 <capabilityfield id="can_generate_method_entry_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9773 disp1="can_generate" disp2="_method_entry_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9774 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9775 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9776 Can generate method entry events on entering a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9777 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9778 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9779 <capabilityfield id="can_generate_method_exit_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9780 disp1="can_generate" disp2="_method_exit_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9781 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9782 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9783 Can generate method exit events on leaving a method
a61af66fc99e Initial load
duke
parents:
diff changeset
9784 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9785 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9786 <capabilityfield id="can_generate_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9787 disp1="can_generate" disp2="_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9788 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9789 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9790 Can generate ClassFileLoadHook events for every loaded class.
a61af66fc99e Initial load
duke
parents:
diff changeset
9791 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9792 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9793 <capabilityfield id="can_generate_compiled_method_load_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9794 disp1="can_generate" disp2="_compiled_method_load_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9795 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9796 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9797 Can generate events when a method is compiled or unloaded
a61af66fc99e Initial load
duke
parents:
diff changeset
9798 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9799 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9800 <capabilityfield id="can_generate_monitor_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9801 disp1="can_generate" disp2="_monitor_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9802 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9803 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9804 Can generate events on monitor activity
a61af66fc99e Initial load
duke
parents:
diff changeset
9805 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9806 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9807 <capabilityfield id="can_generate_vm_object_alloc_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9808 disp1="can_generate" disp2="_vm_object_alloc_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9809 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9810 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9811 Can generate events on VM allocation of an object
a61af66fc99e Initial load
duke
parents:
diff changeset
9812 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9813 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9814 <capabilityfield id="can_generate_native_method_bind_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9815 disp1="can_generate" disp2="_native_method_bind_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9816 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9817 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9818 Can generate events when a native method is bound to its
a61af66fc99e Initial load
duke
parents:
diff changeset
9819 implementation
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_generate_garbage_collection_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9823 disp1="can_generate" disp2="_garbage_collection_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9824 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9825 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9826 Can generate events when garbage collection begins or ends
a61af66fc99e Initial load
duke
parents:
diff changeset
9827 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9828 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9829 <capabilityfield id="can_generate_object_free_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9830 disp1="can_generate" disp2="_object_free_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
9831 >
a61af66fc99e Initial load
duke
parents:
diff changeset
9832 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9833 Can generate events when the garbage collector frees an object
a61af66fc99e Initial load
duke
parents:
diff changeset
9834 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9835 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9836 <capabilityfield id="can_force_early_return" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9837 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9838 Can return early from a method, as described in the
a61af66fc99e Initial load
duke
parents:
diff changeset
9839 <internallink id="ForceEarlyReturn">Force Early Return category</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9840 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9841 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9842 <capabilityfield id="can_get_owned_monitor_stack_depth_info" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9843 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9844 Can get information about owned monitors with stack depth -
a61af66fc99e Initial load
duke
parents:
diff changeset
9845 <functionlink id="GetOwnedMonitorStackDepthInfo"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9846 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9847 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9848 <capabilityfield id="can_get_constant_pool" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9849 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9850 Can get the constant pool of a class -
a61af66fc99e Initial load
duke
parents:
diff changeset
9851 <functionlink id="GetConstantPool"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
9852 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9853 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9854 <capabilityfield id="can_set_native_method_prefix" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9855 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9856 Can set prefix to be applied when native method cannot be resolved -
a61af66fc99e Initial load
duke
parents:
diff changeset
9857 <functionlink id="SetNativeMethodPrefix"/> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9858 <functionlink id="SetNativeMethodPrefixes"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9859 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9860 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9861 <capabilityfield id="can_retransform_classes" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9862 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9863 Can retransform classes with <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9864 In addition to the restrictions imposed by the specific
a61af66fc99e Initial load
duke
parents:
diff changeset
9865 implementation on this capability (see the
a61af66fc99e Initial load
duke
parents:
diff changeset
9866 <internallink id="capability">Capability</internallink> section),
a61af66fc99e Initial load
duke
parents:
diff changeset
9867 this capability must be set before the
a61af66fc99e Initial load
duke
parents:
diff changeset
9868 <eventlink id="ClassFileLoadHook"/> event is enabled for the
a61af66fc99e Initial load
duke
parents:
diff changeset
9869 first time in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
9870 An environment that possesses this capability at the time that
a61af66fc99e Initial load
duke
parents:
diff changeset
9871 <code>ClassFileLoadHook</code> is enabled for the first time is
a61af66fc99e Initial load
duke
parents:
diff changeset
9872 said to be <i>retransformation capable</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9873 An environment that does not possess this capability at the time that
a61af66fc99e Initial load
duke
parents:
diff changeset
9874 <code>ClassFileLoadHook</code> is enabled for the first time is
a61af66fc99e Initial load
duke
parents:
diff changeset
9875 said to be <i>retransformation incapable</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9876 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9877 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9878 <capabilityfield id="can_retransform_any_class" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9879 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9880 <functionlink id="RetransformClasses"/> can be called on any class
a61af66fc99e Initial load
duke
parents:
diff changeset
9881 (<fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9882 must also be set)
a61af66fc99e Initial load
duke
parents:
diff changeset
9883 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9884 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9885 <capabilityfield id="can_generate_resource_exhaustion_heap_events" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9886 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9887 Can generate events when the VM is unable to allocate memory from
a61af66fc99e Initial load
duke
parents:
diff changeset
9888 the <tm>Java</tm> platform heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
9889 See <eventlink id="ResourceExhausted"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9890 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9891 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9892 <capabilityfield id="can_generate_resource_exhaustion_threads_events" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
9893 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9894 Can generate events when the VM is unable to create a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
9895 See <eventlink id="ResourceExhausted"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9896 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9897 </capabilityfield>
a61af66fc99e Initial load
duke
parents:
diff changeset
9898 </capabilitiestypedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
9899
a61af66fc99e Initial load
duke
parents:
diff changeset
9900 <function id="GetPotentialCapabilities" jkernel="yes" phase="onload" num="140">
a61af66fc99e Initial load
duke
parents:
diff changeset
9901 <synopsis>Get Potential Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9902 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9903 Returns via <paramlink id="capabilities_ptr"></paramlink> the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9904 features that can potentially be possessed by this environment
a61af66fc99e Initial load
duke
parents:
diff changeset
9905 at this time.
a61af66fc99e Initial load
duke
parents:
diff changeset
9906 The returned capabilities differ from the complete set of capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9907 implemented by the VM in two cases: another environment possesses
a61af66fc99e Initial load
duke
parents:
diff changeset
9908 capabilities that can only be possessed by one environment, or the
a61af66fc99e Initial load
duke
parents:
diff changeset
9909 current <functionlink id="GetPhase">phase</functionlink> is live,
a61af66fc99e Initial load
duke
parents:
diff changeset
9910 and certain capabilities can only be added during the <code>OnLoad</code> phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9911 The <functionlink id="AddCapabilities"></functionlink> function
a61af66fc99e Initial load
duke
parents:
diff changeset
9912 may be used to set any or all or these capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9913 Currently possessed capabilities are included.
a61af66fc99e Initial load
duke
parents:
diff changeset
9914 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9915 Typically this function is used in the <code>OnLoad</code> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
9916 Some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
9917 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9918 In this case, the set of potentially available capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9919 will likely differ from the <code>OnLoad</code> phase set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9920 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9921 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
9922 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9923 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9924 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9925 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9926 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9927 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9928 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9929 <outptr><struct>jvmtiCapabilities</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9930 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9931 On return, points to the <jvmti/> capabilities that may be added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9932 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9933 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9934 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9935 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9936 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
9937 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
9938
a61af66fc99e Initial load
duke
parents:
diff changeset
9939 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
9940 <function id="EstimateCostOfCapabilities" phase="onload" num="141">
a61af66fc99e Initial load
duke
parents:
diff changeset
9941 <synopsis>Estimate Cost Of Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
9942 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9943 <issue>There is strong opposition to this function. The concern is
a61af66fc99e Initial load
duke
parents:
diff changeset
9944 that it would be difficult or impossible to provide meaningful
a61af66fc99e Initial load
duke
parents:
diff changeset
9945 numbers, as the amount of impact is conditional on many factors
a61af66fc99e Initial load
duke
parents:
diff changeset
9946 that a single number could not represent. There is doubt that
a61af66fc99e Initial load
duke
parents:
diff changeset
9947 conditional implementations would be used or are even a good idea.
a61af66fc99e Initial load
duke
parents:
diff changeset
9948 The thought is that release documentation for the implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
9949 would be the best means of exposing this information.
a61af66fc99e Initial load
duke
parents:
diff changeset
9950 Unless new arguments are presented, I intend to remove this
a61af66fc99e Initial load
duke
parents:
diff changeset
9951 function in the next revision.
a61af66fc99e Initial load
duke
parents:
diff changeset
9952 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
9953 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9954 Return via the <paramlink id="time_impact_ptr"></paramlink> and
a61af66fc99e Initial load
duke
parents:
diff changeset
9955 <paramlink id="space_impact_ptr"></paramlink> an estimate of the impact
a61af66fc99e Initial load
duke
parents:
diff changeset
9956 of adding the capabilities pointed to by
a61af66fc99e Initial load
duke
parents:
diff changeset
9957 <paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9958 The returned estimates are in percentage of additional overhead, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
9959 a time impact of 100 mean the application might run
a61af66fc99e Initial load
duke
parents:
diff changeset
9960 at half the speed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9961 The estimates are very rough approximations and are not guaranteed.
a61af66fc99e Initial load
duke
parents:
diff changeset
9962 Note also, that the estimates are of the impact of having the
a61af66fc99e Initial load
duke
parents:
diff changeset
9963 capability available--when and if it is used the impact may be
a61af66fc99e Initial load
duke
parents:
diff changeset
9964 much greater.
a61af66fc99e Initial load
duke
parents:
diff changeset
9965 Estimates can be for a single capability or for a set of
a61af66fc99e Initial load
duke
parents:
diff changeset
9966 capabilities. Note that the costs are not necessarily additive,
a61af66fc99e Initial load
duke
parents:
diff changeset
9967 adding support for one capability might make another available
a61af66fc99e Initial load
duke
parents:
diff changeset
9968 for free or conversely having two capabilities at once may
a61af66fc99e Initial load
duke
parents:
diff changeset
9969 have multiplicative impact.
a61af66fc99e Initial load
duke
parents:
diff changeset
9970 Estimates are relative to the current set of capabilities -
a61af66fc99e Initial load
duke
parents:
diff changeset
9971 that is, how much more impact given the currently possessed capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
9972 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9973 Typically this function is used in the OnLoad function,
a61af66fc99e Initial load
duke
parents:
diff changeset
9974 some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
9975 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
9976 In this case, the set of potentially available capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
9977 will likely differ from the OnLoad phase set.
a61af66fc99e Initial load
duke
parents:
diff changeset
9978 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
9979 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
9980 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
9981 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9982 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
9983 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9984 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
9985 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
9986 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9987 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9988 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9989 points to the <jvmti/> capabilities to evaluate.
a61af66fc99e Initial load
duke
parents:
diff changeset
9990 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9991 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9992 <param id="time_impact_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
9993 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
9994 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9995 On return, points to the estimated percentage increase in
a61af66fc99e Initial load
duke
parents:
diff changeset
9996 run time if this capability was added.
a61af66fc99e Initial load
duke
parents:
diff changeset
9997 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
9998 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
9999 <param id="space_impact_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10000 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10001 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10002 On return, points to the estimated percentage increase in
a61af66fc99e Initial load
duke
parents:
diff changeset
10003 memory space used if this capability was added.
a61af66fc99e Initial load
duke
parents:
diff changeset
10004 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10005 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10006 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10007 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10008 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10009 The desired capabilities are not even potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10010 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10011 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10012 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10013 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
10014
a61af66fc99e Initial load
duke
parents:
diff changeset
10015 <function id="AddCapabilities" jkernel="yes" phase="onload" num="142">
a61af66fc99e Initial load
duke
parents:
diff changeset
10016 <synopsis>Add Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10017 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10018 Set new capabilities by adding the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10019 whose values are set to one (<code>1</code>) in
a61af66fc99e Initial load
duke
parents:
diff changeset
10020 <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10021 All previous capabilities are retained.
a61af66fc99e Initial load
duke
parents:
diff changeset
10022 Typically this function is used in the <code>OnLoad</code> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10023 Some virtual machines may allow a limited set of capabilities to be
a61af66fc99e Initial load
duke
parents:
diff changeset
10024 added in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10025 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10026 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10027 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10028 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10029 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10030 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10031 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10032 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10033 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10034 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10036 Points to the <jvmti/> capabilities to add.
a61af66fc99e Initial load
duke
parents:
diff changeset
10037 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10038 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10039 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10040 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10041 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10042 The desired capabilities are not even potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10043 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10044 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10045 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10046
a61af66fc99e Initial load
duke
parents:
diff changeset
10047
a61af66fc99e Initial load
duke
parents:
diff changeset
10048 <function id="RelinquishCapabilities" phase="onload" num="143">
a61af66fc99e Initial load
duke
parents:
diff changeset
10049 <synopsis>Relinquish Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10050 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10051 Relinquish the capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10052 whose values are set to one (<code>1</code>) in
a61af66fc99e Initial load
duke
parents:
diff changeset
10053 <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10054 Some implementations may allow only one environment to have a capability
a61af66fc99e Initial load
duke
parents:
diff changeset
10055 (see the <internallink id="capability">capability introduction</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10056 This function releases capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10057 so that they may be used by other agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
10058 All other capabilities are retained.
a61af66fc99e Initial load
duke
parents:
diff changeset
10059 The capability will no longer be present in <functionlink id="GetCapabilities"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10060 Attempting to relinquish a capability that the agent does not possess is not an error.
a61af66fc99e Initial load
duke
parents:
diff changeset
10061 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10062 It is possible for the agent to be actively using capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10063 which are being relinquished. For example, a thread is currently
a61af66fc99e Initial load
duke
parents:
diff changeset
10064 suspended and can_suspend is being relinquished or an event is currently
a61af66fc99e Initial load
duke
parents:
diff changeset
10065 enabled and can_generate_whatever is being relinquished.
a61af66fc99e Initial load
duke
parents:
diff changeset
10066 There are three possible ways we could spec this:
a61af66fc99e Initial load
duke
parents:
diff changeset
10067 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10068 <li>relinquish automatically releases them</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10069 <li>relinquish checks and returns some error code if held</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10070 <li>it is the agent's responsibility and it is not checked</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10071 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10072 One of these should be chosen.
a61af66fc99e Initial load
duke
parents:
diff changeset
10073 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10074 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10075 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10076 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10077 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10078 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10079 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10080 <inptr><struct>jvmtiCapabilities</struct></inptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10081 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10082 Points to the <jvmti/> capabilities to relinquish.
a61af66fc99e Initial load
duke
parents:
diff changeset
10083 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10084 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10085 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10086 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10087 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10088 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10089
a61af66fc99e Initial load
duke
parents:
diff changeset
10090
a61af66fc99e Initial load
duke
parents:
diff changeset
10091
a61af66fc99e Initial load
duke
parents:
diff changeset
10092 <function id="GetCapabilities" jkernel="yes" phase="any" num="89">
a61af66fc99e Initial load
duke
parents:
diff changeset
10093 <synopsis>Get Capabilities</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10094 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10095 Returns via <paramlink id="capabilities_ptr"></paramlink> the optional <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10096 features which this environment currently possesses.
a61af66fc99e Initial load
duke
parents:
diff changeset
10097 Each possessed capability is indicated by a one (<code>1</code>) in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10098 corresponding field of the <internallink id="jvmtiCapabilities">capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
10099 structure</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10100 An environment does not possess a capability unless it has been successfully added with
a61af66fc99e Initial load
duke
parents:
diff changeset
10101 <functionlink id="AddCapabilities"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10102 An environment only loses possession of a capability if it has been relinquished with
a61af66fc99e Initial load
duke
parents:
diff changeset
10103 <functionlink id="RelinquishCapabilities"/>. Thus, this function returns the net result
a61af66fc99e Initial load
duke
parents:
diff changeset
10104 of the <code>AddCapabilities</code> and <code>RelinquishCapabilities</code> calls which
a61af66fc99e Initial load
duke
parents:
diff changeset
10105 have been made.
a61af66fc99e Initial load
duke
parents:
diff changeset
10106 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10107 See the
a61af66fc99e Initial load
duke
parents:
diff changeset
10108 <internallink id="capabilityExamples">Capability Examples</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10109 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10110 <origin>jvmdiClone</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10111 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10112 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10113 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10114 <param id="capabilities_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10115 <outptr><struct>jvmtiCapabilities</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10116 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10117 On return, points to the <jvmti/> capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
10118 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10119 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10120 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10121 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10122 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10123 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10124
a61af66fc99e Initial load
duke
parents:
diff changeset
10125 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10126
a61af66fc99e Initial load
duke
parents:
diff changeset
10127
a61af66fc99e Initial load
duke
parents:
diff changeset
10128 <category id="timers" label="Timers">
a61af66fc99e Initial load
duke
parents:
diff changeset
10129
a61af66fc99e Initial load
duke
parents:
diff changeset
10130 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10131 These functions provide timing information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10132 The resolution at which the time is updated is not specified.
a61af66fc99e Initial load
duke
parents:
diff changeset
10133 They provides nanosecond precision, but not necessarily nanosecond accuracy.
a61af66fc99e Initial load
duke
parents:
diff changeset
10134 Details about the timers, such as their maximum values, can be accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
10135 the timer information functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
10136 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10137
a61af66fc99e Initial load
duke
parents:
diff changeset
10138 <typedef id="jvmtiTimerInfo" label="Timer Info">
a61af66fc99e Initial load
duke
parents:
diff changeset
10139 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10140 The information function for each timer returns this data structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
10141 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10142 <field id="max_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
10143 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10144 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10145 The maximum value the timer can reach.
a61af66fc99e Initial load
duke
parents:
diff changeset
10146 After this value is reached the timer wraps back to zero.
a61af66fc99e Initial load
duke
parents:
diff changeset
10147 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10148 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10149 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10150 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10151 <field id="may_skip_forward">
a61af66fc99e Initial load
duke
parents:
diff changeset
10152 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10153 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10154 If true, the timer can be externally adjusted and as a result skip forward.
a61af66fc99e Initial load
duke
parents:
diff changeset
10155 If false, the timer value will never increase faster than real time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10156 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10157 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10158 <field id="may_skip_backward">
a61af66fc99e Initial load
duke
parents:
diff changeset
10159 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10160 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10161 If true, the timer can be externally adjusted and as a result skip backward.
a61af66fc99e Initial load
duke
parents:
diff changeset
10162 If false, the timer value will be monotonically increasing.
a61af66fc99e Initial load
duke
parents:
diff changeset
10163 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10164 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10165 <field id="kind">
a61af66fc99e Initial load
duke
parents:
diff changeset
10166 <enum>jvmtiTimerKind</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
10167 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10168 The kind of timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10169 On a platform that does not distinguish between user and system time, <datalink
a61af66fc99e Initial load
duke
parents:
diff changeset
10170 id="JVMTI_TIMER_TOTAL_CPU"><code>JVMTI_TIMER_TOTAL_CPU</code></datalink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10171 is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10172 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10173 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10174 <field id="reserved1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10175 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10176 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10177 Reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
10178 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10179 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10180 <field id="reserved2">
a61af66fc99e Initial load
duke
parents:
diff changeset
10181 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10182 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10183 Reserved for future use.
a61af66fc99e Initial load
duke
parents:
diff changeset
10184 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10185 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
10186 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
10187
a61af66fc99e Initial load
duke
parents:
diff changeset
10188 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10189 Where the timer kind is --
a61af66fc99e Initial load
duke
parents:
diff changeset
10190
a61af66fc99e Initial load
duke
parents:
diff changeset
10191 <constants id="jvmtiTimerKind" label="Timer Kinds" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10192 <constant id="JVMTI_TIMER_USER_CPU" num="30">
a61af66fc99e Initial load
duke
parents:
diff changeset
10193 CPU time that a thread is in user mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
10194 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10195 <constant id="JVMTI_TIMER_TOTAL_CPU" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
10196 CPU time that a thread is in user or system mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
10197 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10198 <constant id="JVMTI_TIMER_ELAPSED" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
10199 Elapsed time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10200 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10201 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10202 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10203
a61af66fc99e Initial load
duke
parents:
diff changeset
10204 <function id="GetCurrentThreadCpuTimerInfo" callbacksafe="safe" impl="innative notrace" phase="start" num="134">
a61af66fc99e Initial load
duke
parents:
diff changeset
10205 <synopsis>Get Current Thread CPU Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10206 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10207 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10208 <functionlink id="GetCurrentThreadCpuTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10209 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10210 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10211 This information is specific to the platform and the implementation of
a61af66fc99e Initial load
duke
parents:
diff changeset
10212 <functionlink id="GetCurrentThreadCpuTime"/> and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10213 does not vary by thread nor does it vary
a61af66fc99e Initial load
duke
parents:
diff changeset
10214 during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10215 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10216 Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10217 and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10218 returned by <code>GetCurrentThreadCpuTimerInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10219 and <functionlink id="GetThreadCpuTimerInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10220 may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10221 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10222 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10223 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10224 <required id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10225 Can get current thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10226 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10227 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10228 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10229 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10230 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10231 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10232 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10233 returned by <functionlink id="GetCurrentThreadCpuTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10234 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10235 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10236 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10237 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10238 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10239 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10240
a61af66fc99e Initial load
duke
parents:
diff changeset
10241 <function id="GetCurrentThreadCpuTime" callbacksafe="safe" impl="innative notrace" phase="start" num="135">
a61af66fc99e Initial load
duke
parents:
diff changeset
10242 <synopsis>Get Current Thread CPU Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10243 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10244 Return the CPU time utilized by the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
10245 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10246 Note that the <functionlink id="GetThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10247 function provides CPU time for any thread, including
a61af66fc99e Initial load
duke
parents:
diff changeset
10248 the current thread. <code>GetCurrentThreadCpuTime</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10249 exists to support platforms which cannot
a61af66fc99e Initial load
duke
parents:
diff changeset
10250 supply CPU time for threads other than the current
a61af66fc99e Initial load
duke
parents:
diff changeset
10251 thread or which have more accurate information for
a61af66fc99e Initial load
duke
parents:
diff changeset
10252 the current thread (see
a61af66fc99e Initial load
duke
parents:
diff changeset
10253 <functionlink id="GetCurrentThreadCpuTimerInfo"/> vs
a61af66fc99e Initial load
duke
parents:
diff changeset
10254 <functionlink id="GetThreadCpuTimerInfo"/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10255 On many platforms this call will be equivalent to:
a61af66fc99e Initial load
duke
parents:
diff changeset
10256 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
10257 GetThreadCpuTime(env, NULL, nanos_ptr)
a61af66fc99e Initial load
duke
parents:
diff changeset
10258 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
10259 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10260 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10261 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10262 <required id="can_get_current_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10263 Can get current thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10264 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10265 If this capability is enabled after threads have started,
a61af66fc99e Initial load
duke
parents:
diff changeset
10266 the implementation may choose any time up
a61af66fc99e Initial load
duke
parents:
diff changeset
10267 to and including the time that the capability is enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
10268 as the point where CPU time collection starts.
a61af66fc99e Initial load
duke
parents:
diff changeset
10269 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10270 This capability must be potentially available on any
a61af66fc99e Initial load
duke
parents:
diff changeset
10271 platform where
a61af66fc99e Initial load
duke
parents:
diff changeset
10272 <internallink id="jvmtiCapabilities.can_get_thread_cpu_time"><code>can_get_thread_cpu_time</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10273 is potentially available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10274 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10275 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10276 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10277 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10278 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10279 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10280 On return, points to the CPU time used by this thread
a61af66fc99e Initial load
duke
parents:
diff changeset
10281 in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10282 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10283 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10284 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10285 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10286 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10287 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10288 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10289 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10290
a61af66fc99e Initial load
duke
parents:
diff changeset
10291 <function id="GetThreadCpuTimerInfo" num="136">
a61af66fc99e Initial load
duke
parents:
diff changeset
10292 <synopsis>Get Thread CPU Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10293 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10294 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10295 <functionlink id="GetThreadCpuTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10296 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10297 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10298 This information is specific to the platform and the implementation of
a61af66fc99e Initial load
duke
parents:
diff changeset
10299 <functionlink id="GetThreadCpuTime"/> and thus
a61af66fc99e Initial load
duke
parents:
diff changeset
10300 does not vary by thread nor does it vary
a61af66fc99e Initial load
duke
parents:
diff changeset
10301 during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10302 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10303 Note that the implementations of <functionlink id="GetCurrentThreadCpuTime"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10304 and <functionlink id="GetThreadCpuTime"/> may differ, and thus the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10305 returned by <functionlink id="GetCurrentThreadCpuTimerInfo"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10306 and <code>GetThreadCpuTimerInfo</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10307 may differ -- see <functionlink id="GetCurrentThreadCpuTime"/> for more information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10308 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10309 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10310 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10311 <required id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10312 Can get thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10313 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10314 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10315 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10316 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10317 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10318 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10319 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10320 returned by <functionlink id="GetThreadCpuTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10321 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10322 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10323 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10324 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10325 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10326 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10327
a61af66fc99e Initial load
duke
parents:
diff changeset
10328 <function id="GetThreadCpuTime" num="137">
a61af66fc99e Initial load
duke
parents:
diff changeset
10329 <synopsis>Get Thread CPU Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10330 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10331 Return the CPU time utilized by the specified thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
10332 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10333 Get information about this timer with
a61af66fc99e Initial load
duke
parents:
diff changeset
10334 <functionlink id="GetThreadCpuTimerInfo"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10335 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10336 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10337 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10338 <required id="can_get_thread_cpu_time">
a61af66fc99e Initial load
duke
parents:
diff changeset
10339 Can get thread CPU time.
a61af66fc99e Initial load
duke
parents:
diff changeset
10340 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10341 If this capability is enabled after threads have started,
a61af66fc99e Initial load
duke
parents:
diff changeset
10342 the implementation may choose any time up
a61af66fc99e Initial load
duke
parents:
diff changeset
10343 to and including the time that the capability is enabled
a61af66fc99e Initial load
duke
parents:
diff changeset
10344 as the point where CPU time collection starts.
a61af66fc99e Initial load
duke
parents:
diff changeset
10345 </required>
a61af66fc99e Initial load
duke
parents:
diff changeset
10346 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10347 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10348 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
10349 <jthread null="current"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10350 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10351 The thread to query.
a61af66fc99e Initial load
duke
parents:
diff changeset
10352 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10353 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10354 <param id="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10355 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10356 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10357 On return, points to the CPU time used by the specified thread
a61af66fc99e Initial load
duke
parents:
diff changeset
10358 in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10359 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10360 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10361 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10362 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10363 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10364 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10365 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10366 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10367
a61af66fc99e Initial load
duke
parents:
diff changeset
10368 <function id="GetTimerInfo" phase="any" callbacksafe="safe" num="138">
a61af66fc99e Initial load
duke
parents:
diff changeset
10369 <synopsis>Get Timer Information</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10370 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10371 Get information about the
a61af66fc99e Initial load
duke
parents:
diff changeset
10372 <functionlink id="GetTime"/> timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10373 The fields of the <datalink id="jvmtiTimerInfo"/> structure
a61af66fc99e Initial load
duke
parents:
diff changeset
10374 are filled in with details about the timer.
a61af66fc99e Initial load
duke
parents:
diff changeset
10375 This information will not change during a particular invocation of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10376 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10377 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10378 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10379 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10380 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10381 <param id="info_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10382 <outptr><struct>jvmtiTimerInfo</struct></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10383 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10384 On return, filled with information describing the time
a61af66fc99e Initial load
duke
parents:
diff changeset
10385 returned by <functionlink id="GetTime"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10386 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10387 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10388 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10389 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10390 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10391 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10392
a61af66fc99e Initial load
duke
parents:
diff changeset
10393 <function id="GetTime" phase="any" callbacksafe="safe" num="139">
a61af66fc99e Initial load
duke
parents:
diff changeset
10394 <synopsis>Get Time</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10395 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10396 Return the current value of the system timer, in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10397 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10398 The value returned represents nanoseconds since some fixed but
a61af66fc99e Initial load
duke
parents:
diff changeset
10399 arbitrary time (perhaps in the future, so values may be
a61af66fc99e Initial load
duke
parents:
diff changeset
10400 negative). This function provides nanosecond precision, but not
a61af66fc99e Initial load
duke
parents:
diff changeset
10401 necessarily nanosecond accuracy. No guarantees are made about
a61af66fc99e Initial load
duke
parents:
diff changeset
10402 how frequently values change.
a61af66fc99e Initial load
duke
parents:
diff changeset
10403 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10404 Get information about this timer with
a61af66fc99e Initial load
duke
parents:
diff changeset
10405 <functionlink id="GetTimerInfo"/>.
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="nanos_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10412 <outptr><jlong/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10413 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10414 On return, points to the time in nanoseconds.
a61af66fc99e Initial load
duke
parents:
diff changeset
10415 This is an unsigned value. If tested or printed as a jlong (signed value)
a61af66fc99e Initial load
duke
parents:
diff changeset
10416 it may appear to be a negative number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10417 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10418 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10419 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10420 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10421 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10422 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10423
a61af66fc99e Initial load
duke
parents:
diff changeset
10424 <function id="GetAvailableProcessors" phase="any" num="144">
a61af66fc99e Initial load
duke
parents:
diff changeset
10425 <synopsis>Get Available Processors</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10426 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10427 Returns the number of processors available to the Java virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
10428 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10429 This value may change during a particular invocation of the virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
10430 Applications that are sensitive to the number of available processors should
a61af66fc99e Initial load
duke
parents:
diff changeset
10431 therefore occasionally poll this property.
a61af66fc99e Initial load
duke
parents:
diff changeset
10432 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10433 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10434 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10435 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10436 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10437 <param id="processor_count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10438 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10439 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10440 On return, points to the maximum number of processors available to the
a61af66fc99e Initial load
duke
parents:
diff changeset
10441 virtual machine; never smaller than one.
a61af66fc99e Initial load
duke
parents:
diff changeset
10442 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10443 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10444 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10445 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10446 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10447 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10448
a61af66fc99e Initial load
duke
parents:
diff changeset
10449 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10450
a61af66fc99e Initial load
duke
parents:
diff changeset
10451
a61af66fc99e Initial load
duke
parents:
diff changeset
10452 <category id="classLoaderSearch" label="Class Loader Search">
a61af66fc99e Initial load
duke
parents:
diff changeset
10453
a61af66fc99e Initial load
duke
parents:
diff changeset
10454 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10455 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
10456 This is useful for installing instrumentation under the correct class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
10457 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10458
a61af66fc99e Initial load
duke
parents:
diff changeset
10459 <function id="AddToBootstrapClassLoaderSearch" jkernel="yes" phase="onload" num="149">
a61af66fc99e Initial load
duke
parents:
diff changeset
10460 <synopsis>Add To Bootstrap Class Loader Search</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10461 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10462 This function can be used to cause instrumentation classes to be defined by the
a61af66fc99e Initial load
duke
parents:
diff changeset
10463 bootstrap class loader. See
a61af66fc99e Initial load
duke
parents:
diff changeset
10464 <vmspeclink id="ConstantPool.doc.html#79383"
a61af66fc99e Initial load
duke
parents:
diff changeset
10465 name="Loading Using the Bootstrap Class Loader"
a61af66fc99e Initial load
duke
parents:
diff changeset
10466 preposition="in"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10467 After the bootstrap
a61af66fc99e Initial load
duke
parents:
diff changeset
10468 class loader unsuccessfully searches for a class, the specified platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10469 search path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in
a61af66fc99e Initial load
duke
parents:
diff changeset
10470 the <paramlink id="segment"/>. This function may be called multiple times to add multiple segments,
a61af66fc99e Initial load
duke
parents:
diff changeset
10471 the segments will be searched in the order that this function was called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10472 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10473 In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10474 search path segment to be searched after the bootstrap class loader unsuccessfully searches
a61af66fc99e Initial load
duke
parents:
diff changeset
10475 for a class. The segment is typically a directory or JAR file.
a61af66fc99e Initial load
duke
parents:
diff changeset
10476 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10477 In the live phase the <paramlink id="segment"/> may be used to specify any platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10478 path to a <externallink id="http://java.sun.com/javase/6/docs/guide/jar/jar.html">
a61af66fc99e Initial load
duke
parents:
diff changeset
10479 JAR file</externallink>. The agent should take care that the JAR file does not
a61af66fc99e Initial load
duke
parents:
diff changeset
10480 contain any classes or resources other than those to be defined by the bootstrap
a61af66fc99e Initial load
duke
parents:
diff changeset
10481 class loader for the purposes of instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
10482 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10483 The <vmspeclink/> specifies that a subsequent attempt to resolve a symbolic
a61af66fc99e Initial load
duke
parents:
diff changeset
10484 reference that the Java virtual machine has previously unsuccessfully attempted
a61af66fc99e Initial load
duke
parents:
diff changeset
10485 to resolve always fails with the same error that was thrown as a result of the
a61af66fc99e Initial load
duke
parents:
diff changeset
10486 initial resolution attempt. Consequently, if the JAR file contains an entry
a61af66fc99e Initial load
duke
parents:
diff changeset
10487 that corresponds to a class for which the Java virtual machine has
a61af66fc99e Initial load
duke
parents:
diff changeset
10488 unsuccessfully attempted to resolve a reference, then subsequent attempts to
a61af66fc99e Initial load
duke
parents:
diff changeset
10489 resolve that reference will fail with the same error as the initial attempt.
a61af66fc99e Initial load
duke
parents:
diff changeset
10490 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10491 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10492 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10493 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10494 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10495 <param id="segment">
a61af66fc99e Initial load
duke
parents:
diff changeset
10496 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10497 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10498 The platform-dependent search path segment, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10499 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10500 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10501 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10502 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10503 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10504 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
10505 <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
a61af66fc99e Initial load
duke
parents:
diff changeset
10506 existing JAR file is an invalid path.
a61af66fc99e Initial load
duke
parents:
diff changeset
10507 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10508 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10509 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10510
a61af66fc99e Initial load
duke
parents:
diff changeset
10511 <function id="AddToSystemClassLoaderSearch" jkernel="yes" phase="onload" num="151" since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10512 <synopsis>Add To System Class Loader Search</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10513 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10514 This function can be used to cause instrumentation classes to be
a61af66fc99e Initial load
duke
parents:
diff changeset
10515 defined by the system class loader. See
a61af66fc99e Initial load
duke
parents:
diff changeset
10516 <vmspeclink id="ConstantPool.doc.html#79441"
a61af66fc99e Initial load
duke
parents:
diff changeset
10517 name="Loading Using a User-defined Class Loader"
a61af66fc99e Initial load
duke
parents:
diff changeset
10518 preposition="in"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10519 After the class loader unsuccessfully searches for a class, the specified platform-dependent search
a61af66fc99e Initial load
duke
parents:
diff changeset
10520 path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10521 <paramlink id="segment"/>. This function may be called multiple times to add multiple segments, the
a61af66fc99e Initial load
duke
parents:
diff changeset
10522 segments will be searched in the order that this function was called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10523 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10524 In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
a61af66fc99e Initial load
duke
parents:
diff changeset
10525 search path segment to be searched after the system class loader unsuccessfully searches
a61af66fc99e Initial load
duke
parents:
diff changeset
10526 for a class. The segment is typically a directory or JAR file.
a61af66fc99e Initial load
duke
parents:
diff changeset
10527 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10528 In the live phase the <paramlink id="segment"/> is a platform-dependent path to a <externallink
a61af66fc99e Initial load
duke
parents:
diff changeset
10529 id="http://java.sun.com/javase/6/docs/guide/jar/jar.html">JAR file</externallink> to be
a61af66fc99e Initial load
duke
parents:
diff changeset
10530 searched after the system class loader unsuccessfully searches for a class. The agent should
a61af66fc99e Initial load
duke
parents:
diff changeset
10531 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
10532 defined by the system class loader for the purposes of instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
10533 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10534 In the live phase the system class loader supports adding a JAR file to be searched if
a61af66fc99e Initial load
duke
parents:
diff changeset
10535 the system class loader implements a method name <code>appendToClassPathForInstrumentation</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10536 which takes a single parameter of type <code>java.lang.String</code>. The method is not required
a61af66fc99e Initial load
duke
parents:
diff changeset
10537 to have <code>public</code> access.
a61af66fc99e Initial load
duke
parents:
diff changeset
10538 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10539 The <vmspeclink/> specifies that a subsequent attempt to resolve a symbolic
a61af66fc99e Initial load
duke
parents:
diff changeset
10540 reference that the Java virtual machine has previously unsuccessfully attempted
a61af66fc99e Initial load
duke
parents:
diff changeset
10541 to resolve always fails with the same error that was thrown as a result of the
a61af66fc99e Initial load
duke
parents:
diff changeset
10542 initial resolution attempt. Consequently, if the JAR file contains an entry
a61af66fc99e Initial load
duke
parents:
diff changeset
10543 that corresponds to a class for which the Java virtual machine has
a61af66fc99e Initial load
duke
parents:
diff changeset
10544 unsuccessfully attempted to resolve a reference, then subsequent attempts to
a61af66fc99e Initial load
duke
parents:
diff changeset
10545 resolve that reference will fail with the same error as the initial attempt.
a61af66fc99e Initial load
duke
parents:
diff changeset
10546 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10547 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10548 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10549 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10550 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10551 <param id="segment">
a61af66fc99e Initial load
duke
parents:
diff changeset
10552 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10553 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10554 The platform-dependent search path segment, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10555 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10556 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10557 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10558 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10559 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10560 <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
a61af66fc99e Initial load
duke
parents:
diff changeset
10561 <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
a61af66fc99e Initial load
duke
parents:
diff changeset
10562 existing JAR file is an invalid path.
a61af66fc99e Initial load
duke
parents:
diff changeset
10563 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10564 <error id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED">
a61af66fc99e Initial load
duke
parents:
diff changeset
10565 Operation not supported by the system class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
10566 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10567 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10568 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10569
a61af66fc99e Initial load
duke
parents:
diff changeset
10570 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10571
a61af66fc99e Initial load
duke
parents:
diff changeset
10572
a61af66fc99e Initial load
duke
parents:
diff changeset
10573 <category id="props" label="System Properties">
a61af66fc99e Initial load
duke
parents:
diff changeset
10574
a61af66fc99e Initial load
duke
parents:
diff changeset
10575 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10576 These functions get and set system properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
10577 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10578
a61af66fc99e Initial load
duke
parents:
diff changeset
10579 <function id="GetSystemProperties" phase="onload" num="130">
a61af66fc99e Initial load
duke
parents:
diff changeset
10580 <synopsis>Get System Properties</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10581 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10582 The list of VM system property keys which may be used with
a61af66fc99e Initial load
duke
parents:
diff changeset
10583 <functionlink id="GetSystemProperty"/> is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10584 It is strongly recommended that virtual machines provide the
a61af66fc99e Initial load
duke
parents:
diff changeset
10585 following property keys:
a61af66fc99e Initial load
duke
parents:
diff changeset
10586 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10587 <li><code>java.vm.vendor</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10588 <li><code>java.vm.version</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10589 <li><code>java.vm.name</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10590 <li><code>java.vm.info</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10591 <li><code>java.library.path</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10592 <li><code>java.class.path</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
10593 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
10594 Provides access to system properties defined by and used
a61af66fc99e Initial load
duke
parents:
diff changeset
10595 by the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
10596 Properties set on the command-line are included.
a61af66fc99e Initial load
duke
parents:
diff changeset
10597 This allows getting and setting of these properties
a61af66fc99e Initial load
duke
parents:
diff changeset
10598 before the VM even begins executing bytecodes.
a61af66fc99e Initial load
duke
parents:
diff changeset
10599 Since this is a VM view of system properties, the set of available
a61af66fc99e Initial load
duke
parents:
diff changeset
10600 properties will usually be different than that
a61af66fc99e Initial load
duke
parents:
diff changeset
10601 in <code>java.lang.System.getProperties</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10602 JNI method invocation may be used to access
a61af66fc99e Initial load
duke
parents:
diff changeset
10603 <code>java.lang.System.getProperties</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10604 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10605 The set of properties may grow during execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10606 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10607 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10608 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10609 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10610 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10611 <param id="count_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10612 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10613 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10614 On return, points to the number of property keys returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10615 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10616 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10617 <param id="property_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10618 <allocallocbuf outcount="count_ptr"><char/></allocallocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10619 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10620 On return, points to an array of property keys, encoded as
a61af66fc99e Initial load
duke
parents:
diff changeset
10621 <internallink id="mUTF">modified UTF-8</internallink> strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
10622 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10623 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10624 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10625 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10626 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10627 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10628
a61af66fc99e Initial load
duke
parents:
diff changeset
10629 <function id="GetSystemProperty" phase="onload" num="131">
a61af66fc99e Initial load
duke
parents:
diff changeset
10630 <synopsis>Get System Property</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10631 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10632 Return a VM system property value given the property key.
a61af66fc99e Initial load
duke
parents:
diff changeset
10633 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10634 The function <functionlink id="GetSystemProperties"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10635 returns the set of property keys which may be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
10636 The properties which can be retrieved may grow during
a61af66fc99e Initial load
duke
parents:
diff changeset
10637 execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10638 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10639 Since this is a VM view of system properties, the values
a61af66fc99e Initial load
duke
parents:
diff changeset
10640 of properties may differ from that returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
10641 <code>java.lang.System.getProperty(String)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10642 A typical VM might copy the values of the VM system
a61af66fc99e Initial load
duke
parents:
diff changeset
10643 properties into the <code>Properties</code> held by
a61af66fc99e Initial load
duke
parents:
diff changeset
10644 <code>java.lang.System</code> during the initialization
a61af66fc99e Initial load
duke
parents:
diff changeset
10645 of that class. Thereafter any changes to the VM system
a61af66fc99e Initial load
duke
parents:
diff changeset
10646 properties (with <functionlink id="SetSystemProperty"/>)
a61af66fc99e Initial load
duke
parents:
diff changeset
10647 or the <code>java.lang.System</code> system properties
a61af66fc99e Initial load
duke
parents:
diff changeset
10648 (with <code>java.lang.System.setProperty(String,String)</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
10649 would cause the values to diverge.
a61af66fc99e Initial load
duke
parents:
diff changeset
10650 JNI method invocation may be used to access
a61af66fc99e Initial load
duke
parents:
diff changeset
10651 <code>java.lang.System.getProperty(String)</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10652 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10653 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10654 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10655 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10656 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10657 <param id="property">
a61af66fc99e Initial load
duke
parents:
diff changeset
10658 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10659 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10660 The key of the property to retrieve, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10661 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10662 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10663 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10664 <param id="value_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10665 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10666 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10667 On return, points to the property value, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10668 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10669 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10670 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10671 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10672 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10673 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10674 This property is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
10675 Use <functionlink id="GetSystemProperties"/> to find available properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
10676 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10677 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10678 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10679
a61af66fc99e Initial load
duke
parents:
diff changeset
10680 <function id="SetSystemProperty" phase="onloadOnly" num="132">
a61af66fc99e Initial load
duke
parents:
diff changeset
10681 <synopsis>Set System Property</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10682 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10683 Set a VM system property value.
a61af66fc99e Initial load
duke
parents:
diff changeset
10684 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10685 The function <functionlink id="GetSystemProperties"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10686 returns the set of property keys, some of these may be settable.
a61af66fc99e Initial load
duke
parents:
diff changeset
10687 See <functionlink id="GetSystemProperty"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10688 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10689 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10690 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10691 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10692 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10693 <param id="property">
a61af66fc99e Initial load
duke
parents:
diff changeset
10694 <inbuf><char/></inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10695 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10696 The key of the property, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10697 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10698 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10699 </param>
2100
b1a2afa37ec4 7003271: Hotspot should track cumulative Java heap bytes allocated on a per-thread basis
phh
parents: 2019
diff changeset
10700 <param id="value_ptr">
0
a61af66fc99e Initial load
duke
parents:
diff changeset
10701 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10702 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10703 <nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10704 do not set the value, but return <errorlink id="JVMTI_ERROR_NOT_AVAILABLE"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10705 if the property is not writeable
a61af66fc99e Initial load
duke
parents:
diff changeset
10706 </nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10707 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10708 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10709 The property value to set, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10710 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
10711 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10712 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10713 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10714 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10715 <error id="JVMTI_ERROR_NOT_AVAILABLE">
a61af66fc99e Initial load
duke
parents:
diff changeset
10716 This property is not available or is not writeable.
a61af66fc99e Initial load
duke
parents:
diff changeset
10717 </error>
a61af66fc99e Initial load
duke
parents:
diff changeset
10718 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10719 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10720
a61af66fc99e Initial load
duke
parents:
diff changeset
10721 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
10722
a61af66fc99e Initial load
duke
parents:
diff changeset
10723 <category id="general" label="General">
a61af66fc99e Initial load
duke
parents:
diff changeset
10724
a61af66fc99e Initial load
duke
parents:
diff changeset
10725 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10726 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
10727
a61af66fc99e Initial load
duke
parents:
diff changeset
10728 <function id="GetPhase" jkernel="yes" phase="any" num="133">
a61af66fc99e Initial load
duke
parents:
diff changeset
10729 <synopsis>Get Phase</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10730 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10731 Return the current phase of VM execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10732 The phases proceed in sequence:
a61af66fc99e Initial load
duke
parents:
diff changeset
10733 <constants id="jvmtiPhase" label="Phases of execution" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10734 <constant id="JVMTI_PHASE_ONLOAD" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10735 <code>OnLoad</code> phase: while in the
a61af66fc99e Initial load
duke
parents:
diff changeset
10736 <internallink id="onload"><code>Agent_OnLoad</code></internallink> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10737 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10738 <constant id="JVMTI_PHASE_PRIMORDIAL" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
10739 Primordial phase: between return from <code>Agent_OnLoad</code> and the
a61af66fc99e Initial load
duke
parents:
diff changeset
10740 <code>VMStart</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
10741 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10742 <constant id="JVMTI_PHASE_START" num="6">
a61af66fc99e Initial load
duke
parents:
diff changeset
10743 Start phase: when the <eventlink id="VMStart"><code>VMStart</code></eventlink> event
a61af66fc99e Initial load
duke
parents:
diff changeset
10744 is sent and until the <code>VMInit</code> event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10745 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10746 <constant id="JVMTI_PHASE_LIVE" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
10747 Live phase: when the <eventlink id="VMInit"><code>VMInit</code></eventlink> event is sent
a61af66fc99e Initial load
duke
parents:
diff changeset
10748 and until the <eventlink id="VMDeath"></eventlink> event returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
10749 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10750 <constant id="JVMTI_PHASE_DEAD" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
10751 Dead phase: after the <eventlink id="VMDeath"></eventlink> event returns or after
a61af66fc99e Initial load
duke
parents:
diff changeset
10752 start-up failure.
a61af66fc99e Initial load
duke
parents:
diff changeset
10753 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10754 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10755 In the case of start-up failure the VM will proceed directly to the dead
a61af66fc99e Initial load
duke
parents:
diff changeset
10756 phase skipping intermediate phases and neither a <code>VMInit</code> nor
a61af66fc99e Initial load
duke
parents:
diff changeset
10757 <code>VMDeath</code> event will be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10758 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10759 Most <jvmti/> functions operate only in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10760 The following functions operate in either the <code>OnLoad</code> or live phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10761 <functionphaselist phase="onload"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10762 The following functions operate in only the <code>OnLoad</code> phase:
a61af66fc99e Initial load
duke
parents:
diff changeset
10763 <functionphaselist phase="onloadOnly"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10764 The following functions operate in the start or live phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10765 <functionphaselist phase="start"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10766 The following functions operate in any phase:
a61af66fc99e Initial load
duke
parents:
diff changeset
10767 <functionphaselist phase="any"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10768 JNI functions (except the Invocation API) must only be used in the start or live phases.
a61af66fc99e Initial load
duke
parents:
diff changeset
10769 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10770 Most <jvmti/> events are sent only in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10771 The following events operate in others phases:
a61af66fc99e Initial load
duke
parents:
diff changeset
10772 <eventphaselist phase="start"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10773 <eventphaselist phase="any"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10774 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10775 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10776 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10777 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10778 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10779 <param id="phase_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10780 <outptr><enum>jvmtiPhase</enum></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10781 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10782 On return, points to the phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
10783 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10784 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10785 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10786 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10787 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10788 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10789
a61af66fc99e Initial load
duke
parents:
diff changeset
10790 <function id="DisposeEnvironment" jkernel="yes" phase="any" num="127">
a61af66fc99e Initial load
duke
parents:
diff changeset
10791 <synopsis>Dispose Environment</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10792 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10793 Shutdown a <jvmti/> connection created with JNI <code>GetEnv</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10794 (see <internallink id="environments"><jvmti/> Environments</internallink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
10795 Dispose of any resources held by the environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
10796 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10797 What resources are reclaimed? What is undone?
a61af66fc99e Initial load
duke
parents:
diff changeset
10798 Breakpoints,watchpoints removed?
a61af66fc99e Initial load
duke
parents:
diff changeset
10799 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
10800 Threads suspended by this environment are not resumed by this call,
a61af66fc99e Initial load
duke
parents:
diff changeset
10801 this must be done explicitly by the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
10802 Memory allocated by this environment via calls to <jvmti/> functions
a61af66fc99e Initial load
duke
parents:
diff changeset
10803 is not released, this can be done explicitly by the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
10804 by calling <functionlink id="Deallocate"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10805 Raw monitors created by this environment are not destroyed,
a61af66fc99e Initial load
duke
parents:
diff changeset
10806 this can be done explicitly by the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
10807 by calling <functionlink id="DestroyRawMonitor"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10808 The state of threads waiting on raw monitors created by this environment
a61af66fc99e Initial load
duke
parents:
diff changeset
10809 are not affected.
a61af66fc99e Initial load
duke
parents:
diff changeset
10810 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10811 Any <functionlink id="SetNativeMethodPrefix">native method
a61af66fc99e Initial load
duke
parents:
diff changeset
10812 prefixes</functionlink> for this environment will be unset;
a61af66fc99e Initial load
duke
parents:
diff changeset
10813 the agent must remove any prefixed native methods before
a61af66fc99e Initial load
duke
parents:
diff changeset
10814 dispose is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
10815 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10816 Any <internallink id="capability">capabilities</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
10817 held by this environment are relinquished.
a61af66fc99e Initial load
duke
parents:
diff changeset
10818 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10819 Events enabled by this environment will no longer be sent, however
a61af66fc99e Initial load
duke
parents:
diff changeset
10820 event handlers currently running will continue to run. Caution must
a61af66fc99e Initial load
duke
parents:
diff changeset
10821 be exercised in the design of event handlers whose environment may
a61af66fc99e Initial load
duke
parents:
diff changeset
10822 be disposed and thus become invalid during their execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
10823 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10824 This environment may not be used after this call.
a61af66fc99e Initial load
duke
parents:
diff changeset
10825 This call returns to the caller.
a61af66fc99e Initial load
duke
parents:
diff changeset
10826 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10827 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10828 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10829 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10830 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10831 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10832 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10833 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10834 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10835
a61af66fc99e Initial load
duke
parents:
diff changeset
10836 <function id="SetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="148">
a61af66fc99e Initial load
duke
parents:
diff changeset
10837 <synopsis>Set Environment Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10838 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10839 The VM stores a pointer value associated with each environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
10840 This pointer value is called <i>environment-local storage</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10841 This value is <code>NULL</code> unless set with this function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10842 Agents can allocate memory in which they store environment specific
a61af66fc99e Initial load
duke
parents:
diff changeset
10843 information. By setting environment-local storage it can then be
a61af66fc99e Initial load
duke
parents:
diff changeset
10844 accessed with
a61af66fc99e Initial load
duke
parents:
diff changeset
10845 <functionlink id="GetEnvironmentLocalStorage"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10846 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10847 Called by the agent to set the value of the <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10848 environment-local storage. <jvmti/> supplies to the agent a pointer-size
a61af66fc99e Initial load
duke
parents:
diff changeset
10849 environment-local storage that can be used to record per-environment
a61af66fc99e Initial load
duke
parents:
diff changeset
10850 information.
a61af66fc99e Initial load
duke
parents:
diff changeset
10851 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10852 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10853 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10854 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10855 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10856 <param id="data">
a61af66fc99e Initial load
duke
parents:
diff changeset
10857 <inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10858 <void/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10859 <nullok>value is set to <code>NULL</code></nullok>
a61af66fc99e Initial load
duke
parents:
diff changeset
10860 </inbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10861 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10862 The value to be entered into the environment-local storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
10863 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10864 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10865 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10866 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10867 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10868 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10869
a61af66fc99e Initial load
duke
parents:
diff changeset
10870 <function id="GetEnvironmentLocalStorage" jkernel="yes" phase="any" callbacksafe="safe" impl="innative notrace" num="147">
a61af66fc99e Initial load
duke
parents:
diff changeset
10871 <synopsis>Get Environment Local Storage</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10872 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10873 Called by the agent to get the value of the <jvmti/> environment-local
a61af66fc99e Initial load
duke
parents:
diff changeset
10874 storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
10875 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10876 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10877 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10878 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10879 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10880 <param id="data_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10881 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10882 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10883 Pointer through which the value of the environment local
a61af66fc99e Initial load
duke
parents:
diff changeset
10884 storage is returned.
a61af66fc99e Initial load
duke
parents:
diff changeset
10885 If environment-local storage has not been set with
a61af66fc99e Initial load
duke
parents:
diff changeset
10886 <functionlink id="SetEnvironmentLocalStorage"></functionlink> returned
a61af66fc99e Initial load
duke
parents:
diff changeset
10887 pointer is <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10888 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10889 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10890 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10891 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10892 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10893 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10894
a61af66fc99e Initial load
duke
parents:
diff changeset
10895 <function id="GetVersionNumber" jkernel="yes" phase="any" num="88">
a61af66fc99e Initial load
duke
parents:
diff changeset
10896 <synopsis>Get Version Number</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10897 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10898 Return the <jvmti/> version via <code>version_ptr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10899 The return value is the version identifier.
a61af66fc99e Initial load
duke
parents:
diff changeset
10900 The version identifier includes major, minor and micro
a61af66fc99e Initial load
duke
parents:
diff changeset
10901 version as well as the interface type.
a61af66fc99e Initial load
duke
parents:
diff changeset
10902 <constants id="jvmtiVersionInterfaceTypes" label="Version Interface Types" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10903 <constant id="JVMTI_VERSION_INTERFACE_JNI" num="0x00000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10904 Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
10905 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10906 <constant id="JVMTI_VERSION_INTERFACE_JVMTI" num="0x30000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10907 Value of <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> for <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10908 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10909 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10910 <constants id="jvmtiVersionMasks" label="Version Masks" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10911 <constant id="JVMTI_VERSION_MASK_INTERFACE_TYPE" num="0x70000000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10912 Mask to extract interface type.
a61af66fc99e Initial load
duke
parents:
diff changeset
10913 The value of the version returned by this function masked with
a61af66fc99e Initial load
duke
parents:
diff changeset
10914 <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> is always
a61af66fc99e Initial load
duke
parents:
diff changeset
10915 <code>JVMTI_VERSION_INTERFACE_JVMTI</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10916 since this is a <jvmti/> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
10917 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10918 <constant id="JVMTI_VERSION_MASK_MAJOR" num="0x0FFF0000">
a61af66fc99e Initial load
duke
parents:
diff changeset
10919 Mask to extract major version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10920 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10921 <constant id="JVMTI_VERSION_MASK_MINOR" num="0x0000FF00">
a61af66fc99e Initial load
duke
parents:
diff changeset
10922 Mask to extract minor version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10923 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10924 <constant id="JVMTI_VERSION_MASK_MICRO" num="0x000000FF">
a61af66fc99e Initial load
duke
parents:
diff changeset
10925 Mask to extract micro version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10926 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10927 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10928 <constants id="jvmtiVersionShifts" label="Version Shifts" kind="bits">
a61af66fc99e Initial load
duke
parents:
diff changeset
10929 <constant id="JVMTI_VERSION_SHIFT_MAJOR" num="16">
a61af66fc99e Initial load
duke
parents:
diff changeset
10930 Shift to extract major version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10931 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10932 <constant id="JVMTI_VERSION_SHIFT_MINOR" num="8">
a61af66fc99e Initial load
duke
parents:
diff changeset
10933 Shift to extract minor version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10934 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10935 <constant id="JVMTI_VERSION_SHIFT_MICRO" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
10936 Shift to extract micro version number.
a61af66fc99e Initial load
duke
parents:
diff changeset
10937 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10938 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
10939 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10940 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10941 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10942 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10943 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10944 <param id="version_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10945 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
10946 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10947 On return, points to the <jvmti/> version.
a61af66fc99e Initial load
duke
parents:
diff changeset
10948 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10949 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10950 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10951 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10952 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10953 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10954
a61af66fc99e Initial load
duke
parents:
diff changeset
10955
a61af66fc99e Initial load
duke
parents:
diff changeset
10956 <function id="GetErrorName" phase="any" num="128">
a61af66fc99e Initial load
duke
parents:
diff changeset
10957 <synopsis>Get Error Name</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10958 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10959 Return the symbolic name for an
a61af66fc99e Initial load
duke
parents:
diff changeset
10960 <internallink id="ErrorSection">error code</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10961 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
10962 For example
a61af66fc99e Initial load
duke
parents:
diff changeset
10963 <code>GetErrorName(env, JVMTI_ERROR_NONE, &amp;err_name)</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
10964 would return in <code>err_name</code> the string
a61af66fc99e Initial load
duke
parents:
diff changeset
10965 <code>"JVMTI_ERROR_NONE"</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
10966 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10967 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
10968 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10969 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
10970 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10971 <param id="error">
a61af66fc99e Initial load
duke
parents:
diff changeset
10972 <enum>jvmtiError</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
10973 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10974 The error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
10975 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10976 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10977 <param id="name_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
10978 <allocbuf><char/></allocbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
10979 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10980 On return, points to the error name.
a61af66fc99e Initial load
duke
parents:
diff changeset
10981 The name is encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
10982 <internallink id="mUTF">modified UTF-8</internallink> string,
a61af66fc99e Initial load
duke
parents:
diff changeset
10983 but is restricted to the ASCII subset.
a61af66fc99e Initial load
duke
parents:
diff changeset
10984 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10985 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
10986 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
10987 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10988 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
10989 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
10990
a61af66fc99e Initial load
duke
parents:
diff changeset
10991 <function id="SetVerboseFlag" phase="any" num="150">
a61af66fc99e Initial load
duke
parents:
diff changeset
10992 <synopsis>Set Verbose Flag</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
10993 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
10994 <constants id="jvmtiVerboseFlag" label="Verbose Flag Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
10995 <constant id="JVMTI_VERBOSE_OTHER" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
10996 Verbose output other than the below.
a61af66fc99e Initial load
duke
parents:
diff changeset
10997 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
10998 <constant id="JVMTI_VERBOSE_GC" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
10999 Verbose garbage collector output, like that specified with <code>-verbose:gc</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11000 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11001 <constant id="JVMTI_VERBOSE_CLASS" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
11002 Verbose class loading output, like that specified with <code>-verbose:class</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11003 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11004 <constant id="JVMTI_VERBOSE_JNI" num="4">
a61af66fc99e Initial load
duke
parents:
diff changeset
11005 Verbose JNI output, like that specified with <code>-verbose:jni</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11006 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11007 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
11008 Control verbose output.
a61af66fc99e Initial load
duke
parents:
diff changeset
11009 This is the output which typically is sent to <code>stderr</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11010 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11011 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11012 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11013 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11014 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11015 <param id="flag">
a61af66fc99e Initial load
duke
parents:
diff changeset
11016 <enum>jvmtiVerboseFlag</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
11017 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11018 Which verbose flag to set.
a61af66fc99e Initial load
duke
parents:
diff changeset
11019 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11020 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11021 <param id="value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11022 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11023 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11024 New value of the flag.
a61af66fc99e Initial load
duke
parents:
diff changeset
11025 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11026 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11027 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11028 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11029 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11030 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
11031
a61af66fc99e Initial load
duke
parents:
diff changeset
11032
a61af66fc99e Initial load
duke
parents:
diff changeset
11033 <function id="GetJLocationFormat" phase="any" num="129">
a61af66fc99e Initial load
duke
parents:
diff changeset
11034 <synopsis>Get JLocation Format</synopsis>
a61af66fc99e Initial load
duke
parents:
diff changeset
11035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11036 Although the greatest functionality is achieved with location information
a61af66fc99e Initial load
duke
parents:
diff changeset
11037 referencing the virtual machine bytecode index, the definition of
a61af66fc99e Initial load
duke
parents:
diff changeset
11038 <code>jlocation</code> has intentionally been left unconstrained to allow VM
a61af66fc99e Initial load
duke
parents:
diff changeset
11039 implementations that do not have this information.
a61af66fc99e Initial load
duke
parents:
diff changeset
11040 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11041 This function describes the representation of <code>jlocation</code> used in this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
11042 If the returned format is <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11043 <code>jlocation</code>s can
a61af66fc99e Initial load
duke
parents:
diff changeset
11044 be used as in indices into the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
11045 <functionlink id="GetBytecodes"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11046 <constants id="jvmtiJlocationFormat" label="JLocation Format Enumeration" kind="enum">
a61af66fc99e Initial load
duke
parents:
diff changeset
11047 <constant id="JVMTI_JLOCATION_JVMBCI" num="1">
a61af66fc99e Initial load
duke
parents:
diff changeset
11048 <code>jlocation</code> values represent virtual machine
a61af66fc99e Initial load
duke
parents:
diff changeset
11049 bytecode indices--that is, offsets into the
a61af66fc99e Initial load
duke
parents:
diff changeset
11050 virtual machine code for a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11051 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11052 <constant id="JVMTI_JLOCATION_MACHINEPC" num="2">
a61af66fc99e Initial load
duke
parents:
diff changeset
11053 <code>jlocation</code> values represent native machine
a61af66fc99e Initial load
duke
parents:
diff changeset
11054 program counter values.
a61af66fc99e Initial load
duke
parents:
diff changeset
11055 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11056 <constant id="JVMTI_JLOCATION_OTHER" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11057 <code>jlocation</code> values have some other representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11058 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
11059 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
11060 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11061 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11062 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11063 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11064 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11065 <param id="format_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11066 <outptr><enum>jvmtiJlocationFormat</enum></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11067 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11068 On return, points to the format identifier for <code>jlocation</code> values.
a61af66fc99e Initial load
duke
parents:
diff changeset
11069 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11070 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11071 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11072 <errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11073 </errors>
a61af66fc99e Initial load
duke
parents:
diff changeset
11074 </function>
a61af66fc99e Initial load
duke
parents:
diff changeset
11075
a61af66fc99e Initial load
duke
parents:
diff changeset
11076 </category>
a61af66fc99e Initial load
duke
parents:
diff changeset
11077
a61af66fc99e Initial load
duke
parents:
diff changeset
11078 </functionsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
11079
a61af66fc99e Initial load
duke
parents:
diff changeset
11080 <errorsection label="Error Reference">
a61af66fc99e Initial load
duke
parents:
diff changeset
11081 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11082 Every <jvmti/> function returns a <b><code>jvmtiError</code></b> error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
11083 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11084 It is the responsibility of the agent to call <jvmti/> functions with
a61af66fc99e Initial load
duke
parents:
diff changeset
11085 valid parameters and in the proper context (calling thread is attached,
a61af66fc99e Initial load
duke
parents:
diff changeset
11086 phase is correct, etc.).
a61af66fc99e Initial load
duke
parents:
diff changeset
11087 Detecting some error conditions may be difficult, inefficient, or
a61af66fc99e Initial load
duke
parents:
diff changeset
11088 impossible for an implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11089 The errors listed in
a61af66fc99e Initial load
duke
parents:
diff changeset
11090 <internallink id="reqerrors">Function Specific Required Errors</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11091 must be detected by the implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11092 All other errors represent the recommended response to the error
a61af66fc99e Initial load
duke
parents:
diff changeset
11093 condition.
a61af66fc99e Initial load
duke
parents:
diff changeset
11094 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11095
a61af66fc99e Initial load
duke
parents:
diff changeset
11096 <errorcategory id="universal-error" label="Universal Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11097 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11098 The following errors may be returned by any function
a61af66fc99e Initial load
duke
parents:
diff changeset
11099 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11100
a61af66fc99e Initial load
duke
parents:
diff changeset
11101 <errorid id="JVMTI_ERROR_NONE" num="0">
a61af66fc99e Initial load
duke
parents:
diff changeset
11102 No error has occurred. This is the error code that is returned
a61af66fc99e Initial load
duke
parents:
diff changeset
11103 on successful completion of the function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11104 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11105 <errorid id="JVMTI_ERROR_NULL_POINTER" num="100">
a61af66fc99e Initial load
duke
parents:
diff changeset
11106 Pointer is unexpectedly <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11107 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11108 <errorid id="JVMTI_ERROR_OUT_OF_MEMORY" num="110">
a61af66fc99e Initial load
duke
parents:
diff changeset
11109 The function attempted to allocate memory and no more memory was
a61af66fc99e Initial load
duke
parents:
diff changeset
11110 available for allocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11111 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11112 <errorid id="JVMTI_ERROR_ACCESS_DENIED" num="111">
a61af66fc99e Initial load
duke
parents:
diff changeset
11113 The desired functionality has not been enabled in this virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
11114 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11115 <errorid id="JVMTI_ERROR_UNATTACHED_THREAD" num="115">
a61af66fc99e Initial load
duke
parents:
diff changeset
11116 The thread being used to call this function is not attached
a61af66fc99e Initial load
duke
parents:
diff changeset
11117 to the virtual machine. Calls must be made from attached threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
11118 See <code>AttachCurrentThread</code> in the JNI invocation API.
a61af66fc99e Initial load
duke
parents:
diff changeset
11119 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11120 <errorid id="JVMTI_ERROR_INVALID_ENVIRONMENT" num="116">
a61af66fc99e Initial load
duke
parents:
diff changeset
11121 The <jvmti/> environment provided is no longer connected or is
a61af66fc99e Initial load
duke
parents:
diff changeset
11122 not an environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
11123 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11124 <errorid id="JVMTI_ERROR_WRONG_PHASE" num="112">
a61af66fc99e Initial load
duke
parents:
diff changeset
11125 The desired functionality is not available in the current
a61af66fc99e Initial load
duke
parents:
diff changeset
11126 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11127 Always returned if the virtual machine has completed running.
a61af66fc99e Initial load
duke
parents:
diff changeset
11128 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11129 <errorid id="JVMTI_ERROR_INTERNAL" num="113">
a61af66fc99e Initial load
duke
parents:
diff changeset
11130 An unexpected internal error has occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
11131 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11132 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11133
a61af66fc99e Initial load
duke
parents:
diff changeset
11134 <errorcategory id="reqerrors" label="Function Specific Required Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11135 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11136 The following errors are returned by some <jvmti/> functions and must
a61af66fc99e Initial load
duke
parents:
diff changeset
11137 be returned by the implementation when the condition occurs.
a61af66fc99e Initial load
duke
parents:
diff changeset
11138 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11139
a61af66fc99e Initial load
duke
parents:
diff changeset
11140 <errorid id="JVMTI_ERROR_INVALID_PRIORITY" num="12">
a61af66fc99e Initial load
duke
parents:
diff changeset
11141 Invalid priority.
a61af66fc99e Initial load
duke
parents:
diff changeset
11142 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11143 <errorid id="JVMTI_ERROR_THREAD_NOT_SUSPENDED" num="13">
a61af66fc99e Initial load
duke
parents:
diff changeset
11144 Thread was not suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
11145 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11146 <errorid id="JVMTI_ERROR_THREAD_SUSPENDED" num="14">
a61af66fc99e Initial load
duke
parents:
diff changeset
11147 Thread already suspended.
a61af66fc99e Initial load
duke
parents:
diff changeset
11148 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11149 <errorid id="JVMTI_ERROR_THREAD_NOT_ALIVE" num="15">
a61af66fc99e Initial load
duke
parents:
diff changeset
11150 This operation requires the thread to be alive--that is,
a61af66fc99e Initial load
duke
parents:
diff changeset
11151 it must be started and not yet have died.
a61af66fc99e Initial load
duke
parents:
diff changeset
11152 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11153 <errorid id="JVMTI_ERROR_CLASS_NOT_PREPARED" num="22">
a61af66fc99e Initial load
duke
parents:
diff changeset
11154 The class has been loaded but not yet prepared.
a61af66fc99e Initial load
duke
parents:
diff changeset
11155 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11156 <errorid id="JVMTI_ERROR_NO_MORE_FRAMES" num="31">
a61af66fc99e Initial load
duke
parents:
diff changeset
11157 There are no Java programming language or JNI stack frames at the specified depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
11158 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11159 <errorid id="JVMTI_ERROR_OPAQUE_FRAME" num="32">
a61af66fc99e Initial load
duke
parents:
diff changeset
11160 Information about the frame is not available (e.g. for native frames).
a61af66fc99e Initial load
duke
parents:
diff changeset
11161 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11162 <errorid id="JVMTI_ERROR_DUPLICATE" num="40">
a61af66fc99e Initial load
duke
parents:
diff changeset
11163 Item already set.
a61af66fc99e Initial load
duke
parents:
diff changeset
11164 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11165 <errorid id="JVMTI_ERROR_NOT_FOUND" num="41">
a61af66fc99e Initial load
duke
parents:
diff changeset
11166 Desired element (e.g. field or breakpoint) not found
a61af66fc99e Initial load
duke
parents:
diff changeset
11167 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11168 <errorid id="JVMTI_ERROR_NOT_MONITOR_OWNER" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
11169 This thread doesn't own the raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
11170 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11171 <errorid id="JVMTI_ERROR_INTERRUPT" num="52">
a61af66fc99e Initial load
duke
parents:
diff changeset
11172 The call has been interrupted before completion.
a61af66fc99e Initial load
duke
parents:
diff changeset
11173 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11174 <errorid id="JVMTI_ERROR_UNMODIFIABLE_CLASS" num="79">
a61af66fc99e Initial load
duke
parents:
diff changeset
11175 The class cannot be modified.
a61af66fc99e Initial load
duke
parents:
diff changeset
11176 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11177 <errorid id="JVMTI_ERROR_NOT_AVAILABLE" num="98">
a61af66fc99e Initial load
duke
parents:
diff changeset
11178 The functionality is not available in this virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
11179 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11180 <errorid id="JVMTI_ERROR_ABSENT_INFORMATION" num="101">
a61af66fc99e Initial load
duke
parents:
diff changeset
11181 The requested information is not available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11182 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11183 <errorid id="JVMTI_ERROR_INVALID_EVENT_TYPE" num="102">
a61af66fc99e Initial load
duke
parents:
diff changeset
11184 The specified event type ID is not recognized.
a61af66fc99e Initial load
duke
parents:
diff changeset
11185 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11186 <errorid id="JVMTI_ERROR_NATIVE_METHOD" num="104">
a61af66fc99e Initial load
duke
parents:
diff changeset
11187 The requested information is not available for native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11188 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11189 <errorid id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED" num="106">
a61af66fc99e Initial load
duke
parents:
diff changeset
11190 The class loader does not support this operation.
a61af66fc99e Initial load
duke
parents:
diff changeset
11191 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11192 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11193
a61af66fc99e Initial load
duke
parents:
diff changeset
11194 <errorcategory id="function-specific-errors" label="Function Specific Agent Errors">
a61af66fc99e Initial load
duke
parents:
diff changeset
11195 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11196 The following errors are returned by some <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
11197 They are returned in the event of invalid parameters passed by the
a61af66fc99e Initial load
duke
parents:
diff changeset
11198 agent or usage in an invalid context.
a61af66fc99e Initial load
duke
parents:
diff changeset
11199 An implementation is not required to detect these errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
11200 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11201
a61af66fc99e Initial load
duke
parents:
diff changeset
11202 <errorid id="JVMTI_ERROR_INVALID_THREAD" num="10">
a61af66fc99e Initial load
duke
parents:
diff changeset
11203 The passed thread is not a valid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11204 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11205 <errorid id="JVMTI_ERROR_INVALID_FIELDID" num="25">
a61af66fc99e Initial load
duke
parents:
diff changeset
11206 Invalid field.
a61af66fc99e Initial load
duke
parents:
diff changeset
11207 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11208 <errorid id="JVMTI_ERROR_INVALID_METHODID" num="23">
a61af66fc99e Initial load
duke
parents:
diff changeset
11209 Invalid method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11210 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11211 <errorid id="JVMTI_ERROR_INVALID_LOCATION" num="24">
a61af66fc99e Initial load
duke
parents:
diff changeset
11212 Invalid location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11213 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11214 <errorid id="JVMTI_ERROR_INVALID_OBJECT" num="20">
a61af66fc99e Initial load
duke
parents:
diff changeset
11215 Invalid object.
a61af66fc99e Initial load
duke
parents:
diff changeset
11216 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11217 <errorid id="JVMTI_ERROR_INVALID_CLASS" num="21">
a61af66fc99e Initial load
duke
parents:
diff changeset
11218 Invalid class.
a61af66fc99e Initial load
duke
parents:
diff changeset
11219 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11220 <errorid id="JVMTI_ERROR_TYPE_MISMATCH" num="34">
a61af66fc99e Initial load
duke
parents:
diff changeset
11221 The variable is not an appropriate type for the function used.
a61af66fc99e Initial load
duke
parents:
diff changeset
11222 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11223 <errorid id="JVMTI_ERROR_INVALID_SLOT" num="35">
a61af66fc99e Initial load
duke
parents:
diff changeset
11224 Invalid slot.
a61af66fc99e Initial load
duke
parents:
diff changeset
11225 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11226 <errorid id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY" num="99">
a61af66fc99e Initial load
duke
parents:
diff changeset
11227 The capability being used is false in this environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
11228 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11229 <errorid id="JVMTI_ERROR_INVALID_THREAD_GROUP" num="11">
a61af66fc99e Initial load
duke
parents:
diff changeset
11230 Thread group invalid.
a61af66fc99e Initial load
duke
parents:
diff changeset
11231 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11232 <errorid id="JVMTI_ERROR_INVALID_MONITOR" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
11233 Invalid raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
11234 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11235 <errorid id="JVMTI_ERROR_ILLEGAL_ARGUMENT" num="103">
a61af66fc99e Initial load
duke
parents:
diff changeset
11236 Illegal argument.
a61af66fc99e Initial load
duke
parents:
diff changeset
11237 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11238 <errorid id="JVMTI_ERROR_INVALID_TYPESTATE" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
11239 The state of the thread has been modified, and is now inconsistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
11240 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11241 <errorid id="JVMTI_ERROR_UNSUPPORTED_VERSION" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
11242 A new class file has a version number not supported by this VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
11243 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11244 <errorid id="JVMTI_ERROR_INVALID_CLASS_FORMAT" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
11245 A new class file is malformed (the VM would return a <code>ClassFormatError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11246 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11247 <errorid id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
11248 The new class file definitions would lead to a circular
a61af66fc99e Initial load
duke
parents:
diff changeset
11249 definition (the VM would return a <code>ClassCircularityError</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11250 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11251 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
11252 A new class file would require adding a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11253 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11254 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
11255 A new class version changes a field.
a61af66fc99e Initial load
duke
parents:
diff changeset
11256 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11257 <errorid id="JVMTI_ERROR_FAILS_VERIFICATION" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
11258 The class bytes fail verification.
a61af66fc99e Initial load
duke
parents:
diff changeset
11259 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11260 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
11261 A direct superclass is different for the new class
a61af66fc99e Initial load
duke
parents:
diff changeset
11262 version, or the set of directly implemented
a61af66fc99e Initial load
duke
parents:
diff changeset
11263 interfaces is different.
a61af66fc99e Initial load
duke
parents:
diff changeset
11264 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11265 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
11266 A new class version does not declare a method
a61af66fc99e Initial load
duke
parents:
diff changeset
11267 declared in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
11268 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11269 <errorid id="JVMTI_ERROR_NAMES_DONT_MATCH" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
11270 The class name defined in the new class file is
a61af66fc99e Initial load
duke
parents:
diff changeset
11271 different from the name in the old class object.
a61af66fc99e Initial load
duke
parents:
diff changeset
11272 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11273 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
11274 A new class version has different modifiers.
a61af66fc99e Initial load
duke
parents:
diff changeset
11275 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11276 <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
11277 A method in the new class version has different modifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
11278 than its counterpart in the old class version.
a61af66fc99e Initial load
duke
parents:
diff changeset
11279 </errorid>
a61af66fc99e Initial load
duke
parents:
diff changeset
11280 </errorcategory>
a61af66fc99e Initial load
duke
parents:
diff changeset
11281 </errorsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
11282
a61af66fc99e Initial load
duke
parents:
diff changeset
11283 <eventsection label="Events">
a61af66fc99e Initial load
duke
parents:
diff changeset
11284 <intro label="Handling Events" id="eventIntro">
a61af66fc99e Initial load
duke
parents:
diff changeset
11285 Agents can be informed of many events that occur in application
a61af66fc99e Initial load
duke
parents:
diff changeset
11286 programs.
a61af66fc99e Initial load
duke
parents:
diff changeset
11287 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11288 To handle events, designate a set of callback functions with
a61af66fc99e Initial load
duke
parents:
diff changeset
11289 <functionlink id="SetEventCallbacks"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11290 For each event the corresponding callback function will be
a61af66fc99e Initial load
duke
parents:
diff changeset
11291 called.
a61af66fc99e Initial load
duke
parents:
diff changeset
11292 Arguments to the callback function provide additional
a61af66fc99e Initial load
duke
parents:
diff changeset
11293 information about the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11294 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11295 The callback function is usually called from within an application
a61af66fc99e Initial load
duke
parents:
diff changeset
11296 thread. The <jvmti/> implementation does not
a61af66fc99e Initial load
duke
parents:
diff changeset
11297 queue events in any way. This means
a61af66fc99e Initial load
duke
parents:
diff changeset
11298 that event callback functions must be written
a61af66fc99e Initial load
duke
parents:
diff changeset
11299 carefully. Here are some general guidelines. See
a61af66fc99e Initial load
duke
parents:
diff changeset
11300 the individual event descriptions for further
a61af66fc99e Initial load
duke
parents:
diff changeset
11301 suggestions.
a61af66fc99e Initial load
duke
parents:
diff changeset
11302 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11303 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11304 <li>Any exception thrown during the execution of an event callback can
a61af66fc99e Initial load
duke
parents:
diff changeset
11305 overwrite any current pending exception in the current application thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11306 Care must be taken to preserve a pending exception
a61af66fc99e Initial load
duke
parents:
diff changeset
11307 when an event callback makes a JNI call that might generate an exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11308 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11309 <li>Event callback functions must be re-entrant. The <jvmti/> implementation does
a61af66fc99e Initial load
duke
parents:
diff changeset
11310 not queue events. If an agent needs to process events one at a time, it
a61af66fc99e Initial load
duke
parents:
diff changeset
11311 can use a raw monitor inside the
a61af66fc99e Initial load
duke
parents:
diff changeset
11312 event callback functions to serialize event processing.
a61af66fc99e Initial load
duke
parents:
diff changeset
11313 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11314 <li>Event callback functions that execute JNI's FindClass function to load
a61af66fc99e Initial load
duke
parents:
diff changeset
11315 classes need to note that FindClass locates the class loader associated
a61af66fc99e Initial load
duke
parents:
diff changeset
11316 with the current native method. For the purposes of class loading, an
a61af66fc99e Initial load
duke
parents:
diff changeset
11317 event callback that includes a JNI environment as a parameter to the
a61af66fc99e Initial load
duke
parents:
diff changeset
11318 callback will treated as if it is a native call, where the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11319 is in the class of the event thread's current frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
11320 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11321 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11322 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11323 Some <jvmti/> events identify objects with JNI references.
a61af66fc99e Initial load
duke
parents:
diff changeset
11324 All references
a61af66fc99e Initial load
duke
parents:
diff changeset
11325 in <jvmti/> events are JNI local references and will become invalid
a61af66fc99e Initial load
duke
parents:
diff changeset
11326 after the event callback returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
11327 Unless stated otherwise, memory referenced by pointers sent in event
a61af66fc99e Initial load
duke
parents:
diff changeset
11328 callbacks may not be referenced after the event callback returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
11329 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11330 Except where stated otherwise, events are delivered on the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11331 that caused the event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11332 Events are sent at the time they occur.
a61af66fc99e Initial load
duke
parents:
diff changeset
11333 The specification for each event includes the set of
a61af66fc99e Initial load
duke
parents:
diff changeset
11334 <functionlink id="GetPhase">phases</functionlink> in which it can be sent;
a61af66fc99e Initial load
duke
parents:
diff changeset
11335 if an event triggering activity occurs during another phase, no event
a61af66fc99e Initial load
duke
parents:
diff changeset
11336 is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
11337 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11338 A thread that generates an event does not change its execution status
a61af66fc99e Initial load
duke
parents:
diff changeset
11339 (for example, the event does not cause the thread to be suspended).
a61af66fc99e Initial load
duke
parents:
diff changeset
11340 If an agent wishes the event to result in suspension, then the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
11341 is responsible for explicitly suspending the thread with
a61af66fc99e Initial load
duke
parents:
diff changeset
11342 <functionlink id="SuspendThread"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11343 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11344 If an event is enabled in multiple environments, the event will be sent
a61af66fc99e Initial load
duke
parents:
diff changeset
11345 to each agent in the order that the environments were created.
a61af66fc99e Initial load
duke
parents:
diff changeset
11346 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11347
a61af66fc99e Initial load
duke
parents:
diff changeset
11348 <intro label="Enabling Events" id="enablingevents">
a61af66fc99e Initial load
duke
parents:
diff changeset
11349 All events are initially disabled. In order to receive any
a61af66fc99e Initial load
duke
parents:
diff changeset
11350 event:
a61af66fc99e Initial load
duke
parents:
diff changeset
11351 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11352 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11353 If the event requires a capability, that capability must
a61af66fc99e Initial load
duke
parents:
diff changeset
11354 be added with
a61af66fc99e Initial load
duke
parents:
diff changeset
11355 <functionlink id="AddCapabilities"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11356 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11357 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11358 A callback for the event must be set with
a61af66fc99e Initial load
duke
parents:
diff changeset
11359 <functionlink id="SetEventCallbacks"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11360 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11361 <li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11362 The event must be enabled with
a61af66fc99e Initial load
duke
parents:
diff changeset
11363 <functionlink id="SetEventNotificationMode"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11364 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11365 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11366 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11367
a61af66fc99e Initial load
duke
parents:
diff changeset
11368 <intro label="Multiple Co-located Events" id="eventorder">
a61af66fc99e Initial load
duke
parents:
diff changeset
11369 In many situations it is possible for multiple events to occur
a61af66fc99e Initial load
duke
parents:
diff changeset
11370 at the same location in one thread. When this happens, all the events
a61af66fc99e Initial load
duke
parents:
diff changeset
11371 are reported through the event callbacks in the order specified in this section.
a61af66fc99e Initial load
duke
parents:
diff changeset
11372 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11373 If the current location is at the entry point of a method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11374 <eventlink id="MethodEntry"></eventlink> event is reported before
a61af66fc99e Initial load
duke
parents:
diff changeset
11375 any other event at the current location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11376 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11377 If an exception catch has been detected at the current location,
a61af66fc99e Initial load
duke
parents:
diff changeset
11378 either because it is the beginning of a catch clause or a native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11379 that cleared a pending exception has returned, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11380 <code>exceptionCatch</code> event is reported before
a61af66fc99e Initial load
duke
parents:
diff changeset
11381 any other event at the current location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11382 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11383 If a <code>singleStep</code> event or
a61af66fc99e Initial load
duke
parents:
diff changeset
11384 <code>breakpoint</code> event is triggered at the
a61af66fc99e Initial load
duke
parents:
diff changeset
11385 current location, the event is defined to occur
a61af66fc99e Initial load
duke
parents:
diff changeset
11386 immediately before the code at the current location is executed.
a61af66fc99e Initial load
duke
parents:
diff changeset
11387 These events are reported before any events which are triggered
a61af66fc99e Initial load
duke
parents:
diff changeset
11388 by the execution of code at the current location in the same
a61af66fc99e Initial load
duke
parents:
diff changeset
11389 thread (specifically:
a61af66fc99e Initial load
duke
parents:
diff changeset
11390 <code>exception</code>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11391 <code>fieldAccess</code>, and
a61af66fc99e Initial load
duke
parents:
diff changeset
11392 <code>fieldModification</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11393 If both a step and breakpoint event are triggered for the same thread and
a61af66fc99e Initial load
duke
parents:
diff changeset
11394 location, the step event is reported before the breakpoint event.
a61af66fc99e Initial load
duke
parents:
diff changeset
11395 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11396 If the current location is the exit point of a method (that is, the last
a61af66fc99e Initial load
duke
parents:
diff changeset
11397 location before returning to the caller), the
a61af66fc99e Initial load
duke
parents:
diff changeset
11398 <eventlink id="MethodExit"></eventlink> event and
a61af66fc99e Initial load
duke
parents:
diff changeset
11399 the <eventlink id="FramePop"></eventlink> event (if requested)
a61af66fc99e Initial load
duke
parents:
diff changeset
11400 are reported after all other events at the current location in the same
a61af66fc99e Initial load
duke
parents:
diff changeset
11401 thread. There is no specified ordering of these two events
a61af66fc99e Initial load
duke
parents:
diff changeset
11402 with respect to each other.
a61af66fc99e Initial load
duke
parents:
diff changeset
11403 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11404 Co-located events can be triggered during the processing of some other
a61af66fc99e Initial load
duke
parents:
diff changeset
11405 event by the agent at the same location in the same thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11406 If such an event, of type <i>y</i>, is triggered during the processing of
a61af66fc99e Initial load
duke
parents:
diff changeset
11407 an event of type <i>x</i>, and if <i>x</i>
a61af66fc99e Initial load
duke
parents:
diff changeset
11408 precedes <i>y</i> in the ordering specified above, the co-located event
a61af66fc99e Initial load
duke
parents:
diff changeset
11409 <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
11410 <i>y</i>, <i>y</i> is not reported for the current thread and location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11411 For example, if a breakpoint is set at the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
11412 during the processing of <eventlink id="SingleStep"></eventlink>,
a61af66fc99e Initial load
duke
parents:
diff changeset
11413 that breakpoint will be reported before the thread moves off the current
a61af66fc99e Initial load
duke
parents:
diff changeset
11414 location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11415 <p/>The following events are never considered to be co-located with
a61af66fc99e Initial load
duke
parents:
diff changeset
11416 other events.
a61af66fc99e Initial load
duke
parents:
diff changeset
11417 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11418 <li><eventlink id="VMStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11419 <li><eventlink id="VMInit"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11420 <li><eventlink id="VMDeath"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11421 <li><eventlink id="ThreadStart"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11422 <li><eventlink id="ThreadEnd"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11423 <li><eventlink id="ClassLoad"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11424 <li><eventlink id="ClassPrepare"></eventlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
11425 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
11426 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11427
a61af66fc99e Initial load
duke
parents:
diff changeset
11428 <intro label="Event Callbacks" id="jvmtiEventCallbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
11429 The event callback structure below is used to specify the handler function
a61af66fc99e Initial load
duke
parents:
diff changeset
11430 for events. It is set with the
a61af66fc99e Initial load
duke
parents:
diff changeset
11431 <functionlink id="SetEventCallbacks"></functionlink> function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11432 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
11433
a61af66fc99e Initial load
duke
parents:
diff changeset
11434 <event label="Single Step"
a61af66fc99e Initial load
duke
parents:
diff changeset
11435 id="SingleStep" const="JVMTI_EVENT_SINGLE_STEP" filtered="thread" num="60">
a61af66fc99e Initial load
duke
parents:
diff changeset
11436 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11437 Single step events allow the agent to trace thread execution
a61af66fc99e Initial load
duke
parents:
diff changeset
11438 at the finest granularity allowed by the VM. A single step event is
a61af66fc99e Initial load
duke
parents:
diff changeset
11439 generated whenever a thread reaches a new location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11440 Typically, single step events represent the completion of one VM
a61af66fc99e Initial load
duke
parents:
diff changeset
11441 instruction as defined in the <vmspeclink/>. However, some implementations
a61af66fc99e Initial load
duke
parents:
diff changeset
11442 may define locations differently. In any case the
a61af66fc99e Initial load
duke
parents:
diff changeset
11443 <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11444 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11445 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11446 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11447 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11448 No single step events are generated from within native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
11449 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11450 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11451 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11452 <required id="can_generate_single_step_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11453 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11454 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11455 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11456 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11457 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11458 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11459 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11460 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11461 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11462 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11463 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11464 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11465 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11466 Thread about to execution a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11467 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11468 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11469 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11470 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11471 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11472 Class of the method about to execute a new instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11473 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11474 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11475 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11476 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11477 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11478 Method about to execute a new instruction
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="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11482 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11483 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11484 Location of the new instruction
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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11488 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11489
a61af66fc99e Initial load
duke
parents:
diff changeset
11490 <event label="Breakpoint"
a61af66fc99e Initial load
duke
parents:
diff changeset
11491 id="Breakpoint" const="JVMTI_EVENT_BREAKPOINT" filtered="thread" num="62">
a61af66fc99e Initial load
duke
parents:
diff changeset
11492 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11493 Breakpoint events are generated whenever a thread reaches a location
a61af66fc99e Initial load
duke
parents:
diff changeset
11494 designated as a breakpoint with <functionlink id="SetBreakpoint"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11495 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11496 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11497 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11498 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11499 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11500 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11501 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11502 <required id="can_generate_breakpoint_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11503 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11504 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11505 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11506 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11507 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11508 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11509 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11510 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
11511 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11512 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11513 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11514 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11515 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11516 Thread that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11517 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11518 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11519 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11520 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11521 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11522 Class of the method that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11523 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11524 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11525 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11526 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11527 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11528 Method that hit the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11529 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11530 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11531 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11532 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11533 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11534 location of the breakpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11535 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11536 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11537 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11538 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11539
a61af66fc99e Initial load
duke
parents:
diff changeset
11540 <event label="Field Access"
a61af66fc99e Initial load
duke
parents:
diff changeset
11541 id="FieldAccess" const="JVMTI_EVENT_FIELD_ACCESS" filtered="thread" num="63">
a61af66fc99e Initial load
duke
parents:
diff changeset
11542 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11543 Field access events are generated whenever a thread accesses
a61af66fc99e Initial load
duke
parents:
diff changeset
11544 a field that was designated as a watchpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11545 with <functionlink id="SetFieldAccessWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11546 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11547 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11548 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11549 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11550 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11551 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11552 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11553 <required id="can_generate_field_access_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11554 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11555 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11556 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11557 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11558 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11559 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11560 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11561 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11562 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11563 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11564 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11565 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11566 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11567 Thread accessing the field
a61af66fc99e Initial load
duke
parents:
diff changeset
11568 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11569 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11570 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11571 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11572 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11573 Class of the method where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11574 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11575 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11576 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11577 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11578 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11579 Method where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11580 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11581 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11582 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11583 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11584 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11585 Location where the access is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11586 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11587 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11588 <param id="field_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11589 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11590 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11591 Class of the field being accessed
a61af66fc99e Initial load
duke
parents:
diff changeset
11592 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11593 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11594 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
11595 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11596 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11597 Object with the field being accessed if the field is an
a61af66fc99e Initial load
duke
parents:
diff changeset
11598 instance field; <code>NULL</code> otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
11599 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11600 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11601 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
11602 <jfieldID class="field_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11603 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11604 Field being accessed
a61af66fc99e Initial load
duke
parents:
diff changeset
11605 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11606 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11607 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11608 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11609
a61af66fc99e Initial load
duke
parents:
diff changeset
11610 <event label="Field Modification"
a61af66fc99e Initial load
duke
parents:
diff changeset
11611 id="FieldModification" const="JVMTI_EVENT_FIELD_MODIFICATION" filtered="thread" num="64">
a61af66fc99e Initial load
duke
parents:
diff changeset
11612 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11613 Field modification events are generated whenever a thread modifies
a61af66fc99e Initial load
duke
parents:
diff changeset
11614 a field that was designated as a watchpoint
a61af66fc99e Initial load
duke
parents:
diff changeset
11615 with <functionlink id="SetFieldModificationWatch"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11616 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11617 parameters uniquely identify the current location and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11618 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11619 available.
a61af66fc99e Initial load
duke
parents:
diff changeset
11620 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11621 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11622 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11623 <required id="can_generate_field_modification_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11624 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11625 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11626 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11627 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11628 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11629 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11630 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11631 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11632 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11633 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11634 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11635 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11636 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11637 Thread modifying the field
a61af66fc99e Initial load
duke
parents:
diff changeset
11638 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11639 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11640 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11641 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11642 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11643 Class of the method where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11644 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11645 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11646 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11647 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11648 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11649 Method where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11650 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11651 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11652 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
11653 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11654 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11655 Location where the modification is occurring
a61af66fc99e Initial load
duke
parents:
diff changeset
11656 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11657 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11658 <param id="field_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11659 <jclass field="field"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11660 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11661 Class of the field being modified
a61af66fc99e Initial load
duke
parents:
diff changeset
11662 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11663 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11664 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
11665 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11666 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11667 Object with the field being modified if the field is an
a61af66fc99e Initial load
duke
parents:
diff changeset
11668 instance field; <code>NULL</code> otherwise
a61af66fc99e Initial load
duke
parents:
diff changeset
11669 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11670 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11671 <param id="field">
a61af66fc99e Initial load
duke
parents:
diff changeset
11672 <jfieldID class="field_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11673 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11674 Field being modified
a61af66fc99e Initial load
duke
parents:
diff changeset
11675 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11676 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11677 <param id="signature_type">
a61af66fc99e Initial load
duke
parents:
diff changeset
11678 <char/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11679 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11680 Signature type of the new value
a61af66fc99e Initial load
duke
parents:
diff changeset
11681 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11682 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11683 <param id="new_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11684 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11685 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11686 The new value
a61af66fc99e Initial load
duke
parents:
diff changeset
11687 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11688 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11689 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11690 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11691
a61af66fc99e Initial load
duke
parents:
diff changeset
11692 <event label="Frame Pop"
a61af66fc99e Initial load
duke
parents:
diff changeset
11693 id="FramePop" const="JVMTI_EVENT_FRAME_POP" filtered="thread" num="61">
a61af66fc99e Initial load
duke
parents:
diff changeset
11694 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11695 Frame pop events are generated upon exit from a single method
a61af66fc99e Initial load
duke
parents:
diff changeset
11696 in a single frame as specified
a61af66fc99e Initial load
duke
parents:
diff changeset
11697 in a call to <functionlink id="NotifyFramePop"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11698 This is true whether termination is caused by
a61af66fc99e Initial load
duke
parents:
diff changeset
11699 executing its return instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11700 or by throwing an exception to its caller
a61af66fc99e Initial load
duke
parents:
diff changeset
11701 (see <paramlink id="was_popped_by_exception"></paramlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11702 However, frame pops caused by the <functionlink id="PopFrame"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11703 function are not reported.
a61af66fc99e Initial load
duke
parents:
diff changeset
11704 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11705 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11706 identifies the executable location in the returning method,
a61af66fc99e Initial load
duke
parents:
diff changeset
11707 immediately prior to the return.
a61af66fc99e Initial load
duke
parents:
diff changeset
11708 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11709 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11710 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11711 <required id="can_generate_frame_pop_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11712 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11713 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11714 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11715 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11716 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11717 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11718 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11719 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11720 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11721 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11722 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11723 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11724 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11725 Thread that is popping the frame
a61af66fc99e Initial load
duke
parents:
diff changeset
11726 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11727 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11728 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11729 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11730 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11731 Class of the method being popped
a61af66fc99e Initial load
duke
parents:
diff changeset
11732 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11733 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11734 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11735 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11736 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11737 Method being popped
a61af66fc99e Initial load
duke
parents:
diff changeset
11738 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11739 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11740 <param id="was_popped_by_exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
11741 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11742 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11743 True if frame was popped by a thrown exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11744 False if method exited through its return instruction.
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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11748 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11749
a61af66fc99e Initial load
duke
parents:
diff changeset
11750 <event label="Method Entry"
a61af66fc99e Initial load
duke
parents:
diff changeset
11751 id="MethodEntry" const="JVMTI_EVENT_METHOD_ENTRY" filtered="thread" num="65">
a61af66fc99e Initial load
duke
parents:
diff changeset
11752 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11753 Method entry events are generated upon entry of Java
a61af66fc99e Initial load
duke
parents:
diff changeset
11754 programming language methods (including native methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
11755 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11756 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11757 identifies the initial executable location in
a61af66fc99e Initial load
duke
parents:
diff changeset
11758 the method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11759 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11760 Enabling method
a61af66fc99e Initial load
duke
parents:
diff changeset
11761 entry or exit events will significantly degrade performance on many platforms and is thus
a61af66fc99e Initial load
duke
parents:
diff changeset
11762 not advised for performance critical usage (such as profiling).
a61af66fc99e Initial load
duke
parents:
diff changeset
11763 <internallink id="bci">Bytecode instrumentation</internallink> should be
a61af66fc99e Initial load
duke
parents:
diff changeset
11764 used in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
11765 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11766 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11767 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11768 <required id="can_generate_method_entry_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11769 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11770 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11771 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11772 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11773 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11774 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11775 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11776 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11777 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11778 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11779 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11780 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11781 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11782 Thread entering the method
a61af66fc99e Initial load
duke
parents:
diff changeset
11783 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11784 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11785 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11786 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11787 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11788 Class of the method being entered
a61af66fc99e Initial load
duke
parents:
diff changeset
11789 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11790 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11791 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11792 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11793 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11794 Method being entered
a61af66fc99e Initial load
duke
parents:
diff changeset
11795 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11796 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11797 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11798 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11799
a61af66fc99e Initial load
duke
parents:
diff changeset
11800 <event label="Method Exit"
a61af66fc99e Initial load
duke
parents:
diff changeset
11801 id="MethodExit" const="JVMTI_EVENT_METHOD_EXIT" filtered="thread" num="66">
a61af66fc99e Initial load
duke
parents:
diff changeset
11802 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11803 Method exit events are generated upon exit from Java
a61af66fc99e Initial load
duke
parents:
diff changeset
11804 programming language methods (including native methods).
a61af66fc99e Initial load
duke
parents:
diff changeset
11805 This is true whether termination is caused by
a61af66fc99e Initial load
duke
parents:
diff changeset
11806 executing its return instruction
a61af66fc99e Initial load
duke
parents:
diff changeset
11807 or by throwing an exception to its caller
a61af66fc99e Initial load
duke
parents:
diff changeset
11808 (see <paramlink id="was_popped_by_exception"></paramlink>).
a61af66fc99e Initial load
duke
parents:
diff changeset
11809 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11810 The <code>method</code> field uniquely identifies the
a61af66fc99e Initial load
duke
parents:
diff changeset
11811 method being entered or exited. The <code>frame</code> field provides
a61af66fc99e Initial load
duke
parents:
diff changeset
11812 access to the stack frame for the method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11813 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11814 The location reported by <functionlink id="GetFrameLocation"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11815 identifies the executable location in the returning method
a61af66fc99e Initial load
duke
parents:
diff changeset
11816 immediately prior to the return.
a61af66fc99e Initial load
duke
parents:
diff changeset
11817 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11818 Enabling method
a61af66fc99e Initial load
duke
parents:
diff changeset
11819 entry or exit events will significantly degrade performance on many platforms and is thus
a61af66fc99e Initial load
duke
parents:
diff changeset
11820 not advised for performance critical usage (such as profiling).
a61af66fc99e Initial load
duke
parents:
diff changeset
11821 <internallink id="bci">Bytecode instrumentation</internallink> should be
a61af66fc99e Initial load
duke
parents:
diff changeset
11822 used in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
11823 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11824 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11825 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11826 <required id="can_generate_method_exit_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11827 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11828 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11829 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11830 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11831 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11832 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11833 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11834 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11835 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11836 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11837 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11838 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11839 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11840 Thread exiting the method
a61af66fc99e Initial load
duke
parents:
diff changeset
11841 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11842 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11843 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11844 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11845 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11846 Class of the method being exited
a61af66fc99e Initial load
duke
parents:
diff changeset
11847 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11848 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11849 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11850 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11851 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11852 Method being exited
a61af66fc99e Initial load
duke
parents:
diff changeset
11853 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11854 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11855 <param id="was_popped_by_exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
11856 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11857 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11858 True if frame was popped by a thrown exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
11859 False if method exited through its return instruction.
a61af66fc99e Initial load
duke
parents:
diff changeset
11860 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11861 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11862 <param id="return_value">
a61af66fc99e Initial load
duke
parents:
diff changeset
11863 <jvalue/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11864 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11865 The return value of the method being exited.
a61af66fc99e Initial load
duke
parents:
diff changeset
11866 Undefined and should not be used if
a61af66fc99e Initial load
duke
parents:
diff changeset
11867 <paramlink id="was_popped_by_exception"></paramlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
11868 is true.
a61af66fc99e Initial load
duke
parents:
diff changeset
11869 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11870 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11871 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11872 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11873
a61af66fc99e Initial load
duke
parents:
diff changeset
11874 <event label="Native Method Bind" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
11875 id="NativeMethodBind" const="JVMTI_EVENT_NATIVE_METHOD_BIND" num="67">
a61af66fc99e Initial load
duke
parents:
diff changeset
11876 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11877 A Native Method Bind event is sent when a VM binds a
a61af66fc99e Initial load
duke
parents:
diff changeset
11878 Java programming language native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11879 to the address of a function that implements the native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11880 This will occur when the native method is called for the first time
a61af66fc99e Initial load
duke
parents:
diff changeset
11881 and also occurs when the JNI function <code>RegisterNatives</code> is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
11882 This event allows the bind to be redirected to an agent-specified
a61af66fc99e Initial load
duke
parents:
diff changeset
11883 proxy function.
a61af66fc99e Initial load
duke
parents:
diff changeset
11884 This event is not sent when the native method is unbound.
a61af66fc99e Initial load
duke
parents:
diff changeset
11885 Typically, this proxy function will need to be specific to a
a61af66fc99e Initial load
duke
parents:
diff changeset
11886 particular method or, to handle the general case, automatically
a61af66fc99e Initial load
duke
parents:
diff changeset
11887 generated assembly code, since after instrumentation code is
a61af66fc99e Initial load
duke
parents:
diff changeset
11888 executed the function at the original binding
a61af66fc99e Initial load
duke
parents:
diff changeset
11889 address will usually be invoked.
a61af66fc99e Initial load
duke
parents:
diff changeset
11890 The original binding can be restored or the redirection changed
a61af66fc99e Initial load
duke
parents:
diff changeset
11891 by use of the JNI function <code>RegisterNatives</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11892 Some events may be sent during the primordial phase, JNI and
a61af66fc99e Initial load
duke
parents:
diff changeset
11893 most of <jvmti/> cannot be used at this time but the method and
a61af66fc99e Initial load
duke
parents:
diff changeset
11894 address can be saved for use later.
a61af66fc99e Initial load
duke
parents:
diff changeset
11895 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11896 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11897 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11898 <required id="can_generate_native_method_bind_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11899 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11900 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11901 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11902 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11903 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11904 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11905 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11906 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11907 Will be <code>NULL</code> if sent during the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
11908 <functionlink id="GetPhase">phase</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11909 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11910 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11911 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11912 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11913 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11914 Thread requesting the bind
a61af66fc99e Initial load
duke
parents:
diff changeset
11915 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11916 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11917 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11918 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11919 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11920 Class of the method being bound
a61af66fc99e Initial load
duke
parents:
diff changeset
11921 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11922 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11923 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
11924 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11925 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11926 Native method being bound
a61af66fc99e Initial load
duke
parents:
diff changeset
11927 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11928 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11929 <param id="address">
a61af66fc99e Initial load
duke
parents:
diff changeset
11930 <outptr><void/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11931 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11932 The address the VM is about to bind to--that is, the
a61af66fc99e Initial load
duke
parents:
diff changeset
11933 address of the implementation of the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
11934 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11935 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11936 <param id="new_address_ptr">
a61af66fc99e Initial load
duke
parents:
diff changeset
11937 <agentbuf><void/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
11938 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11939 if the referenced address is changed (that is, if
a61af66fc99e Initial load
duke
parents:
diff changeset
11940 <code>*new_address_ptr</code> is set), the binding
a61af66fc99e Initial load
duke
parents:
diff changeset
11941 will instead be made to the supplied address.
a61af66fc99e Initial load
duke
parents:
diff changeset
11942 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11943 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11944 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11945 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
11946
a61af66fc99e Initial load
duke
parents:
diff changeset
11947 <event label="Exception"
a61af66fc99e Initial load
duke
parents:
diff changeset
11948 id="Exception" const="JVMTI_EVENT_EXCEPTION" filtered="thread" num="58">
a61af66fc99e Initial load
duke
parents:
diff changeset
11949 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11950 Exception events are generated whenever an exception is first detected
a61af66fc99e Initial load
duke
parents:
diff changeset
11951 in a Java programming language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
11952 Where "exception" means any <code>java.lang.Throwable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
11953 The exception may have been thrown by a Java programming language or native
a61af66fc99e Initial load
duke
parents:
diff changeset
11954 method, but in the case of native methods, the event is not generated
a61af66fc99e Initial load
duke
parents:
diff changeset
11955 until the exception is first seen by a Java programming language method. If an exception is
a61af66fc99e Initial load
duke
parents:
diff changeset
11956 set and cleared in a native method (and thus is never visible to Java programming language code),
a61af66fc99e Initial load
duke
parents:
diff changeset
11957 no exception event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
11958 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11959 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11960 parameters uniquely identify the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
11961 (where the exception was detected) and allow
a61af66fc99e Initial load
duke
parents:
diff changeset
11962 the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
11963 available. The <code>exception</code> field identifies the thrown
a61af66fc99e Initial load
duke
parents:
diff changeset
11964 exception object. The <code>catch_method</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11965 and <code>catch_location</code> identify the location of the catch clause,
a61af66fc99e Initial load
duke
parents:
diff changeset
11966 if any, that handles the thrown exception. If there is no such catch clause,
a61af66fc99e Initial load
duke
parents:
diff changeset
11967 each field is set to 0. There is no guarantee that the thread will ever
a61af66fc99e Initial load
duke
parents:
diff changeset
11968 reach this catch clause. If there are native methods on the call stack
a61af66fc99e Initial load
duke
parents:
diff changeset
11969 between the throw location and the catch clause, the exception may
a61af66fc99e Initial load
duke
parents:
diff changeset
11970 be reset by one of those native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
11971 Similarly, exceptions that are reported as uncaught (<code>catch_klass</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
11972 et al. set to 0) may in fact be caught by native code.
a61af66fc99e Initial load
duke
parents:
diff changeset
11973 Agents can check for these occurrences by monitoring
a61af66fc99e Initial load
duke
parents:
diff changeset
11974 <eventlink id="ExceptionCatch"></eventlink> events.
a61af66fc99e Initial load
duke
parents:
diff changeset
11975 Note that finally clauses are implemented as catch and re-throw. Therefore they
a61af66fc99e Initial load
duke
parents:
diff changeset
11976 will be reported in the catch location.
a61af66fc99e Initial load
duke
parents:
diff changeset
11977 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11978 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
11979 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11980 <required id="can_generate_exception_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
11981 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
11982 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
11983 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
11984 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11985 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
11986 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
11987 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11988 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
11989 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11990 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11991 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
11992 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11993 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11994 Thread generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
11995 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
11996 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
11997 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
11998 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
11999 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12000 Class generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12001 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12002 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12003 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12004 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12005 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12006 Method generating the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12007 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12008 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12009 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12010 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12011 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12012 Location where exception occurred
a61af66fc99e Initial load
duke
parents:
diff changeset
12013 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12014 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12015 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
12016 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12017 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12018 The exception being thrown
a61af66fc99e Initial load
duke
parents:
diff changeset
12019 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12020 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12021 <param id="catch_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12022 <jclass method="catch_method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12023 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12024 Class that will catch the exception, or <code>NULL</code> if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12025 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12026 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12027 <param id="catch_method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12028 <jmethodID class="catch_klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12029 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12030 Method that will catch the exception, or <code>NULL</code> if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12031 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12032 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12033 <param id="catch_location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12034 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12035 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12036 location which will catch the exception or zero if no known catch
a61af66fc99e Initial load
duke
parents:
diff changeset
12037 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12038 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12039 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12040 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12041
a61af66fc99e Initial load
duke
parents:
diff changeset
12042 <event label="Exception Catch"
a61af66fc99e Initial load
duke
parents:
diff changeset
12043 id="ExceptionCatch" const="JVMTI_EVENT_EXCEPTION_CATCH" filtered="thread" num="59">
a61af66fc99e Initial load
duke
parents:
diff changeset
12044 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12045 Exception catch events are generated whenever a thrown exception is caught.
a61af66fc99e Initial load
duke
parents:
diff changeset
12046 Where "exception" means any <code>java.lang.Throwable</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12047 If the exception is caught in a Java programming language method, the event is generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12048 when the catch clause is reached. If the exception is caught in a native
a61af66fc99e Initial load
duke
parents:
diff changeset
12049 method, the event is generated as soon as control is returned to a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12050 method. Exception catch events are generated for any exception for which
a61af66fc99e Initial load
duke
parents:
diff changeset
12051 a throw was detected in a Java programming language method.
a61af66fc99e Initial load
duke
parents:
diff changeset
12052 Note that finally clauses are implemented as catch and re-throw. Therefore they
a61af66fc99e Initial load
duke
parents:
diff changeset
12053 will generate exception catch events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12054 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12055 The <code>method</code> and <code>location</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12056 parameters uniquely identify the current location
a61af66fc99e Initial load
duke
parents:
diff changeset
12057 and allow the mapping to source file and line number when that information is
a61af66fc99e Initial load
duke
parents:
diff changeset
12058 available. For exceptions caught in a Java programming language method, the
a61af66fc99e Initial load
duke
parents:
diff changeset
12059 <code>exception</code> object identifies the exception object. Exceptions
a61af66fc99e Initial load
duke
parents:
diff changeset
12060 caught in native methods are not necessarily available by the time the
a61af66fc99e Initial load
duke
parents:
diff changeset
12061 exception catch is reported, so the <code>exception</code> field is set
a61af66fc99e Initial load
duke
parents:
diff changeset
12062 to <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12063 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12064 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12065 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12066 <required id="can_generate_exception_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12067 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12068 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12069 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12070 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12071 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12072 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12073 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12074 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12075 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12076 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12077 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12078 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12079 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12080 Thread catching the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12081 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12082 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12083 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12084 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12085 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12086 Class catching the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12087 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12088 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12089 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12090 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12091 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12092 Method catching the exception
a61af66fc99e Initial load
duke
parents:
diff changeset
12093 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12094 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12095 <param id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12096 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12097 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12098 Location where exception is being caught
a61af66fc99e Initial load
duke
parents:
diff changeset
12099 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12100 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12101 <param id="exception">
a61af66fc99e Initial load
duke
parents:
diff changeset
12102 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12103 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12104 Exception being caught
a61af66fc99e Initial load
duke
parents:
diff changeset
12105 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12106 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12107 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12108 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12109
a61af66fc99e Initial load
duke
parents:
diff changeset
12110 <event label="Thread Start"
a61af66fc99e Initial load
duke
parents:
diff changeset
12111 id="ThreadStart" const="JVMTI_EVENT_THREAD_START" num="52" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12112 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12113 Thread start events are generated by a new thread before its initial
a61af66fc99e Initial load
duke
parents:
diff changeset
12114 method executes.
a61af66fc99e Initial load
duke
parents:
diff changeset
12115 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12116 A thread may be listed in the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
12117 <functionlink id="GetAllThreads"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12118 before its thread start event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12119 It is possible for other events to be generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12120 on a thread before its thread start event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12121 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12122 The event is sent on the newly started <paramlink id="thread"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12123 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12124 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12125 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12126 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12127 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12128 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12129 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12130 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12131 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12132 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12133 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12134 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12135 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12136 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12137 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12138 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12139 Thread starting
a61af66fc99e Initial load
duke
parents:
diff changeset
12140 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12141 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12142 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12143 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12144
a61af66fc99e Initial load
duke
parents:
diff changeset
12145 <event label="Thread End"
a61af66fc99e Initial load
duke
parents:
diff changeset
12146 id="ThreadEnd" const="JVMTI_EVENT_THREAD_END" filtered="thread" num="53" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12147 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12148 Thread end events are generated by a terminating thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12149 after its initial method has finished execution.
a61af66fc99e Initial load
duke
parents:
diff changeset
12150 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12151 A thread may be listed in the array returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
12152 <functionlink id="GetAllThreads"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12153 after its thread end event is generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12154 No events are generated on a thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12155 after its thread end event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12156 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12157 The event is sent on the dying <paramlink id="thread"></paramlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12158 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12159 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12160 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12161 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12162 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12163 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12164 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12165 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12166 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12167 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12168 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12169 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12170 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12171 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12172 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12173 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12174 Thread ending
a61af66fc99e Initial load
duke
parents:
diff changeset
12175 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12176 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12177 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12178 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12179
a61af66fc99e Initial load
duke
parents:
diff changeset
12180 <event label="Class Load"
a61af66fc99e Initial load
duke
parents:
diff changeset
12181 id="ClassLoad" const="JVMTI_EVENT_CLASS_LOAD" filtered="thread" phase="start" num="55">
a61af66fc99e Initial load
duke
parents:
diff changeset
12182 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12183 A class load event is generated when a class is first loaded. The order
a61af66fc99e Initial load
duke
parents:
diff changeset
12184 of class load events generated by a particular thread are guaranteed
a61af66fc99e Initial load
duke
parents:
diff changeset
12185 to match the order of class loading within that thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12186 Array class creation does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12187 The creation of a primitive class (for example, java.lang.Integer.TYPE)
a61af66fc99e Initial load
duke
parents:
diff changeset
12188 does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12189 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12190 This event is sent at an early stage in loading the class. As
a61af66fc99e Initial load
duke
parents:
diff changeset
12191 a result the class should be used carefully. Note, for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
12192 that methods and fields are not yet loaded, so queries for methods,
a61af66fc99e Initial load
duke
parents:
diff changeset
12193 fields, subclasses, and so on will not give correct results.
a61af66fc99e Initial load
duke
parents:
diff changeset
12194 See "Loading of Classes and Interfaces" in the <i>Java Language
a61af66fc99e Initial load
duke
parents:
diff changeset
12195 Specification</i>. For most
a61af66fc99e Initial load
duke
parents:
diff changeset
12196 purposes the <eventlink id="ClassPrepare"></eventlink> event will
a61af66fc99e Initial load
duke
parents:
diff changeset
12197 be more useful.
a61af66fc99e Initial load
duke
parents:
diff changeset
12198 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12199 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12200 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12201 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12202 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12203 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12204 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12205 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12206 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12207 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12208 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12209 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12210 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12211 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12212 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12213 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12214 Thread loading the class
a61af66fc99e Initial load
duke
parents:
diff changeset
12215 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12216 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12217 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12218 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12219 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12220 Class being loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12221 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12222 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12223 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12224 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12225
a61af66fc99e Initial load
duke
parents:
diff changeset
12226 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
12227 <event label="Class Unload"
a61af66fc99e Initial load
duke
parents:
diff changeset
12228 id="ClassUnload" const="JVMTI_EVENT_CLASS_UNLOAD" num="57">
a61af66fc99e Initial load
duke
parents:
diff changeset
12229 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12230 A class unload event is generated when the class is about to be unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12231 Class unload events take place during garbage collection and must be
a61af66fc99e Initial load
duke
parents:
diff changeset
12232 handled extremely carefully. The garbage collector holds many locks
a61af66fc99e Initial load
duke
parents:
diff changeset
12233 and has suspended all other threads, so the event handler cannot depend
a61af66fc99e Initial load
duke
parents:
diff changeset
12234 on the ability to acquire any locks. The class unload event handler should
a61af66fc99e Initial load
duke
parents:
diff changeset
12235 do as little as possible, perhaps by queuing information to be processed
a61af66fc99e Initial load
duke
parents:
diff changeset
12236 later. In particular, the <code>jclass</code> should be used only in
a61af66fc99e Initial load
duke
parents:
diff changeset
12237 the JNI function <code>isSameObject</code> or in the following <jvmti/> functions:
a61af66fc99e Initial load
duke
parents:
diff changeset
12238 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12239 <li><functionlink id="GetClassSignature"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12240 <li><functionlink id="GetSourceFileName"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12241 <li><functionlink id="IsInterface"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12242 <li><functionlink id="IsArrayClass"></functionlink></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12243 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12244 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12245 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12246 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12247 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12248 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12249 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12250 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12251 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12252 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12253 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12254 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12255 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12256 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12257 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12258 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12259 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12260 Thread generating the class unload
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="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12264 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12265 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12266 Class being unloaded
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 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12270 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12271 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
12272
a61af66fc99e Initial load
duke
parents:
diff changeset
12273 <event label="Class Prepare"
a61af66fc99e Initial load
duke
parents:
diff changeset
12274 id="ClassPrepare" const="JVMTI_EVENT_CLASS_PREPARE" filtered="thread" phase="start" num="56">
a61af66fc99e Initial load
duke
parents:
diff changeset
12275 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12276 A class prepare event is generated when class preparation is complete.
a61af66fc99e Initial load
duke
parents:
diff changeset
12277 At this point, class fields, methods, and implemented interfaces are
a61af66fc99e Initial load
duke
parents:
diff changeset
12278 available, and no code from the class has been executed. Since array
a61af66fc99e Initial load
duke
parents:
diff changeset
12279 classes never have fields or methods, class prepare events are not
a61af66fc99e Initial load
duke
parents:
diff changeset
12280 generated for them. Class prepare events are not generated for
a61af66fc99e Initial load
duke
parents:
diff changeset
12281 primitive classes (for example, <code>java.lang.Integer.TYPE</code>).
a61af66fc99e Initial load
duke
parents:
diff changeset
12282 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12283 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12284 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12285 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12286 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12287 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12288 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12289 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12290 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12291 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12292 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12293 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12294 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12295 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12296 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12297 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12298 Thread generating the class prepare
a61af66fc99e Initial load
duke
parents:
diff changeset
12299 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12300 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12301 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12302 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12303 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12304 Class being prepared
a61af66fc99e Initial load
duke
parents:
diff changeset
12305 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12306 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12307 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12308 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12309
a61af66fc99e Initial load
duke
parents:
diff changeset
12310 <event label="Class File Load Hook" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
12311 id="ClassFileLoadHook" const="JVMTI_EVENT_CLASS_FILE_LOAD_HOOK" num="54">
a61af66fc99e Initial load
duke
parents:
diff changeset
12312 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12313 This event is sent when the VM obtains class file data,
a61af66fc99e Initial load
duke
parents:
diff changeset
12314 but before it constructs
a61af66fc99e Initial load
duke
parents:
diff changeset
12315 the in-memory representation for that class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12316 This event is also sent when the class is being modified by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12317 <functionlink id="RetransformClasses"/> function or
a61af66fc99e Initial load
duke
parents:
diff changeset
12318 the <functionlink id="RedefineClasses"/> function,
a61af66fc99e Initial load
duke
parents:
diff changeset
12319 called in any <jvmti/> environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
12320 The agent can instrument
a61af66fc99e Initial load
duke
parents:
diff changeset
12321 the existing class file data sent by the VM to include profiling/debugging hooks.
a61af66fc99e Initial load
duke
parents:
diff changeset
12322 See the description of
a61af66fc99e Initial load
duke
parents:
diff changeset
12323 <internallink id="bci">bytecode instrumentation</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12324 for usage information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12325 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12326 This event may be sent before the VM is initialized (the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
12327 <functionlink id="GetPhase">phase</functionlink>). During this time
a61af66fc99e Initial load
duke
parents:
diff changeset
12328 no VM resources should be created. Some classes might not be compatible
a61af66fc99e Initial load
duke
parents:
diff changeset
12329 with the function (eg. ROMized classes) and this event will not be
a61af66fc99e Initial load
duke
parents:
diff changeset
12330 generated for these classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
12331 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12332 The agent must allocate the space for the modified
a61af66fc99e Initial load
duke
parents:
diff changeset
12333 class file data buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
12334 using the memory allocation function
a61af66fc99e Initial load
duke
parents:
diff changeset
12335 <functionlink id="Allocate"></functionlink> because the
a61af66fc99e Initial load
duke
parents:
diff changeset
12336 VM is responsible for freeing the new class file data buffer
a61af66fc99e Initial load
duke
parents:
diff changeset
12337 using <functionlink id="Deallocate"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12338 Note that <functionlink id="Allocate"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12339 is permitted during the primordial phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
12340 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12341 If the agent wishes to modify the class file, it must set
a61af66fc99e Initial load
duke
parents:
diff changeset
12342 <code>new_class_data</code> to point
a61af66fc99e Initial load
duke
parents:
diff changeset
12343 to the newly instrumented class file data buffer and set
a61af66fc99e Initial load
duke
parents:
diff changeset
12344 <code>new_class_data_len</code> to the length of that
a61af66fc99e Initial load
duke
parents:
diff changeset
12345 buffer before returning
a61af66fc99e Initial load
duke
parents:
diff changeset
12346 from this call. If no modification is desired, the agent simply
a61af66fc99e Initial load
duke
parents:
diff changeset
12347 does not set <code>new_class_data</code>. If multiple agents
a61af66fc99e Initial load
duke
parents:
diff changeset
12348 have enabled this event the results are chained. That is, if
a61af66fc99e Initial load
duke
parents:
diff changeset
12349 <code>new_class_data</code> has been set, it becomes the
a61af66fc99e Initial load
duke
parents:
diff changeset
12350 <code>class_data</code> for the next agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12351 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12352 The order that this event is sent to each environment differs
a61af66fc99e Initial load
duke
parents:
diff changeset
12353 from other events.
a61af66fc99e Initial load
duke
parents:
diff changeset
12354 This event is sent to environments in the following order:
a61af66fc99e Initial load
duke
parents:
diff changeset
12355 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12356 <li><fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12357 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12358 incapable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12359 environments, in the
a61af66fc99e Initial load
duke
parents:
diff changeset
12360 order in which they were created
a61af66fc99e Initial load
duke
parents:
diff changeset
12361 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12362 <li><fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12363 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12364 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12365 environments, in the
a61af66fc99e Initial load
duke
parents:
diff changeset
12366 order in which they were created
a61af66fc99e Initial load
duke
parents:
diff changeset
12367 </li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12368 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12369 When triggered by <functionlink id="RetransformClasses"/>,
a61af66fc99e Initial load
duke
parents:
diff changeset
12370 this event is sent only to <fieldlink id="can_retransform_classes"
a61af66fc99e Initial load
duke
parents:
diff changeset
12371 struct="jvmtiCapabilities">retransformation
a61af66fc99e Initial load
duke
parents:
diff changeset
12372 capable</fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12373 environments.
a61af66fc99e Initial load
duke
parents:
diff changeset
12374 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12375 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12376 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12377 <capability id="can_generate_all_class_hook_events"></capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12378 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12379 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12380 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12381 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12382 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12383 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12384 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12385 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12386 Will be <code>NULL</code> if sent during the primordial
a61af66fc99e Initial load
duke
parents:
diff changeset
12387 <functionlink id="GetPhase">phase</functionlink>.
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_being_redefined">
a61af66fc99e Initial load
duke
parents:
diff changeset
12391 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12392 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12393 The class being
a61af66fc99e Initial load
duke
parents:
diff changeset
12394 <functionlink id="RedefineClasses">redefined</functionlink> or
a61af66fc99e Initial load
duke
parents:
diff changeset
12395 <functionlink id="RetransformClasses">retransformed</functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12396 <code>NULL</code> if sent by class load.
a61af66fc99e Initial load
duke
parents:
diff changeset
12397 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12398 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12399 <param id="loader">
a61af66fc99e Initial load
duke
parents:
diff changeset
12400 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12401 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12402 The class loader loading the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12403 <code>NULL</code> if the bootstrap class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
12404 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12405 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12406 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
12407 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12408 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12409 Name of class being loaded as a VM internal qualified name
a61af66fc99e Initial load
duke
parents:
diff changeset
12410 (for example, "java/util/List"), encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12411 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12412 Note: if the class is defined with a <code>NULL</code> name or
a61af66fc99e Initial load
duke
parents:
diff changeset
12413 without a name specified, <code>name</code> will be <code>NULL</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12414 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12415 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12416 <param id="protection_domain">
a61af66fc99e Initial load
duke
parents:
diff changeset
12417 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12418 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12419 The <code>ProtectionDomain</code> of the class.
a61af66fc99e Initial load
duke
parents:
diff changeset
12420 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12421 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12422 <param id="class_data_len">
a61af66fc99e Initial load
duke
parents:
diff changeset
12423 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12424 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12425 Length of current class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12426 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12427 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12428 <param id="class_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
12429 <vmbuf><uchar/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12430 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12431 Pointer to the current class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12432 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12433 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12434 <param id="new_class_data_len">
a61af66fc99e Initial load
duke
parents:
diff changeset
12435 <outptr><jint/></outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12436 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12437 Pointer to the length of the new class file data buffer.
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 <param id="new_class_data">
a61af66fc99e Initial load
duke
parents:
diff changeset
12441 <agentbuf incount="new_class_data_len"><uchar/></agentbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12442 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12443 Pointer to the pointer to the instrumented class file data buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
12444 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12445 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12446 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12447 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12448
a61af66fc99e Initial load
duke
parents:
diff changeset
12449 <event label="VM Start Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12450 id="VMStart" const="JVMTI_EVENT_VM_START" num="57" phase="start">
a61af66fc99e Initial load
duke
parents:
diff changeset
12451 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12452 The VM initialization event signals the start of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12453 At this time JNI is live but the VM is not yet fully initialized.
a61af66fc99e Initial load
duke
parents:
diff changeset
12454 Once this event is generated, the agent is free to call any JNI function.
a61af66fc99e Initial load
duke
parents:
diff changeset
12455 This event signals the beginning of the start phase,
a61af66fc99e Initial load
duke
parents:
diff changeset
12456 <jvmti/> functions permitted in the start phase may be called.
a61af66fc99e Initial load
duke
parents:
diff changeset
12457 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12458 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12459 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12460 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12461 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12462 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12463 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12464 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12465 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12466 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12467 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12468 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12469 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12470 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12471 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12472 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12473 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12474
a61af66fc99e Initial load
duke
parents:
diff changeset
12475 <event label="VM Initialization Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12476 id="VMInit" const="JVMTI_EVENT_VM_INIT" num="50">
a61af66fc99e Initial load
duke
parents:
diff changeset
12477 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12478 The VM initialization event signals the completion of VM initialization. Once
a61af66fc99e Initial load
duke
parents:
diff changeset
12479 this event is generated, the agent is free to call any JNI or <jvmti/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12480 function. The VM initialization event can be preceded by or can be concurrent
a61af66fc99e Initial load
duke
parents:
diff changeset
12481 with other events, but
a61af66fc99e Initial load
duke
parents:
diff changeset
12482 the preceding events should be handled carefully, if at all, because the
a61af66fc99e Initial load
duke
parents:
diff changeset
12483 VM has not completed its initialization. The thread start event for the
a61af66fc99e Initial load
duke
parents:
diff changeset
12484 main application thread is guaranteed not to occur until after the
a61af66fc99e Initial load
duke
parents:
diff changeset
12485 handler for the VM initialization event returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
12486 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12487 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12488 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12489 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12490 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12491 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12492 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12493 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12494 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12495 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12496 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12497 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12498 The JNI environment of the event (current) thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12499 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12500 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12501 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12502 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12503 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12504 The initial thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12505 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12506 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12507 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12508 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12509
a61af66fc99e Initial load
duke
parents:
diff changeset
12510 <event label="VM Death Event"
a61af66fc99e Initial load
duke
parents:
diff changeset
12511 id="VMDeath" const="JVMTI_EVENT_VM_DEATH" num="51">
a61af66fc99e Initial load
duke
parents:
diff changeset
12512 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12513 The VM death event notifies the agent of the termination of the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12514 No events will occur after the VMDeath event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12515 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12516 In the case of VM start-up failure, this event will not be sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12517 Note that <internallink id="onunload">Agent_OnUnload</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12518 will still be called in these cases.
a61af66fc99e Initial load
duke
parents:
diff changeset
12519 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12520 <origin>jvmdi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12521 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12522 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12523 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12524 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12525 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12526 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12527 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12528 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12529 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12530 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12531 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12532 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12533 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12534
a61af66fc99e Initial load
duke
parents:
diff changeset
12535 <event label="Compiled Method Load"
a61af66fc99e Initial load
duke
parents:
diff changeset
12536 id="CompiledMethodLoad" const="JVMTI_EVENT_COMPILED_METHOD_LOAD" num="68">
a61af66fc99e Initial load
duke
parents:
diff changeset
12537 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12538 Sent when a method is compiled and loaded into memory by the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
12539 If it is unloaded, the <eventlink id="CompiledMethodUnload"/> event is sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12540 If it is moved, the <eventlink id="CompiledMethodUnload"/> event is sent,
a61af66fc99e Initial load
duke
parents:
diff changeset
12541 followed by a new <code>CompiledMethodLoad</code> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12542 Note that a single method may have multiple compiled forms, and that
a61af66fc99e Initial load
duke
parents:
diff changeset
12543 this event will be sent for each form.
a61af66fc99e Initial load
duke
parents:
diff changeset
12544 Note also that several methods may be inlined into a single
a61af66fc99e Initial load
duke
parents:
diff changeset
12545 address range, and that this event will be sent for each method.
a61af66fc99e Initial load
duke
parents:
diff changeset
12546 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12547 These events can be sent after their initial occurrence with
a61af66fc99e Initial load
duke
parents:
diff changeset
12548 <functionlink id="GenerateEvents"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12549 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12550 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12551 <typedef id="jvmtiAddrLocationMap" label="Native address to location entry">
a61af66fc99e Initial load
duke
parents:
diff changeset
12552 <field id="start_address">
a61af66fc99e Initial load
duke
parents:
diff changeset
12553 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12554 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12555 Starting native address of code corresponding to a location
a61af66fc99e Initial load
duke
parents:
diff changeset
12556 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12557 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
12558 <field id="location">
a61af66fc99e Initial load
duke
parents:
diff changeset
12559 <jlocation/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12560 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12561 Corresponding location. See
a61af66fc99e Initial load
duke
parents:
diff changeset
12562 <functionlink id="GetJLocationFormat"></functionlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12563 for the meaning of location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12564 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12565 </field>
a61af66fc99e Initial load
duke
parents:
diff changeset
12566 </typedef>
a61af66fc99e Initial load
duke
parents:
diff changeset
12567 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12568 <required id="can_generate_compiled_method_load_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12569 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12570 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12571 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12572 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12573 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12574 Class of the method being compiled and loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12575 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12576 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12577 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12578 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12579 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12580 Method being compiled and loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12581 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12582 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12583 <param id="code_size">
a61af66fc99e Initial load
duke
parents:
diff changeset
12584 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12585 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12586 Size of compiled code
a61af66fc99e Initial load
duke
parents:
diff changeset
12587 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12588 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12589 <param id="code_addr">
a61af66fc99e Initial load
duke
parents:
diff changeset
12590 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12591 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12592 Address where compiled method code is loaded
a61af66fc99e Initial load
duke
parents:
diff changeset
12593 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12594 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12595 <param id="map_length">
a61af66fc99e Initial load
duke
parents:
diff changeset
12596 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12597 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12598 Number of <typelink id="jvmtiAddrLocationMap"></typelink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12599 entries in the address map.
a61af66fc99e Initial load
duke
parents:
diff changeset
12600 Zero if mapping information cannot be supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
12601 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12602 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12603 <param id="map">
a61af66fc99e Initial load
duke
parents:
diff changeset
12604 <vmbuf><struct>jvmtiAddrLocationMap</struct></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12605 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12606 Map from native addresses to location.
a61af66fc99e Initial load
duke
parents:
diff changeset
12607 The native address range of each entry is from
a61af66fc99e Initial load
duke
parents:
diff changeset
12608 <fieldlink id="start_address" struct="jvmtiAddrLocationMap"></fieldlink>
a61af66fc99e Initial load
duke
parents:
diff changeset
12609 to <code>start_address-1</code> of the next entry.
a61af66fc99e Initial load
duke
parents:
diff changeset
12610 <code>NULL</code> if mapping information cannot be supplied.
a61af66fc99e Initial load
duke
parents:
diff changeset
12611 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12612 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12613 <param id="compile_info">
a61af66fc99e Initial load
duke
parents:
diff changeset
12614 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12615 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12616 VM-specific compilation information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12617 The referenced compile information is managed by the VM
a61af66fc99e Initial load
duke
parents:
diff changeset
12618 and must not depend on the agent for collection.
a61af66fc99e Initial load
duke
parents:
diff changeset
12619 A VM implementation defines the content and lifetime
a61af66fc99e Initial load
duke
parents:
diff changeset
12620 of the information.
a61af66fc99e Initial load
duke
parents:
diff changeset
12621 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12622 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12623 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12624 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12625
a61af66fc99e Initial load
duke
parents:
diff changeset
12626 <event label="Compiled Method Unload"
a61af66fc99e Initial load
duke
parents:
diff changeset
12627 id="CompiledMethodUnload" const="JVMTI_EVENT_COMPILED_METHOD_UNLOAD" num="69">
a61af66fc99e Initial load
duke
parents:
diff changeset
12628 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12629 Sent when a compiled method is unloaded from memory.
a61af66fc99e Initial load
duke
parents:
diff changeset
12630 This event might not be sent on the thread which performed the unload.
a61af66fc99e Initial load
duke
parents:
diff changeset
12631 This event may be sent sometime after the unload occurs, but
a61af66fc99e Initial load
duke
parents:
diff changeset
12632 will be sent before the memory is reused
a61af66fc99e Initial load
duke
parents:
diff changeset
12633 by a newly generated compiled method. This event may be sent after
a61af66fc99e Initial load
duke
parents:
diff changeset
12634 the class is unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12635 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12636 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12637 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12638 <required id="can_generate_compiled_method_load_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12639 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12640 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12641 <param id="klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
12642 <jclass method="method"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12643 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12644 Class of the compiled method being unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12645 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12646 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12647 <param id="method">
a61af66fc99e Initial load
duke
parents:
diff changeset
12648 <jmethodID class="klass"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12649 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12650 Compiled method being unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12651 For identification of the compiled method only -- the class
a61af66fc99e Initial load
duke
parents:
diff changeset
12652 may be unloaded and therefore the method should not be used
a61af66fc99e Initial load
duke
parents:
diff changeset
12653 as an argument to further JNI or <jvmti/> functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
12654 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12655 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12656 <param id="code_addr">
a61af66fc99e Initial load
duke
parents:
diff changeset
12657 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12658 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12659 Address where compiled method code was loaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
12660 For identification of the compiled method only --
a61af66fc99e Initial load
duke
parents:
diff changeset
12661 the space may have been reclaimed.
a61af66fc99e Initial load
duke
parents:
diff changeset
12662 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12663 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12664 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12665 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12666
a61af66fc99e Initial load
duke
parents:
diff changeset
12667 <event label="Dynamic Code Generated" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
12668 id="DynamicCodeGenerated" const="JVMTI_EVENT_DYNAMIC_CODE_GENERATED" num="70">
a61af66fc99e Initial load
duke
parents:
diff changeset
12669 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12670 Sent when a component of the virtual machine is generated dynamically.
a61af66fc99e Initial load
duke
parents:
diff changeset
12671 This does not correspond to Java programming language code that is
a61af66fc99e Initial load
duke
parents:
diff changeset
12672 compiled--see <eventlink id="CompiledMethodLoad"></eventlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12673 This is for native code--for example, an interpreter that is generated
a61af66fc99e Initial load
duke
parents:
diff changeset
12674 differently depending on command-line options.
a61af66fc99e Initial load
duke
parents:
diff changeset
12675 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12676 Note that this event has no controlling capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
12677 If a VM cannot generate these events, it simply does not send any.
a61af66fc99e Initial load
duke
parents:
diff changeset
12678 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12679 These events can be sent after their initial occurrence with
a61af66fc99e Initial load
duke
parents:
diff changeset
12680 <functionlink id="GenerateEvents"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12681 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12682 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12683 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12684 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12685 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12686 <param id="name">
a61af66fc99e Initial load
duke
parents:
diff changeset
12687 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12688 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12689 Name of the code, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12690 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12691 Intended for display to an end-user.
a61af66fc99e Initial load
duke
parents:
diff changeset
12692 The name might not be unique.
a61af66fc99e Initial load
duke
parents:
diff changeset
12693 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12694 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12695 <param id="address">
a61af66fc99e Initial load
duke
parents:
diff changeset
12696 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12697 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12698 Native address of the code
a61af66fc99e Initial load
duke
parents:
diff changeset
12699 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12700 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12701 <param id="length">
a61af66fc99e Initial load
duke
parents:
diff changeset
12702 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12703 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12704 Length in bytes of the code
a61af66fc99e Initial load
duke
parents:
diff changeset
12705 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12706 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12707 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12708 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12709
a61af66fc99e Initial load
duke
parents:
diff changeset
12710 <event label="Data Dump Request"
a61af66fc99e Initial load
duke
parents:
diff changeset
12711 id="DataDumpRequest" const="JVMTI_EVENT_DATA_DUMP_REQUEST" num="71">
a61af66fc99e Initial load
duke
parents:
diff changeset
12712 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12713 Sent by the VM to request the agent to dump its data. This
a61af66fc99e Initial load
duke
parents:
diff changeset
12714 is just a hint and the agent need not react to this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12715 This is useful for processing command-line signals from users. For
a61af66fc99e Initial load
duke
parents:
diff changeset
12716 example, in the Java 2 SDK a CTRL-Break on Win32 and a CTRL-\ on Solaris
a61af66fc99e Initial load
duke
parents:
diff changeset
12717 causes the VM to send this event to the agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12718 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12719 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12720 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12721 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12722 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12723 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12724 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12725
a61af66fc99e Initial load
duke
parents:
diff changeset
12726 <event label="Monitor Contended Enter"
a61af66fc99e Initial load
duke
parents:
diff changeset
12727 id="MonitorContendedEnter" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTER" filtered="thread" num="75">
a61af66fc99e Initial load
duke
parents:
diff changeset
12728 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12729 Sent when a thread is attempting to enter a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12730 monitor already acquired by another thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12731 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12732 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12733 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12734 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12735 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12736 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12737 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12738 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12739 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12740 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12741 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12742 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12743 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12744 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12745 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12746 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12747 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12748 JNI local reference to the thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12749 attempting to enter the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12750 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12751 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12752 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12753 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12754 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12755 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12756 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12757 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12758 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12759 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12760
a61af66fc99e Initial load
duke
parents:
diff changeset
12761 <event label="Monitor Contended Entered"
a61af66fc99e Initial load
duke
parents:
diff changeset
12762 id="MonitorContendedEntered" const="JVMTI_EVENT_MONITOR_CONTENDED_ENTERED" filtered="thread" num="76">
a61af66fc99e Initial load
duke
parents:
diff changeset
12763 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12764 Sent when a thread enters a Java programming language
a61af66fc99e Initial load
duke
parents:
diff changeset
12765 monitor after waiting for it to be released by another thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12766 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12767 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12768 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12769 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12770 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12771 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12772 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12773 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12774 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12775 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12776 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12777 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12778 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12779 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12780 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12781 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12782 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12783 JNI local reference to the thread entering
a61af66fc99e Initial load
duke
parents:
diff changeset
12784 the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12785 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12786 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12787 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12788 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12789 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12790 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12791 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12792 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12793 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12794 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12795
a61af66fc99e Initial load
duke
parents:
diff changeset
12796 <event label="Monitor Wait"
a61af66fc99e Initial load
duke
parents:
diff changeset
12797 id="MonitorWait" const="JVMTI_EVENT_MONITOR_WAIT" filtered="thread" num="73">
a61af66fc99e Initial load
duke
parents:
diff changeset
12798 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12799 Sent when a thread is about to wait on an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12800 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12801 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12802 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12803 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12804 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12805 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12806 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12807 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12808 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12809 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12810 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12811 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12812 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12813 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12814 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12815 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12816 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12817 JNI local reference to the thread about to wait
a61af66fc99e Initial load
duke
parents:
diff changeset
12818 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12819 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12820 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12821 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12822 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12823 JNI local reference to the monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
12824 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12825 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12826 <param id="timeout">
a61af66fc99e Initial load
duke
parents:
diff changeset
12827 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12828 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12829 The number of milliseconds the thread will wait
a61af66fc99e Initial load
duke
parents:
diff changeset
12830 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12831 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12832 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12833 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12834
a61af66fc99e Initial load
duke
parents:
diff changeset
12835 <event label="Monitor Waited"
a61af66fc99e Initial load
duke
parents:
diff changeset
12836 id="MonitorWaited" const="JVMTI_EVENT_MONITOR_WAITED" filtered="thread" num="74">
a61af66fc99e Initial load
duke
parents:
diff changeset
12837 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12838 Sent when a thread finishes waiting on an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12839 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12840 <origin>jvmpi</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12841 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12842 <required id="can_generate_monitor_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12843 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12844 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12845 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12846 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12847 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12848 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12849 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12850 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12851 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12852 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12853 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12854 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12855 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12856 JNI local reference to the thread that was finished waiting
a61af66fc99e Initial load
duke
parents:
diff changeset
12857 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12858 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12859 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
12860 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12861 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12862 JNI local reference to the monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
12863 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12864 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12865 <param id="timed_out">
a61af66fc99e Initial load
duke
parents:
diff changeset
12866 <jboolean/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12867 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12868 True if the monitor timed out
a61af66fc99e Initial load
duke
parents:
diff changeset
12869 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12870 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12871 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12872 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12873
a61af66fc99e Initial load
duke
parents:
diff changeset
12874 <event label="Resource Exhausted"
a61af66fc99e Initial load
duke
parents:
diff changeset
12875 id="ResourceExhausted" const="JVMTI_EVENT_RESOURCE_EXHAUSTED" num="80"
a61af66fc99e Initial load
duke
parents:
diff changeset
12876 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
12877 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12878 Sent when a VM resource needed by a running application has been exhausted.
a61af66fc99e Initial load
duke
parents:
diff changeset
12879 Except as required by the optional capabilities, the set of resources
a61af66fc99e Initial load
duke
parents:
diff changeset
12880 which report exhaustion is implementation dependent.
a61af66fc99e Initial load
duke
parents:
diff changeset
12881 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12882 The following bit flags define the properties of the resource exhaustion:
a61af66fc99e Initial load
duke
parents:
diff changeset
12883 <constants id="jvmtiResourceExhaustionFlags"
a61af66fc99e Initial load
duke
parents:
diff changeset
12884 label="Resource Exhaustion Flags"
a61af66fc99e Initial load
duke
parents:
diff changeset
12885 kind="bits"
a61af66fc99e Initial load
duke
parents:
diff changeset
12886 since="1.1">
a61af66fc99e Initial load
duke
parents:
diff changeset
12887 <constant id="JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR" num="0x0001">
a61af66fc99e Initial load
duke
parents:
diff changeset
12888 After this event returns, the VM will throw a
a61af66fc99e Initial load
duke
parents:
diff changeset
12889 <code>java.lang.OutOfMemoryError</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12890 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12891 <constant id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP" num="0x0002">
a61af66fc99e Initial load
duke
parents:
diff changeset
12892 The VM was unable to allocate memory from the <tm>Java</tm>
a61af66fc99e Initial load
duke
parents:
diff changeset
12893 platform <i>heap</i>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12894 The <i>heap</i> is the runtime
a61af66fc99e Initial load
duke
parents:
diff changeset
12895 data area from which memory for all class instances and
a61af66fc99e Initial load
duke
parents:
diff changeset
12896 arrays are allocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
12897 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12898 <constant id="JVMTI_RESOURCE_EXHAUSTED_THREADS" num="0x0004">
a61af66fc99e Initial load
duke
parents:
diff changeset
12899 The VM was unable to create a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
12900 </constant>
a61af66fc99e Initial load
duke
parents:
diff changeset
12901 </constants>
a61af66fc99e Initial load
duke
parents:
diff changeset
12902 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12903 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12904 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12905 <capability id="can_generate_resource_exhaustion_heap_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
12906 Can generate events when the VM is unable to allocate memory from the
a61af66fc99e Initial load
duke
parents:
diff changeset
12907 <internallink id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP">heap</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12908 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12909 <capability id="can_generate_resource_exhaustion_threads_events">
a61af66fc99e Initial load
duke
parents:
diff changeset
12910 Can generate events when the VM is unable to
a61af66fc99e Initial load
duke
parents:
diff changeset
12911 <internallink id="JVMTI_RESOURCE_EXHAUSTED_THREADS">create
a61af66fc99e Initial load
duke
parents:
diff changeset
12912 a thread</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12913 </capability>
a61af66fc99e Initial load
duke
parents:
diff changeset
12914 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12915 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12916 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12917 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12918 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12919 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12920 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12921 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12922 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12923 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12924 <param id="flags">
a61af66fc99e Initial load
duke
parents:
diff changeset
12925 <jint/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12926 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12927 Flags defining the properties of the of resource exhaustion
a61af66fc99e Initial load
duke
parents:
diff changeset
12928 as specified by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12929 <internallink id="jvmtiResourceExhaustionFlags">Resource
a61af66fc99e Initial load
duke
parents:
diff changeset
12930 Exhaustion Flags</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12931 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12932 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12933 <param id="reserved">
a61af66fc99e Initial load
duke
parents:
diff changeset
12934 <vmbuf><void/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12935 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12936 Reserved.
a61af66fc99e Initial load
duke
parents:
diff changeset
12937 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12938 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12939 <param id="description">
a61af66fc99e Initial load
duke
parents:
diff changeset
12940 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
12941 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12942 Description of the resource exhaustion, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
12943 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
12944 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12945 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12946 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12947 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
12948
a61af66fc99e Initial load
duke
parents:
diff changeset
12949 <event label="VM Object Allocation"
a61af66fc99e Initial load
duke
parents:
diff changeset
12950 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
a61af66fc99e Initial load
duke
parents:
diff changeset
12951 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12952 Sent when a method causes the virtual machine to allocate an
a61af66fc99e Initial load
duke
parents:
diff changeset
12953 Object visible to Java programming language code and the
a61af66fc99e Initial load
duke
parents:
diff changeset
12954 allocation is not detectable by other intrumentation mechanisms.
a61af66fc99e Initial load
duke
parents:
diff changeset
12955 Generally object allocation should be detected by instrumenting
a61af66fc99e Initial load
duke
parents:
diff changeset
12956 the bytecodes of allocating methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
12957 Object allocation generated in native code by JNI function
a61af66fc99e Initial load
duke
parents:
diff changeset
12958 calls should be detected using
a61af66fc99e Initial load
duke
parents:
diff changeset
12959 <internallink id="jniIntercept">JNI function interception</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
12960 Some methods might not have associated bytecodes and are not
a61af66fc99e Initial load
duke
parents:
diff changeset
12961 native methods, they instead are executed directly by the
a61af66fc99e Initial load
duke
parents:
diff changeset
12962 VM. These methods should send this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12963 Virtual machines which are incapable of bytecode instrumentation
a61af66fc99e Initial load
duke
parents:
diff changeset
12964 for some or all of their methods can send this event.
a61af66fc99e Initial load
duke
parents:
diff changeset
12965 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12966 Typical examples where this event might be sent:
a61af66fc99e Initial load
duke
parents:
diff changeset
12967 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12968 <li>Reflection -- for example, <code>java.lang.Class.newInstance()</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12969 <li>Methods not represented by bytecodes -- for example, VM intrinsics and
a61af66fc99e Initial load
duke
parents:
diff changeset
12970 J2ME preloaded classes</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12971 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12972 Cases where this event would not be generated:
a61af66fc99e Initial load
duke
parents:
diff changeset
12973 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12974 <li>Allocation due to bytecodes -- for example, the <code>new</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
12975 and <code>newarray</code> VM instructions</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12976 <li>Allocation due to JNI function calls -- for example,
a61af66fc99e Initial load
duke
parents:
diff changeset
12977 <code>AllocObject</code></li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12978 <li>Allocations during VM initialization</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12979 <li>VM internal objects</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
12980 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
12981 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12982 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
12983 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12984 <required id="can_generate_vm_object_alloc_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
12985 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
12986 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
12987 <param id="jni_env">
a61af66fc99e Initial load
duke
parents:
diff changeset
12988 <outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12989 <struct>JNIEnv</struct>
a61af66fc99e Initial load
duke
parents:
diff changeset
12990 </outptr>
a61af66fc99e Initial load
duke
parents:
diff changeset
12991 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12992 The JNI environment of the event (current) thread
a61af66fc99e Initial load
duke
parents:
diff changeset
12993 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12994 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
12995 <param id="thread">
a61af66fc99e Initial load
duke
parents:
diff changeset
12996 <jthread/>
a61af66fc99e Initial load
duke
parents:
diff changeset
12997 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
12998 Thread allocating the object.
a61af66fc99e Initial load
duke
parents:
diff changeset
12999 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13000 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13001 <param id="object">
a61af66fc99e Initial load
duke
parents:
diff changeset
13002 <jobject/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13003 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13004 JNI local reference to the object that was allocated
a61af66fc99e Initial load
duke
parents:
diff changeset
13005 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13006 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13007 <param id="object_klass">
a61af66fc99e Initial load
duke
parents:
diff changeset
13008 <jclass/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13009 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13010 JNI local reference to the class of the object
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 <param id="size">
a61af66fc99e Initial load
duke
parents:
diff changeset
13014 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13015 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13016 Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13017 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13018 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13019 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13020 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13021
a61af66fc99e Initial load
duke
parents:
diff changeset
13022 <event label="Object Free"
a61af66fc99e Initial load
duke
parents:
diff changeset
13023 id="ObjectFree" const="JVMTI_EVENT_OBJECT_FREE" num="83">
a61af66fc99e Initial load
duke
parents:
diff changeset
13024 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13025 An Object Free event is sent when the garbage collector frees an object.
a61af66fc99e Initial load
duke
parents:
diff changeset
13026 Events are only sent for tagged objects--see
a61af66fc99e Initial load
duke
parents:
diff changeset
13027 <internallink id="Heap">heap functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13028 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13029 The event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13030 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13031 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13032 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13033 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13034 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13035 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13036 <required id="can_generate_object_free_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13037 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13038 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13039 <param id="tag">
a61af66fc99e Initial load
duke
parents:
diff changeset
13040 <jlong/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13041 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13042 The freed object's tag
a61af66fc99e Initial load
duke
parents:
diff changeset
13043 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13044 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13045 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13046 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13047
a61af66fc99e Initial load
duke
parents:
diff changeset
13048 <event label="Garbage Collection Start"
a61af66fc99e Initial load
duke
parents:
diff changeset
13049 id="GarbageCollectionStart" const="JVMTI_EVENT_GARBAGE_COLLECTION_START" num="81">
a61af66fc99e Initial load
duke
parents:
diff changeset
13050 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13051 A Garbage Collection Start event is sent when a full cycle
a61af66fc99e Initial load
duke
parents:
diff changeset
13052 garbage collection begins.
a61af66fc99e Initial load
duke
parents:
diff changeset
13053 Only stop-the-world collections are reported--that is, collections during
a61af66fc99e Initial load
duke
parents:
diff changeset
13054 which all threads cease to modify the state of the Java virtual machine.
a61af66fc99e Initial load
duke
parents:
diff changeset
13055 This means that some collectors will never generate these events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13056 This event is sent while the VM is still stopped, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
13057 the event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13058 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13059 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13060 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13061 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13062 This event is always sent as a matched pair with
a61af66fc99e Initial load
duke
parents:
diff changeset
13063 <eventlink id="GarbageCollectionFinish"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13064 (assuming both events are enabled) and no garbage collection
a61af66fc99e Initial load
duke
parents:
diff changeset
13065 events will occur between them.
a61af66fc99e Initial load
duke
parents:
diff changeset
13066 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13067 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13068 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13069 <required id="can_generate_garbage_collection_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13070 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13071 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13072 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13073 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13074
a61af66fc99e Initial load
duke
parents:
diff changeset
13075 <event label="Garbage Collection Finish"
a61af66fc99e Initial load
duke
parents:
diff changeset
13076 id="GarbageCollectionFinish" const="JVMTI_EVENT_GARBAGE_COLLECTION_FINISH" num="82">
a61af66fc99e Initial load
duke
parents:
diff changeset
13077 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13078 A Garbage Collection Finish event is sent when a full
a61af66fc99e Initial load
duke
parents:
diff changeset
13079 garbage collection cycle ends.
a61af66fc99e Initial load
duke
parents:
diff changeset
13080 This event is sent while the VM is still stopped, thus
a61af66fc99e Initial load
duke
parents:
diff changeset
13081 the event handler must not use JNI functions and
a61af66fc99e Initial load
duke
parents:
diff changeset
13082 must not use <jvmti/> functions except those which
a61af66fc99e Initial load
duke
parents:
diff changeset
13083 specifically allow such use (see the raw monitor, memory management,
a61af66fc99e Initial load
duke
parents:
diff changeset
13084 and environment local storage functions).
a61af66fc99e Initial load
duke
parents:
diff changeset
13085 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13086 Some agents may need to do post garbage collection operations that
a61af66fc99e Initial load
duke
parents:
diff changeset
13087 require the use of the disallowed <jvmti/> or JNI functions. For these
a61af66fc99e Initial load
duke
parents:
diff changeset
13088 cases an agent thread can be created which waits on a raw monitor,
a61af66fc99e Initial load
duke
parents:
diff changeset
13089 and the handler for the Garbage Collection Finish event simply
a61af66fc99e Initial load
duke
parents:
diff changeset
13090 notifies the raw monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13091 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13092 This event is always sent as a matched pair with
a61af66fc99e Initial load
duke
parents:
diff changeset
13093 <eventlink id="GarbageCollectionStart"/> (assuming both events are enabled).
a61af66fc99e Initial load
duke
parents:
diff changeset
13094 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13095 The most important use of this event is to provide timing information,
a61af66fc99e Initial load
duke
parents:
diff changeset
13096 and thus additional information is not required. However,
a61af66fc99e Initial load
duke
parents:
diff changeset
13097 information about the collection which is "free" should be included -
a61af66fc99e Initial load
duke
parents:
diff changeset
13098 what that information is needs to be determined.
a61af66fc99e Initial load
duke
parents:
diff changeset
13099 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13100 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13101 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13102 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13103 <required id="can_generate_garbage_collection_events"></required>
a61af66fc99e Initial load
duke
parents:
diff changeset
13104 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13105 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13106 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13107 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13108
a61af66fc99e Initial load
duke
parents:
diff changeset
13109 <elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
13110 <event label="Verbose Output" phase="any"
a61af66fc99e Initial load
duke
parents:
diff changeset
13111 id="VerboseOutput" const="JVMTI_EVENT_VERBOSE_OUTPUT" num="85">
a61af66fc99e Initial load
duke
parents:
diff changeset
13112 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13113 Send verbose messages as strings.
a61af66fc99e Initial load
duke
parents:
diff changeset
13114 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13115 This format is extremely fragile, as it can change with each
a61af66fc99e Initial load
duke
parents:
diff changeset
13116 platform, collector and version. Alternatives include:
a61af66fc99e Initial load
duke
parents:
diff changeset
13117 <ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13118 <li>building off Java programming language M and M APIs</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13119 <li>XML</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13120 <li>key/value pairs</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13121 <li>removing it</li>
a61af66fc99e Initial load
duke
parents:
diff changeset
13122 </ul>
a61af66fc99e Initial load
duke
parents:
diff changeset
13123 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13124 <issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13125 Though this seemed trivial to implement.
a61af66fc99e Initial load
duke
parents:
diff changeset
13126 In the RI it appears this will be quite complex.
a61af66fc99e Initial load
duke
parents:
diff changeset
13127 </issue>
a61af66fc99e Initial load
duke
parents:
diff changeset
13128 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13129 <origin>new</origin>
a61af66fc99e Initial load
duke
parents:
diff changeset
13130 <capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13131 </capabilities>
a61af66fc99e Initial load
duke
parents:
diff changeset
13132 <parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13133 <param id="flag">
a61af66fc99e Initial load
duke
parents:
diff changeset
13134 <enum>jvmtiVerboseFlag</enum>
a61af66fc99e Initial load
duke
parents:
diff changeset
13135 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13136 Which verbose output is being sent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13137 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13138 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13139 <param id="message">
a61af66fc99e Initial load
duke
parents:
diff changeset
13140 <vmbuf><char/></vmbuf>
a61af66fc99e Initial load
duke
parents:
diff changeset
13141 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13142 Message text, encoded as a
a61af66fc99e Initial load
duke
parents:
diff changeset
13143 <internallink id="mUTF">modified UTF-8</internallink> string.
a61af66fc99e Initial load
duke
parents:
diff changeset
13144 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13145 </param>
a61af66fc99e Initial load
duke
parents:
diff changeset
13146 </parameters>
a61af66fc99e Initial load
duke
parents:
diff changeset
13147 </event>
a61af66fc99e Initial load
duke
parents:
diff changeset
13148 </elide>
a61af66fc99e Initial load
duke
parents:
diff changeset
13149
a61af66fc99e Initial load
duke
parents:
diff changeset
13150 </eventsection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13151
a61af66fc99e Initial load
duke
parents:
diff changeset
13152 <datasection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13153 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13154 <jvmti/> extends the data types defined by JNI.
a61af66fc99e Initial load
duke
parents:
diff changeset
13155 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13156 <basetypes id="jniTypes" label="JNI Types Used in the JVM Tool Interface">
a61af66fc99e Initial load
duke
parents:
diff changeset
13157 <basetype id="jboolean">
a61af66fc99e Initial load
duke
parents:
diff changeset
13158 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13159 Holds a Java programming language <code>boolean</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13160 Unsigned 8 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13161 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13162 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13163 <basetype id="jint">
a61af66fc99e Initial load
duke
parents:
diff changeset
13164 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13165 Holds a Java programming language <code>int</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13166 Signed 32 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13167 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13168 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13169 <basetype id="jlong">
a61af66fc99e Initial load
duke
parents:
diff changeset
13170 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13171 Holds a Java programming language <code>long</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13172 Signed 64 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13173 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13174 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13175 <basetype id="jfloat">
a61af66fc99e Initial load
duke
parents:
diff changeset
13176 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13177 Holds a Java programming language <code>float</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13178 32 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13179 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13180 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13181 <basetype id="jdouble">
a61af66fc99e Initial load
duke
parents:
diff changeset
13182 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13183 Holds a Java programming language <code>double</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13184 64 bits.
a61af66fc99e Initial load
duke
parents:
diff changeset
13185 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13186 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13187 <basetype id="jobject">
a61af66fc99e Initial load
duke
parents:
diff changeset
13188 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13189 Holds a Java programming language object.
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="jclass">
a61af66fc99e Initial load
duke
parents:
diff changeset
13193 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13194 Holds a Java programming language class.
a61af66fc99e Initial load
duke
parents:
diff changeset
13195 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13196 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13197 <basetype id="jvalue">
a61af66fc99e Initial load
duke
parents:
diff changeset
13198 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13199 Is a union of all primitive types and <code>jobject</code>. Thus, holds any Java
a61af66fc99e Initial load
duke
parents:
diff changeset
13200 programming language value.
a61af66fc99e Initial load
duke
parents:
diff changeset
13201 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13202 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13203 <basetype id="jfieldID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13204 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13205 Identifies a Java programming language field.
a61af66fc99e Initial load
duke
parents:
diff changeset
13206 <code>jfieldID</code>s returned by <jvmti/> functions and events may be
a61af66fc99e Initial load
duke
parents:
diff changeset
13207 safely stored.
a61af66fc99e Initial load
duke
parents:
diff changeset
13208 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13209 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13210 <basetype id="jmethodID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13211 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13212 Identifies a Java programming language method, initializer, or constructor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13213 <code>jmethodID</code>s returned by <jvmti/> functions and events may be
a61af66fc99e Initial load
duke
parents:
diff changeset
13214 safely stored. However, if the class is unloaded, they become invalid
a61af66fc99e Initial load
duke
parents:
diff changeset
13215 and must not be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
13216 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13217 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13218 <basetype id="JNIEnv">
a61af66fc99e Initial load
duke
parents:
diff changeset
13219 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13220 Pointer to the JNI function table. Pointer to this (<code>JNIEnv *</code>)
a61af66fc99e Initial load
duke
parents:
diff changeset
13221 is a JNI environment.
a61af66fc99e Initial load
duke
parents:
diff changeset
13222 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13223 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13224 </basetypes>
a61af66fc99e Initial load
duke
parents:
diff changeset
13225
a61af66fc99e Initial load
duke
parents:
diff changeset
13226 <basetypes id="jvmtiTypes" label="JVM Tool Interface Base Types">
a61af66fc99e Initial load
duke
parents:
diff changeset
13227 <basetype id="jvmtiEnv">
a61af66fc99e Initial load
duke
parents:
diff changeset
13228 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13229 The <jvmti/> <internallink id="environments">environment</internallink> pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13230 See the <internallink id="FunctionSection">Function Section</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13231 <code>jvmtiEnv</code> points to the
a61af66fc99e Initial load
duke
parents:
diff changeset
13232 <internallink id="FunctionTable">function table</internallink> pointer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13233 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13234 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13235 <basetype id="jthread">
a61af66fc99e Initial load
duke
parents:
diff changeset
13236 <definition>typedef jobject jthread;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13237 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13238 Subtype of <datalink id="jobject"></datalink> that holds a thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13239 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13240 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13241 <basetype id="jthreadGroup">
a61af66fc99e Initial load
duke
parents:
diff changeset
13242 <definition>typedef jobject jthreadGroup;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13243 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13244 Subtype of <datalink id="jobject"></datalink> that holds a thread group.
a61af66fc99e Initial load
duke
parents:
diff changeset
13245 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13246 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13247 <basetype id="jlocation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13248 <definition>typedef jlong jlocation;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13249 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13250 A 64 bit value, representing a monotonically increasing
a61af66fc99e Initial load
duke
parents:
diff changeset
13251 executable position within a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13252 <code>-1</code> indicates a native method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13253 See <functionlink id="GetJLocationFormat"></functionlink> for the format on a
a61af66fc99e Initial load
duke
parents:
diff changeset
13254 given VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
13255 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13256 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13257 <basetype id="jrawMonitorID">
a61af66fc99e Initial load
duke
parents:
diff changeset
13258 <definition>struct _jrawMonitorID;
a61af66fc99e Initial load
duke
parents:
diff changeset
13259 typedef struct _jrawMonitorID *jrawMonitorID;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13260 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13261 A raw monitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13262 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13263 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13264 <basetype id="jvmtiError">
a61af66fc99e Initial load
duke
parents:
diff changeset
13265 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13266 Holds an error return code.
a61af66fc99e Initial load
duke
parents:
diff changeset
13267 See the <internallink id="ErrorSection">Error section</internallink> for possible values.
a61af66fc99e Initial load
duke
parents:
diff changeset
13268 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13269 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
13270 JVMTI_ERROR_NONE = 0,
a61af66fc99e Initial load
duke
parents:
diff changeset
13271 JVMTI_ERROR_INVALID_THREAD = 10,
a61af66fc99e Initial load
duke
parents:
diff changeset
13272 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13273 } jvmtiError;
a61af66fc99e Initial load
duke
parents:
diff changeset
13274 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13275 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13276 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13277 <basetype id="jvmtiEvent">
a61af66fc99e Initial load
duke
parents:
diff changeset
13278 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13279 An identifier for an event type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13280 See the <internallink id="EventSection">Event section</internallink> for possible values.
a61af66fc99e Initial load
duke
parents:
diff changeset
13281 It is guaranteed that future versions of this specification will
a61af66fc99e Initial load
duke
parents:
diff changeset
13282 never assign zero as an event type identifier.
a61af66fc99e Initial load
duke
parents:
diff changeset
13283 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13284 typedef enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
13285 JVMTI_EVENT_SINGLE_STEP = 1,
a61af66fc99e Initial load
duke
parents:
diff changeset
13286 JVMTI_EVENT_BREAKPOINT = 2,
a61af66fc99e Initial load
duke
parents:
diff changeset
13287 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13288 } jvmtiEvent;
a61af66fc99e Initial load
duke
parents:
diff changeset
13289 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13290 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13291 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13292 <basetype id="jvmtiEventCallbacks">
a61af66fc99e Initial load
duke
parents:
diff changeset
13293 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13294 The callbacks used for events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13295 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13296 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
13297 jvmtiEventVMInit VMInit;
a61af66fc99e Initial load
duke
parents:
diff changeset
13298 jvmtiEventVMDeath VMDeath;
a61af66fc99e Initial load
duke
parents:
diff changeset
13299 ...
a61af66fc99e Initial load
duke
parents:
diff changeset
13300 } jvmtiEventCallbacks;
a61af66fc99e Initial load
duke
parents:
diff changeset
13301 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13302 See <internallink id="jvmtiEventCallbacks">event callbacks</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13303 for the complete structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
13304 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13305 Where, for example, the VM initialization callback is defined:
a61af66fc99e Initial load
duke
parents:
diff changeset
13306 <example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13307 typedef void (JNICALL *jvmtiEventVMInit)
a61af66fc99e Initial load
duke
parents:
diff changeset
13308 (jvmtiEnv *jvmti_env,
a61af66fc99e Initial load
duke
parents:
diff changeset
13309 JNIEnv* jni_env,
a61af66fc99e Initial load
duke
parents:
diff changeset
13310 jthread thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
13311 </example>
a61af66fc99e Initial load
duke
parents:
diff changeset
13312 See the individual events for the callback function definition.
a61af66fc99e Initial load
duke
parents:
diff changeset
13313 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13314 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13315 <basetype id="jniNativeInterface">
a61af66fc99e Initial load
duke
parents:
diff changeset
13316 <definition>typedef struct JNINativeInterface_ jniNativeInterface;</definition>
a61af66fc99e Initial load
duke
parents:
diff changeset
13317 <description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13318 Typedef for the JNI function table <code>JNINativeInterface</code>
a61af66fc99e Initial load
duke
parents:
diff changeset
13319 defined in the
a61af66fc99e Initial load
duke
parents:
diff changeset
13320 <externallink id="http://java.sun.com/javase/6/docs/guide/jni/spec/functions.html#wp23720">JNI Specification</externallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13321 The JNI reference implementation defines this with an underscore.
a61af66fc99e Initial load
duke
parents:
diff changeset
13322 </description>
a61af66fc99e Initial load
duke
parents:
diff changeset
13323 </basetype>
a61af66fc99e Initial load
duke
parents:
diff changeset
13324 </basetypes>
a61af66fc99e Initial load
duke
parents:
diff changeset
13325
a61af66fc99e Initial load
duke
parents:
diff changeset
13326 </datasection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13327
a61af66fc99e Initial load
duke
parents:
diff changeset
13328 <issuessection label="Issues">
a61af66fc99e Initial load
duke
parents:
diff changeset
13329 <intro id="suspendRequired" label="Resolved Issue: Suspend - Required or Automatic">
a61af66fc99e Initial load
duke
parents:
diff changeset
13330 JVMDI requires that the agent suspend threads before calling
a61af66fc99e Initial load
duke
parents:
diff changeset
13331 certain sensitive functions. JVMPI requires garbage collection to be
a61af66fc99e Initial load
duke
parents:
diff changeset
13332 disabled before calling certain sensitive functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13333 It was suggested that rather than have this requirement, that
a61af66fc99e Initial load
duke
parents:
diff changeset
13334 VM place itself in a suitable state before performing an
a61af66fc99e Initial load
duke
parents:
diff changeset
13335 operation. This makes considerable sense since each VM
a61af66fc99e Initial load
duke
parents:
diff changeset
13336 knows its requirements and can most easily arrange a
a61af66fc99e Initial load
duke
parents:
diff changeset
13337 safe state.
a61af66fc99e Initial load
duke
parents:
diff changeset
13338 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13339 The ability to externally suspend/resume threads will, of
a61af66fc99e Initial load
duke
parents:
diff changeset
13340 course, remain. The ability to enable/disable garbage collection will not.
a61af66fc99e Initial load
duke
parents:
diff changeset
13341 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13342 This issue is resolved--suspend will not
a61af66fc99e Initial load
duke
parents:
diff changeset
13343 be required. The spec has been updated to reflect this.
a61af66fc99e Initial load
duke
parents:
diff changeset
13344 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13345
a61af66fc99e Initial load
duke
parents:
diff changeset
13346 <intro id="stackSampling" label="Resolved Issue: Call Stack Sampling">
a61af66fc99e Initial load
duke
parents:
diff changeset
13347 There are a variety of approaches to sampling call stacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13348 The biggest bifurcation is between VM controlled and agent
a61af66fc99e Initial load
duke
parents:
diff changeset
13349 controlled.
a61af66fc99e Initial load
duke
parents:
diff changeset
13350 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13351 This issue is resolved--agent controlled
a61af66fc99e Initial load
duke
parents:
diff changeset
13352 sampling will be the approach.
a61af66fc99e Initial load
duke
parents:
diff changeset
13353 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13354
a61af66fc99e Initial load
duke
parents:
diff changeset
13355 <intro id="threadRepresentation" label="Resolved Issue: Thread Representation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13356 JVMDI represents threads as jthread. JVMPI primarily
a61af66fc99e Initial load
duke
parents:
diff changeset
13357 uses JNIEnv* to represent threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13358 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13359 The Expert Group has chosen jthread as the representation
a61af66fc99e Initial load
duke
parents:
diff changeset
13360 for threads in <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13361 JNIEnv* is sent by
a61af66fc99e Initial load
duke
parents:
diff changeset
13362 events since it is needed to JNI functions. JNIEnv, per the
a61af66fc99e Initial load
duke
parents:
diff changeset
13363 JNI spec, are not supposed to be used outside their thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13364 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13365
a61af66fc99e Initial load
duke
parents:
diff changeset
13366 <intro id="design" label="Resolved Issue: Method Representation">
a61af66fc99e Initial load
duke
parents:
diff changeset
13367 The JNI spec allows an implementation to depend on jclass/jmethodID
a61af66fc99e Initial load
duke
parents:
diff changeset
13368 pairs, rather than simply a jmethodID, to reference a method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13369 JVMDI, for consistency, choose the same representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13370 JVMPI, however, specifies that a jmethodID alone maps to a
a61af66fc99e Initial load
duke
parents:
diff changeset
13371 method. Both of the Sun <tm>J2SE</tm> virtual machines (Classic and <tm>HotSpot</tm>) store
a61af66fc99e Initial load
duke
parents:
diff changeset
13372 pointers in jmethodIDs, and as a result, a jmethodID is sufficient.
a61af66fc99e Initial load
duke
parents:
diff changeset
13373 In fact, any JVM implementation that supports JVMPI must have
a61af66fc99e Initial load
duke
parents:
diff changeset
13374 such a representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13375 <jvmti/> will use jmethodID as a unique representation of a method
a61af66fc99e Initial load
duke
parents:
diff changeset
13376 (no jclass is used).
a61af66fc99e Initial load
duke
parents:
diff changeset
13377 There should be efficiency gains, particularly in
a61af66fc99e Initial load
duke
parents:
diff changeset
13378 functionality like stack dumping, to this representation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13379 <p/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13380 Note that fields were not used in JVMPI and that the access profile
a61af66fc99e Initial load
duke
parents:
diff changeset
13381 of fields differs from methods--for implementation efficiency
a61af66fc99e Initial load
duke
parents:
diff changeset
13382 reasons, a jclass/jfieldID pair will still be needed for field
a61af66fc99e Initial load
duke
parents:
diff changeset
13383 reference.
a61af66fc99e Initial load
duke
parents:
diff changeset
13384 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13385
a61af66fc99e Initial load
duke
parents:
diff changeset
13386 <intro id="localReferenceIssue" label="Resolved Issue: Local References">
a61af66fc99e Initial load
duke
parents:
diff changeset
13387 Functions return local references.
a61af66fc99e Initial load
duke
parents:
diff changeset
13388 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13389
a61af66fc99e Initial load
duke
parents:
diff changeset
13390 <intro id="frameRep" label="Resolved Issue: Representation of frames">
a61af66fc99e Initial load
duke
parents:
diff changeset
13391 In JVMDI, a frame ID is used to represent a frame. Problem with this
a61af66fc99e Initial load
duke
parents:
diff changeset
13392 is that a VM must track when a frame becomes invalid, a far better
a61af66fc99e Initial load
duke
parents:
diff changeset
13393 approach, and the one used in <jvmti/>, is to reference frames by depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
13394 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13395
a61af66fc99e Initial load
duke
parents:
diff changeset
13396 <intro id="requiredCapabilities" label="Issue: Required Capabilities">
a61af66fc99e Initial load
duke
parents:
diff changeset
13397 Currently, having a required capabilities means that the functionality
a61af66fc99e Initial load
duke
parents:
diff changeset
13398 is optional. Capabilities are useful even for required functionality
a61af66fc99e Initial load
duke
parents:
diff changeset
13399 since they can inform the VM is needed set-up. Thus, there should be
a61af66fc99e Initial load
duke
parents:
diff changeset
13400 a set of capabilities that a conformant implementation must provide
a61af66fc99e Initial load
duke
parents:
diff changeset
13401 (if requested during Agent_OnLoad).
a61af66fc99e Initial load
duke
parents:
diff changeset
13402 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13403
a61af66fc99e Initial load
duke
parents:
diff changeset
13404 <intro id="taghint" label="Proposal: add tag hint function">
a61af66fc99e Initial load
duke
parents:
diff changeset
13405 A hint of the percentage of objects that will be tagged would
a61af66fc99e Initial load
duke
parents:
diff changeset
13406 help the VM pick a good implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13407 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13408
a61af66fc99e Initial load
duke
parents:
diff changeset
13409 <intro id="moreMonitorQueries" label="Request: More Monitor Quires">
a61af66fc99e Initial load
duke
parents:
diff changeset
13410 How difficult or easy would be to extend the monitor_info category to include
a61af66fc99e Initial load
duke
parents:
diff changeset
13411 <pre>
a61af66fc99e Initial load
duke
parents:
diff changeset
13412 - current number of monitors
a61af66fc99e Initial load
duke
parents:
diff changeset
13413 - enumeration of monitors
a61af66fc99e Initial load
duke
parents:
diff changeset
13414 - enumeration of threads waiting on a given monitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13415 </pre>
a61af66fc99e Initial load
duke
parents:
diff changeset
13416 The reason for my question is the fact that current get_monitor_info support
a61af66fc99e Initial load
duke
parents:
diff changeset
13417 requires the agent to specify a given thread to get the info which is probably
a61af66fc99e Initial load
duke
parents:
diff changeset
13418 OK in the profiling/debugging space, while in the monitoring space the agent
a61af66fc99e Initial load
duke
parents:
diff changeset
13419 could be watching the monitor list and then decide which thread to ask for
a61af66fc99e Initial load
duke
parents:
diff changeset
13420 the info. You might ask why is this important for monitoring .... I think it
a61af66fc99e Initial load
duke
parents:
diff changeset
13421 can aid in the detection/prediction of application contention caused by hot-locks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13422 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13423 </issuessection>
a61af66fc99e Initial load
duke
parents:
diff changeset
13424
a61af66fc99e Initial load
duke
parents:
diff changeset
13425 <changehistory id="ChangeHistory" update="09/05/07">
a61af66fc99e Initial load
duke
parents:
diff changeset
13426 <intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13427 The <jvmti/> specification is an evolving document with major, minor,
a61af66fc99e Initial load
duke
parents:
diff changeset
13428 and micro version numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13429 A released version of the specification is uniquely identified
a61af66fc99e Initial load
duke
parents:
diff changeset
13430 by its major and minor version.
a61af66fc99e Initial load
duke
parents:
diff changeset
13431 The functions, events, and capabilities in this specification
a61af66fc99e Initial load
duke
parents:
diff changeset
13432 indicate a "Since" value which is the major and minor version in
a61af66fc99e Initial load
duke
parents:
diff changeset
13433 which it was introduced.
a61af66fc99e Initial load
duke
parents:
diff changeset
13434 The version of the specification implemented by the VM can
a61af66fc99e Initial load
duke
parents:
diff changeset
13435 be retrieved at runtime with the <functionlink id="GetVersionNumber"/>
a61af66fc99e Initial load
duke
parents:
diff changeset
13436 function.
a61af66fc99e Initial load
duke
parents:
diff changeset
13437 </intro>
a61af66fc99e Initial load
duke
parents:
diff changeset
13438 <change date="14 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13439 Converted to XML document.
a61af66fc99e Initial load
duke
parents:
diff changeset
13440 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13441 <change date="14 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13442 Elided heap dump functions (for now) since what was there
a61af66fc99e Initial load
duke
parents:
diff changeset
13443 was wrong.
a61af66fc99e Initial load
duke
parents:
diff changeset
13444 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13445 <change date="18 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13446 Added detail throughout.
a61af66fc99e Initial load
duke
parents:
diff changeset
13447 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13448 <change date="18 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13449 Changed JVMTI_THREAD_STATUS_RUNNING to JVMTI_THREAD_STATUS_RUNNABLE.
a61af66fc99e Initial load
duke
parents:
diff changeset
13450 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13451 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13452 Added AsyncGetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13453 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13454 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13455 Added jframeID return to GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13456 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13457 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13458 Elided GetCurrentFrame and GetCallingFrame functions (for now) since what was there
a61af66fc99e Initial load
duke
parents:
diff changeset
13459 since they are redundant with GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13460 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13461 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13462 Elided ClearAllBreakpoints since it has always been redundant.
a61af66fc99e Initial load
duke
parents:
diff changeset
13463 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13464 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13465 Added GetSystemProperties.
a61af66fc99e Initial load
duke
parents:
diff changeset
13466 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13467 <change date="19 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13468 Changed the thread local storage functions to use jthread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13469 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13470 <change date="20 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13471 Added GetJLocationFormat.
a61af66fc99e Initial load
duke
parents:
diff changeset
13472 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13473 <change date="22 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13474 Added events and introductory text.
a61af66fc99e Initial load
duke
parents:
diff changeset
13475 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13476 <change date="22 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13477 Cross reference type and constant definitions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13478 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13479 <change date="24 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13480 Added DTD.
a61af66fc99e Initial load
duke
parents:
diff changeset
13481 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13482 <change date="24 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13483 Added capabilities function section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13484 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13485 <change date="29 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13486 Assign capabilities to each function and event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13487 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13488 <change date="29 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13489 Add <internallink id="jniIntercept">JNI interception functions</internallink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13490 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13491 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13492 Auto generate SetEventNotificationMode capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13493 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13494 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13495 Add <eventlink id="VMObjectAlloc"></eventlink> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13496 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13497 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13498 Add <eventlink id="DynamicCodeGenerated"></eventlink> event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13499 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13500 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13501 Add const to declarations.
a61af66fc99e Initial load
duke
parents:
diff changeset
13502 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13503 <change date="30 Nov 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13504 Change method exit and frame pop to send on exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
13505 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13506 <change date="1 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13507 Add ForceGarbageCollection.
a61af66fc99e Initial load
duke
parents:
diff changeset
13508 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13509 <change date="2 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13510 Redo Xrun section; clarify GetStackTrace and add example;
a61af66fc99e Initial load
duke
parents:
diff changeset
13511 Fix width problems; use "agent" consistently.
a61af66fc99e Initial load
duke
parents:
diff changeset
13512 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13513 <change date="8 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13514 Remove previous start-up intro.
a61af66fc99e Initial load
duke
parents:
diff changeset
13515 Add <internallink id="environments"><jvmti/> Environments</internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13516 section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13517 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13518 <change date="8 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13519 Add <functionlink id="DisposeEnvironment"></functionlink>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13520 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13521 <change date="9 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13522 Numerous minor updates.
a61af66fc99e Initial load
duke
parents:
diff changeset
13523 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13524 <change date="15 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13525 Add heap profiling functions added:
a61af66fc99e Initial load
duke
parents:
diff changeset
13526 get/set annotation, iterate live objects/heap.
a61af66fc99e Initial load
duke
parents:
diff changeset
13527 Add heap profiling functions place holder added:
a61af66fc99e Initial load
duke
parents:
diff changeset
13528 heap roots.
a61af66fc99e Initial load
duke
parents:
diff changeset
13529 Heap profiling event added: object free.
a61af66fc99e Initial load
duke
parents:
diff changeset
13530 Heap profiling event redesigned: vm object allocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13531 Heap profiling event placeholders added: garbage collection start/finish.
a61af66fc99e Initial load
duke
parents:
diff changeset
13532 Native method bind event added.
a61af66fc99e Initial load
duke
parents:
diff changeset
13533 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13534 <change date="19 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13535 Revamp suspend/resume functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13536 Add origin information with jvmdi tag.
a61af66fc99e Initial load
duke
parents:
diff changeset
13537 Misc fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13538 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13539 <change date="24 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13540 Add semantics to types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13541 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13542 <change date="27 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13543 Add local reference section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13544 Autogenerate parameter descriptions from types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13545 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13546 <change date="28 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13547 Document that RunAgentThread sends threadStart.
a61af66fc99e Initial load
duke
parents:
diff changeset
13548 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13549 <change date="29 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13550 Remove redundant local ref and dealloc warning.
a61af66fc99e Initial load
duke
parents:
diff changeset
13551 Convert GetRawMonitorName to allocated buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
13552 Add GenerateEvents.
a61af66fc99e Initial load
duke
parents:
diff changeset
13553 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13554 <change date="30 Dec 2002">
a61af66fc99e Initial load
duke
parents:
diff changeset
13555 Make raw monitors a type and rename to "jrawMonitorID".
a61af66fc99e Initial load
duke
parents:
diff changeset
13556 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13557 <change date="1 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13558 Include origin information.
a61af66fc99e Initial load
duke
parents:
diff changeset
13559 Clean-up JVMDI issue references.
a61af66fc99e Initial load
duke
parents:
diff changeset
13560 Remove Deallocate warnings which are now automatically generated.
a61af66fc99e Initial load
duke
parents:
diff changeset
13561 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13562 <change date="2 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13563 Fix representation issues for jthread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13564 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13565 <change date="3 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13566 Make capabilities buffered out to 64 bits - and do it automatically.
a61af66fc99e Initial load
duke
parents:
diff changeset
13567 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13568 <change date="4 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13569 Make constants which are enumeration into enum types.
a61af66fc99e Initial load
duke
parents:
diff changeset
13570 Parameters now of enum type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13571 Clean-up and index type section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13572 Replace remaining datadef entities with callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
13573 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13574 <change date="7 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13575 Correct GenerateEvents description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13576 More internal semantics work.
a61af66fc99e Initial load
duke
parents:
diff changeset
13577 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13578 <change date="9 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13579 Replace previous GetSystemProperties with two functions
a61af66fc99e Initial load
duke
parents:
diff changeset
13580 which use allocated information instead fixed.
a61af66fc99e Initial load
duke
parents:
diff changeset
13581 Add SetSystemProperty.
a61af66fc99e Initial load
duke
parents:
diff changeset
13582 More internal semantics work.
a61af66fc99e Initial load
duke
parents:
diff changeset
13583 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13584 <change date="12 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13585 Add varargs to end of SetEventNotificationMode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13586 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13587 <change date="20 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13588 Finish fixing spec to reflect that alloc sizes are jlong.
a61af66fc99e Initial load
duke
parents:
diff changeset
13589 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13590 <change date="22 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13591 Allow NULL as RunAgentThread arg.
a61af66fc99e Initial load
duke
parents:
diff changeset
13592 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13593 <change date="22 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13594 Fixed names to standardized naming convention
a61af66fc99e Initial load
duke
parents:
diff changeset
13595 Removed AsyncGetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13596 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13597 <change date="29 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13598 Since we are using jthread, removed GetThread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13599 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13600 <change date="31 Jan 2003">
a61af66fc99e Initial load
duke
parents:
diff changeset
13601 Change GetFieldName to allow NULLs like GetMethodName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13602 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13603 <change date="29 Feb 2003" version="v40">
a61af66fc99e Initial load
duke
parents:
diff changeset
13604 Rewrite the introductory text, adding sections on
a61af66fc99e Initial load
duke
parents:
diff changeset
13605 start-up, environments and bytecode instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13606 Change the command line arguments per EG discussions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13607 Add an introduction to the capabilities section.
a61af66fc99e Initial load
duke
parents:
diff changeset
13608 Add the extension mechanism category and functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13609 Mark for deletion, but clarified anyhow, SuspendAllThreads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13610 Rename IterateOverLiveObjects to IterateOverReachableObjects and
a61af66fc99e Initial load
duke
parents:
diff changeset
13611 change the text accordingly.
a61af66fc99e Initial load
duke
parents:
diff changeset
13612 Clarify IterateOverHeap.
a61af66fc99e Initial load
duke
parents:
diff changeset
13613 Clarify CompiledMethodLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13614 Discuss prerequisite state for Calling Functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13615 Clarify SetAllocationHooks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13616 Added issues ("To be resolved:") through-out.
a61af66fc99e Initial load
duke
parents:
diff changeset
13617 And so on...
a61af66fc99e Initial load
duke
parents:
diff changeset
13618 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13619 <change date="6 Mar 2003" version="v41">
a61af66fc99e Initial load
duke
parents:
diff changeset
13620 Remove struct from the call to GetOwnedMonitorInfo.
a61af66fc99e Initial load
duke
parents:
diff changeset
13621 Automatically generate most error documentation, remove
a61af66fc99e Initial load
duke
parents:
diff changeset
13622 (rather broken) hand written error doc.
a61af66fc99e Initial load
duke
parents:
diff changeset
13623 Better describe capability use (empty initial set).
a61af66fc99e Initial load
duke
parents:
diff changeset
13624 Add min value to jint params.
a61af66fc99e Initial load
duke
parents:
diff changeset
13625 Remove the capability can_access_thread_local_storage.
a61af66fc99e Initial load
duke
parents:
diff changeset
13626 Rename error JVMTI_ERROR_NOT_IMPLEMENTED to JVMTI_ERROR_MUST_POSSESS_CAPABILITY;
a61af66fc99e Initial load
duke
parents:
diff changeset
13627 same for *NOT_IMPLEMENTED.
a61af66fc99e Initial load
duke
parents:
diff changeset
13628 Description fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13629 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13630 <change date="8 Mar 2003" version="v42">
a61af66fc99e Initial load
duke
parents:
diff changeset
13631 Rename GetClassSignature to GetClassName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13632 Rename IterateOverClassObjects to IterateOverInstancesOfClass.
a61af66fc99e Initial load
duke
parents:
diff changeset
13633 Remove GetMaxStack (operand stack isn't used in <jvmti/>).
a61af66fc99e Initial load
duke
parents:
diff changeset
13634 Description fixes: define launch-time, remove native frame pop
a61af66fc99e Initial load
duke
parents:
diff changeset
13635 from PopFrame, and assorted clarifications.
a61af66fc99e Initial load
duke
parents:
diff changeset
13636 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13637 <change date="8 Mar 2003" version="v43">
a61af66fc99e Initial load
duke
parents:
diff changeset
13638 Fix minor editing problem.
a61af66fc99e Initial load
duke
parents:
diff changeset
13639 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13640 <change date="10 Mar 2003" version="v44">
a61af66fc99e Initial load
duke
parents:
diff changeset
13641 Add phase information.
a61af66fc99e Initial load
duke
parents:
diff changeset
13642 Remap (compact) event numbers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13643 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13644 <change date="11 Mar 2003" version="v45">
a61af66fc99e Initial load
duke
parents:
diff changeset
13645 More phase information - allow "any".
a61af66fc99e Initial load
duke
parents:
diff changeset
13646 Elide raw monitor queries and events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13647 Minor description fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13648 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13649 <change date="12 Mar 2003" version="v46">
a61af66fc99e Initial load
duke
parents:
diff changeset
13650 Add GetPhase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13651 Use "phase" through document.
a61af66fc99e Initial load
duke
parents:
diff changeset
13652 Elide GetRawMonitorName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13653 Elide GetObjectMonitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13654 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13655 <change date="12 Mar 2003" version="v47">
a61af66fc99e Initial load
duke
parents:
diff changeset
13656 Fixes from link, XML, and spell checking.
a61af66fc99e Initial load
duke
parents:
diff changeset
13657 Auto-generate the callback structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
13658 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13659 <change date="13 Mar 2003" version="v48">
a61af66fc99e Initial load
duke
parents:
diff changeset
13660 One character XML fix.
a61af66fc99e Initial load
duke
parents:
diff changeset
13661 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13662 <change date="13 Mar 2003" version="v49">
a61af66fc99e Initial load
duke
parents:
diff changeset
13663 Change function parameter names to be consistent with
a61af66fc99e Initial load
duke
parents:
diff changeset
13664 event parameters (fooBarBaz becomes foo_bar_baz).
a61af66fc99e Initial load
duke
parents:
diff changeset
13665 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13666 <change date="14 Mar 2003" version="v50">
a61af66fc99e Initial load
duke
parents:
diff changeset
13667 Fix broken link. Fix thread markers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13668 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13669 <change date="14 Mar 2003" version="v51">
a61af66fc99e Initial load
duke
parents:
diff changeset
13670 Change constants so they are under 128 to workaround
a61af66fc99e Initial load
duke
parents:
diff changeset
13671 compiler problems.
a61af66fc99e Initial load
duke
parents:
diff changeset
13672 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13673 <change date="23 Mar 2003" version="v52">
a61af66fc99e Initial load
duke
parents:
diff changeset
13674 Overhaul capabilities. Separate GetStackTrace into
a61af66fc99e Initial load
duke
parents:
diff changeset
13675 GetStackTrace and GetStackFrames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13676 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13677 <change date="8 Apr 2003" version="v54">
a61af66fc99e Initial load
duke
parents:
diff changeset
13678 Use depth instead of jframeID to reference frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13679 Remove the now irrelevant GetCurrentFrame, GetCallerFrame and GetStackFrames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13680 Remove frame arg from events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13681 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13682 <change date="9 Apr 2003" version="v55">
a61af66fc99e Initial load
duke
parents:
diff changeset
13683 Remove GetObjectWithAnnotation since tests show bufferred approach more efficient.
a61af66fc99e Initial load
duke
parents:
diff changeset
13684 Add missing annotation_count to GetObjectsWithAnnotations
a61af66fc99e Initial load
duke
parents:
diff changeset
13685 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13686 <change date="10 Apr 2003" version="v56">
a61af66fc99e Initial load
duke
parents:
diff changeset
13687 Remove confusing parenthetical statement in GetObjectsWithAnnotations
a61af66fc99e Initial load
duke
parents:
diff changeset
13688 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13689 <change date="13 Apr 2003" version="v58">
a61af66fc99e Initial load
duke
parents:
diff changeset
13690 Replace jclass/jmethodID representation of method with simply jmethodID;
a61af66fc99e Initial load
duke
parents:
diff changeset
13691 Pass JvmtiEnv* as first arg of every event; remove JNIEnv* where inappropriate.
a61af66fc99e Initial load
duke
parents:
diff changeset
13692 Replace can_access_frames with can_access_local_variables; remove from purely stack access.
a61af66fc99e Initial load
duke
parents:
diff changeset
13693 Use can_get_synthetic_attribute; fix description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13694 Clarify that zero length arrays must be deallocated.
a61af66fc99e Initial load
duke
parents:
diff changeset
13695 Clarify RelinquishCapabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13696 Generalize JVMTI_ERROR_VM_DEAD to JVMTI_ERROR_WRONG_PHASE.
a61af66fc99e Initial load
duke
parents:
diff changeset
13697 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13698 <change date="27 Apr 2003" version="v59">
a61af66fc99e Initial load
duke
parents:
diff changeset
13699 Remove lingering indirect references to OBSOLETE_METHOD_ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
13700 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13701 <change date="4 May 2003" version="v60">
a61af66fc99e Initial load
duke
parents:
diff changeset
13702 Allow DestroyRawMonitor during OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13703 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13704 <change date="7 May 2003" version="v61">
a61af66fc99e Initial load
duke
parents:
diff changeset
13705 Added not monitor owner error return to DestroyRawMonitor.
a61af66fc99e Initial load
duke
parents:
diff changeset
13706 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13707 <change date="13 May 2003" version="v62">
a61af66fc99e Initial load
duke
parents:
diff changeset
13708 Clarify semantics of raw monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13709 Change flags on <code>GetThreadStatus</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13710 <code>GetClassLoader</code> return NULL for the bootstrap class loader.
a61af66fc99e Initial load
duke
parents:
diff changeset
13711 Add <code>GetClassName</code> issue.
a61af66fc99e Initial load
duke
parents:
diff changeset
13712 Define local variable signature.
a61af66fc99e Initial load
duke
parents:
diff changeset
13713 Disallow zero in annotations array of <code>GetObjectsWithAnnotations</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13714 Remove over specification in <code>GetObjectsWithAnnotations</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13715 Elide <code>SetAllocationHooks</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13716 Elide <code>SuspendAllThreads</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13717 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13718 <change date="14 May 2003" version="v63">
a61af66fc99e Initial load
duke
parents:
diff changeset
13719 Define the data type <code>jvmtiEventCallbacks</code>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13720 Zero length allocations return NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13721 Keep SetAllocationHooks in JVMDI, but remove from <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13722 Add JVMTI_THREAD_STATUS_FLAG_INTERRUPTED.
a61af66fc99e Initial load
duke
parents:
diff changeset
13723 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13724 <change date="15 May 2003" version="v64">
a61af66fc99e Initial load
duke
parents:
diff changeset
13725 Better wording, per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13726 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13727 <change date="15 May 2003" version="v65">
a61af66fc99e Initial load
duke
parents:
diff changeset
13728 First Alpha.
a61af66fc99e Initial load
duke
parents:
diff changeset
13729 Make jmethodID and jfieldID unique, jclass not used.
a61af66fc99e Initial load
duke
parents:
diff changeset
13730 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13731 <change date="27 May 2003" version="v66">
a61af66fc99e Initial load
duke
parents:
diff changeset
13732 Fix minor XSLT errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13733 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13734 <change date="13 June 2003" version="v67">
a61af66fc99e Initial load
duke
parents:
diff changeset
13735 Undo making jfieldID unique (jmethodID still is).
a61af66fc99e Initial load
duke
parents:
diff changeset
13736 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13737 <change date="17 June 2003" version="v68">
a61af66fc99e Initial load
duke
parents:
diff changeset
13738 Changes per June 11th Expert Group meeting --
a61af66fc99e Initial load
duke
parents:
diff changeset
13739 Overhaul Heap functionality: single callback,
a61af66fc99e Initial load
duke
parents:
diff changeset
13740 remove GetHeapRoots, add reachable iterators,
a61af66fc99e Initial load
duke
parents:
diff changeset
13741 and rename "annotation" to "tag".
a61af66fc99e Initial load
duke
parents:
diff changeset
13742 NULL thread parameter on most functions is current
a61af66fc99e Initial load
duke
parents:
diff changeset
13743 thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13744 Add timers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13745 Remove ForceExit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13746 Add GetEnvironmentLocalStorage.
a61af66fc99e Initial load
duke
parents:
diff changeset
13747 Add verbose flag and event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13748 Add AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13749 Update ClassFileLoadHook.
a61af66fc99e Initial load
duke
parents:
diff changeset
13750 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13751 <change date="18 June 2003" version="v69">
a61af66fc99e Initial load
duke
parents:
diff changeset
13752 Clean up issues sections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13753 Rename GetClassName back to GetClassSignature and
a61af66fc99e Initial load
duke
parents:
diff changeset
13754 fix description.
a61af66fc99e Initial load
duke
parents:
diff changeset
13755 Add generic signature to GetClassSignature,
a61af66fc99e Initial load
duke
parents:
diff changeset
13756 GetFieldSignature, GetMethodSignature, and
a61af66fc99e Initial load
duke
parents:
diff changeset
13757 GetLocalVariableTable.
a61af66fc99e Initial load
duke
parents:
diff changeset
13758 Elide EstimateCostOfCapabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
13759 Clarify that the system property functions operate
a61af66fc99e Initial load
duke
parents:
diff changeset
13760 on the VM view of system properties.
a61af66fc99e Initial load
duke
parents:
diff changeset
13761 Clarify Agent_OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13762 Remove "const" from JNIEnv* in events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13763 Add metadata accessors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13764 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13765 <change date="18 June 2003" version="v70">
a61af66fc99e Initial load
duke
parents:
diff changeset
13766 Add start_depth to GetStackTrace.
a61af66fc99e Initial load
duke
parents:
diff changeset
13767 Move system properties to a new category.
a61af66fc99e Initial load
duke
parents:
diff changeset
13768 Add GetObjectSize.
a61af66fc99e Initial load
duke
parents:
diff changeset
13769 Remove "X" from command line flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
13770 XML, HTML, and spell check corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13771 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13772 <change date="19 June 2003" version="v71">
a61af66fc99e Initial load
duke
parents:
diff changeset
13773 Fix JVMTI_HEAP_ROOT_THREAD to be 6.
a61af66fc99e Initial load
duke
parents:
diff changeset
13774 Make each synopsis match the function name.
a61af66fc99e Initial load
duke
parents:
diff changeset
13775 Fix unclear wording.
a61af66fc99e Initial load
duke
parents:
diff changeset
13776 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13777 <change date="26 June 2003" version="v72">
a61af66fc99e Initial load
duke
parents:
diff changeset
13778 SetThreadLocalStorage and SetEnvironmentLocalStorage should allow value
a61af66fc99e Initial load
duke
parents:
diff changeset
13779 to be set to NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13780 NotifyFramePop, GetFrameLocationm and all the local variable operations
a61af66fc99e Initial load
duke
parents:
diff changeset
13781 needed to have their wording about frames fixed.
a61af66fc99e Initial load
duke
parents:
diff changeset
13782 Grammar and clarity need to be fixed throughout.
a61af66fc99e Initial load
duke
parents:
diff changeset
13783 Capitalization and puntuation need to be consistent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13784 Need micro version number and masks for accessing major, minor, and micro.
a61af66fc99e Initial load
duke
parents:
diff changeset
13785 The error code lists should indicate which must be returned by
a61af66fc99e Initial load
duke
parents:
diff changeset
13786 an implementation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13787 The command line properties should be visible in the properties functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13788 Disallow popping from the current thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13789 Allow implementations to return opaque frame error when they cannot pop.
a61af66fc99e Initial load
duke
parents:
diff changeset
13790 The NativeMethodBind event should be sent during any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13791 The DynamicCodeGenerated event should be sent during any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13792 The following functions should be allowed to operate before VMInit:
a61af66fc99e Initial load
duke
parents:
diff changeset
13793 Set/GetEnvironmentLocalStorage
a61af66fc99e Initial load
duke
parents:
diff changeset
13794 GetMethodDeclaringClass
a61af66fc99e Initial load
duke
parents:
diff changeset
13795 GetClassSignature
a61af66fc99e Initial load
duke
parents:
diff changeset
13796 GetClassModifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
13797 IsInterface
a61af66fc99e Initial load
duke
parents:
diff changeset
13798 IsArrayClass
a61af66fc99e Initial load
duke
parents:
diff changeset
13799 GetMethodName
a61af66fc99e Initial load
duke
parents:
diff changeset
13800 GetMethodModifiers
a61af66fc99e Initial load
duke
parents:
diff changeset
13801 GetMaxLocals
a61af66fc99e Initial load
duke
parents:
diff changeset
13802 GetArgumentsSize
a61af66fc99e Initial load
duke
parents:
diff changeset
13803 GetLineNumberTable
a61af66fc99e Initial load
duke
parents:
diff changeset
13804 GetMethodLocation
a61af66fc99e Initial load
duke
parents:
diff changeset
13805 IsMethodNative
a61af66fc99e Initial load
duke
parents:
diff changeset
13806 IsMethodSynthetic.
a61af66fc99e Initial load
duke
parents:
diff changeset
13807 Other changes (to XSL):
a61af66fc99e Initial load
duke
parents:
diff changeset
13808 Argument description should show asterisk after not before pointers.
a61af66fc99e Initial load
duke
parents:
diff changeset
13809 NotifyFramePop, GetFrameLocationm and all the local variable operations
a61af66fc99e Initial load
duke
parents:
diff changeset
13810 should hsve the NO_MORE_FRAMES error added.
a61af66fc99e Initial load
duke
parents:
diff changeset
13811 Not alive threads should have a different error return than invalid thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
13812 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13813 <change date="7 July 2003" version="v73">
a61af66fc99e Initial load
duke
parents:
diff changeset
13814 VerboseOutput event was missing message parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13815 Minor fix-ups.
a61af66fc99e Initial load
duke
parents:
diff changeset
13816 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13817 <change date="14 July 2003" version="v74">
a61af66fc99e Initial load
duke
parents:
diff changeset
13818 Technical Publications Department corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13819 Allow thread and environment local storage to be set to NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
13820 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13821 <change date="23 July 2003" version="v75">
a61af66fc99e Initial load
duke
parents:
diff changeset
13822 Use new Agent_OnLoad rather than overloaded JVM_OnLoad.
a61af66fc99e Initial load
duke
parents:
diff changeset
13823 Add JNICALL to callbacks (XSL).
a61af66fc99e Initial load
duke
parents:
diff changeset
13824 Document JNICALL requirement for both events and callbacks (XSL).
a61af66fc99e Initial load
duke
parents:
diff changeset
13825 Restrict RedefineClasses to methods and attributes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13826 Elide the VerboseOutput event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13827 VMObjectAlloc: restrict when event is sent and remove method parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13828 Finish loose ends from Tech Pubs edit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13829 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13830 <change date="24 July 2003" version="v76">
a61af66fc99e Initial load
duke
parents:
diff changeset
13831 Change ClassFileLoadHook event to send the class instead of a boolean of redefine.
a61af66fc99e Initial load
duke
parents:
diff changeset
13832 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13833 <change date="24 July 2003" version="v77">
a61af66fc99e Initial load
duke
parents:
diff changeset
13834 XML fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13835 Minor text clarifications and corrections.
a61af66fc99e Initial load
duke
parents:
diff changeset
13836 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13837 <change date="24 July 2003" version="v78">
a61af66fc99e Initial load
duke
parents:
diff changeset
13838 Remove GetExceptionHandlerTable and GetThrownExceptions from <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
13839 Clarify that stack frames are JVM Spec frames.
a61af66fc99e Initial load
duke
parents:
diff changeset
13840 Split can_get_source_info into can_get_source_file_name, can_get_line_numbers,
a61af66fc99e Initial load
duke
parents:
diff changeset
13841 and can_get_source_debug_extension.
a61af66fc99e Initial load
duke
parents:
diff changeset
13842 PopFrame cannot have a native calling method.
a61af66fc99e Initial load
duke
parents:
diff changeset
13843 Removed incorrect statement in GetClassloaderClasses
a61af66fc99e Initial load
duke
parents:
diff changeset
13844 (see http://java.sun.com/docs/books/vmspec/2nd-edition/html/ConstantPool.doc.html#79383).
a61af66fc99e Initial load
duke
parents:
diff changeset
13845 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13846 <change date="24 July 2003" version="v79">
a61af66fc99e Initial load
duke
parents:
diff changeset
13847 XML and text fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13848 Move stack frame description into Stack Frame category.
a61af66fc99e Initial load
duke
parents:
diff changeset
13849 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13850 <change date="26 July 2003" version="v80">
a61af66fc99e Initial load
duke
parents:
diff changeset
13851 Allow NULL (means bootstrap loader) for GetClassloaderClasses.
a61af66fc99e Initial load
duke
parents:
diff changeset
13852 Add new heap reference kinds for references from classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
13853 Add timer information struct and query functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13854 Add AvailableProcessors.
a61af66fc99e Initial load
duke
parents:
diff changeset
13855 Rename GetOtherThreadCpuTime to GetThreadCpuTime.
a61af66fc99e Initial load
duke
parents:
diff changeset
13856 Explicitly add JVMTI_ERROR_INVALID_THREAD and JVMTI_ERROR_THREAD_NOT_ALIVE
a61af66fc99e Initial load
duke
parents:
diff changeset
13857 to SetEventNotification mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13858 Add initial thread to the VM_INIT event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13859 Remove platform assumptions from AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13860 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13861 <change date="26 July 2003" version="v81">
a61af66fc99e Initial load
duke
parents:
diff changeset
13862 Grammar and clarity changes per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13863 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13864 <change date="27 July 2003" version="v82">
a61af66fc99e Initial load
duke
parents:
diff changeset
13865 More grammar and clarity changes per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
13866 Add Agent_OnUnload.
a61af66fc99e Initial load
duke
parents:
diff changeset
13867 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13868 <change date="28 July 2003" version="v83">
a61af66fc99e Initial load
duke
parents:
diff changeset
13869 Change return type of Agent_OnUnload to void.
a61af66fc99e Initial load
duke
parents:
diff changeset
13870 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13871 <change date="28 July 2003" version="v84">
a61af66fc99e Initial load
duke
parents:
diff changeset
13872 Rename JVMTI_REFERENCE_ARRAY to JVMTI_REFERENCE_ARRAY_ELEMENT.
a61af66fc99e Initial load
duke
parents:
diff changeset
13873 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13874 <change date="28 July 2003" version="v85">
a61af66fc99e Initial load
duke
parents:
diff changeset
13875 Steal java.lang.Runtime.availableProcessors() wording for
a61af66fc99e Initial load
duke
parents:
diff changeset
13876 AvailableProcessors().
a61af66fc99e Initial load
duke
parents:
diff changeset
13877 Guarantee that zero will never be an event ID.
a61af66fc99e Initial load
duke
parents:
diff changeset
13878 Remove some issues which are no longer issues.
a61af66fc99e Initial load
duke
parents:
diff changeset
13879 Per review, rename and more completely document the timer
a61af66fc99e Initial load
duke
parents:
diff changeset
13880 information functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13881 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13882 <change date="29 July 2003" version="v86">
a61af66fc99e Initial load
duke
parents:
diff changeset
13883 Non-spec visible change to XML controlled implementation:
a61af66fc99e Initial load
duke
parents:
diff changeset
13884 SetThreadLocalStorage must run in VM mode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13885 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13886 <change date="5 August 2003" version="0.1.87">
a61af66fc99e Initial load
duke
parents:
diff changeset
13887 Add GetErrorName.
a61af66fc99e Initial load
duke
parents:
diff changeset
13888 Add varargs warning to jvmtiExtensionEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13889 Remove "const" on the jvmtiEnv* of jvmtiExtensionEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
13890 Remove unused can_get_exception_info capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
13891 Pass jvmtiEnv* and JNIEnv* to the jvmtiStartFunction.
a61af66fc99e Initial load
duke
parents:
diff changeset
13892 Fix jvmtiExtensionFunctionInfo.func declared type.
a61af66fc99e Initial load
duke
parents:
diff changeset
13893 Extension function returns error code.
a61af66fc99e Initial load
duke
parents:
diff changeset
13894 Use new version numbering.
a61af66fc99e Initial load
duke
parents:
diff changeset
13895 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13896 <change date="5 August 2003" version="0.2.88">
a61af66fc99e Initial load
duke
parents:
diff changeset
13897 Remove the ClassUnload event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13898 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13899 <change date="8 August 2003" version="0.2.89">
a61af66fc99e Initial load
duke
parents:
diff changeset
13900 Heap reference iterator callbacks return an enum that
a61af66fc99e Initial load
duke
parents:
diff changeset
13901 allows outgoing object references to be ignored.
a61af66fc99e Initial load
duke
parents:
diff changeset
13902 Allow JNIEnv as a param type to extension events/functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
13903 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13904 <change date="15 August 2003" version="0.2.90">
a61af66fc99e Initial load
duke
parents:
diff changeset
13905 Fix a typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
13906 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13907 <change date="2 September 2003" version="0.2.91">
a61af66fc99e Initial load
duke
parents:
diff changeset
13908 Remove all metadata functions: GetClassMetadata,
a61af66fc99e Initial load
duke
parents:
diff changeset
13909 GetFieldMetadata, and GetMethodMetadata.
a61af66fc99e Initial load
duke
parents:
diff changeset
13910 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13911 <change date="1 October 2003" version="0.2.92">
a61af66fc99e Initial load
duke
parents:
diff changeset
13912 Mark the functions Allocate. Deallocate, RawMonitor*,
a61af66fc99e Initial load
duke
parents:
diff changeset
13913 SetEnvironmentLocalStorage, and GetEnvironmentLocalStorage
a61af66fc99e Initial load
duke
parents:
diff changeset
13914 as safe for use in heap callbacks and GC events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13915 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13916 <change date="24 November 2003" version="0.2.93">
a61af66fc99e Initial load
duke
parents:
diff changeset
13917 Add pass through opaque user data pointer to heap iterate
a61af66fc99e Initial load
duke
parents:
diff changeset
13918 functions and callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13919 In the CompiledMethodUnload event, send the code address.
a61af66fc99e Initial load
duke
parents:
diff changeset
13920 Add GarbageCollectionOccurred event.
a61af66fc99e Initial load
duke
parents:
diff changeset
13921 Add constant pool reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
13922 Mark the functions CreateRawMonitor and DestroyRawMonitor
a61af66fc99e Initial load
duke
parents:
diff changeset
13923 as safe for use in heap callbacks and GC events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13924 Clarify: VMDeath, GetCurrentThreadCpuTimerInfo,
a61af66fc99e Initial load
duke
parents:
diff changeset
13925 GetThreadCpuTimerInfo, IterateOverReachableObjects,
a61af66fc99e Initial load
duke
parents:
diff changeset
13926 IterateOverObjectsReachableFromObject, GetTime and
a61af66fc99e Initial load
duke
parents:
diff changeset
13927 JVMTI_ERROR_NULL_POINTER.
a61af66fc99e Initial load
duke
parents:
diff changeset
13928 Add missing errors to: GenerateEvents and
a61af66fc99e Initial load
duke
parents:
diff changeset
13929 AddToBootstrapClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
13930 Fix description of ClassFileLoadHook name parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
13931 In heap callbacks and GC/ObjectFree events, specify
a61af66fc99e Initial load
duke
parents:
diff changeset
13932 that only explicitly allowed functions can be called.
a61af66fc99e Initial load
duke
parents:
diff changeset
13933 Allow GetCurrentThreadCpuTimerInfo, GetCurrentThreadCpuTime,
a61af66fc99e Initial load
duke
parents:
diff changeset
13934 GetTimerInfo, and GetTime during callback.
a61af66fc99e Initial load
duke
parents:
diff changeset
13935 Allow calling SetTag/GetTag during the onload phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
13936 SetEventNotificationMode, add: error attempted inappropriate
a61af66fc99e Initial load
duke
parents:
diff changeset
13937 thread level control.
a61af66fc99e Initial load
duke
parents:
diff changeset
13938 Remove jvmtiExceptionHandlerEntry.
a61af66fc99e Initial load
duke
parents:
diff changeset
13939 Fix handling of native methods on the stack --
a61af66fc99e Initial load
duke
parents:
diff changeset
13940 location_ptr param of GetFrameLocation, remove
a61af66fc99e Initial load
duke
parents:
diff changeset
13941 JVMTI_ERROR_OPAQUE_FRAME from GetFrameLocation,
a61af66fc99e Initial load
duke
parents:
diff changeset
13942 jvmtiFrameInfo.location, and jlocation.
a61af66fc99e Initial load
duke
parents:
diff changeset
13943 Remove typo (from JVMPI) implying that the MonitorWaited
a61af66fc99e Initial load
duke
parents:
diff changeset
13944 event is sent on sleep.
a61af66fc99e Initial load
duke
parents:
diff changeset
13945 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13946 <change date="25 November 2003" version="0.2.94">
a61af66fc99e Initial load
duke
parents:
diff changeset
13947 Clarifications and typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
13948 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13949 <change date="3 December 2003" version="0.2.95">
a61af66fc99e Initial load
duke
parents:
diff changeset
13950 Allow NULL user_data in heap iterators.
a61af66fc99e Initial load
duke
parents:
diff changeset
13951 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13952 <change date="28 January 2004" version="0.2.97">
a61af66fc99e Initial load
duke
parents:
diff changeset
13953 Add GetThreadState, deprecate GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
13954 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13955 <change date="29 January 2004" version="0.2.98">
a61af66fc99e Initial load
duke
parents:
diff changeset
13956 INVALID_SLOT and TYPE_MISMATCH errors should be optional.
a61af66fc99e Initial load
duke
parents:
diff changeset
13957 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13958 <change date="12 February 2004" version="0.2.102">
a61af66fc99e Initial load
duke
parents:
diff changeset
13959 Remove MonitorContendedExit.
a61af66fc99e Initial load
duke
parents:
diff changeset
13960 Added JNIEnv parameter to VMObjectAlloc.
a61af66fc99e Initial load
duke
parents:
diff changeset
13961 Clarified definition of class_tag and referrer_index
a61af66fc99e Initial load
duke
parents:
diff changeset
13962 parameters to heap callbacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
13963 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13964 <change date="16 Febuary 2004" version="0.2.103">
a61af66fc99e Initial load
duke
parents:
diff changeset
13965 Document JAVA_TOOL_OPTIONS.
a61af66fc99e Initial load
duke
parents:
diff changeset
13966 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13967 <change date="17 Febuary 2004" version="0.2.105">
a61af66fc99e Initial load
duke
parents:
diff changeset
13968 Divide start phase into primordial and start.
a61af66fc99e Initial load
duke
parents:
diff changeset
13969 Add VMStart event
a61af66fc99e Initial load
duke
parents:
diff changeset
13970 Change phase associations of functions and events.
a61af66fc99e Initial load
duke
parents:
diff changeset
13971 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13972 <change date="18 Febuary 2004" version="0.3.6">
a61af66fc99e Initial load
duke
parents:
diff changeset
13973 Elide deprecated GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
13974 Bump minor version, subtract 100 from micro version
a61af66fc99e Initial load
duke
parents:
diff changeset
13975 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13976 <change date="18 Febuary 2004" version="0.3.7">
a61af66fc99e Initial load
duke
parents:
diff changeset
13977 Document that timer nanosecond values are unsigned.
a61af66fc99e Initial load
duke
parents:
diff changeset
13978 Clarify text having to do with native methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
13979 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13980 <change date="19 Febuary 2004" version="0.3.8">
a61af66fc99e Initial load
duke
parents:
diff changeset
13981 Fix typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
13982 Remove elided deprecated GetThreadStatus.
a61af66fc99e Initial load
duke
parents:
diff changeset
13983 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13984 <change date="23 Febuary 2004" version="0.3.9">
a61af66fc99e Initial load
duke
parents:
diff changeset
13985 Require NotifyFramePop to act on suspended threads.
a61af66fc99e Initial load
duke
parents:
diff changeset
13986 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13987 <change date="24 Febuary 2004" version="0.3.10">
a61af66fc99e Initial load
duke
parents:
diff changeset
13988 Add capabilities
a61af66fc99e Initial load
duke
parents:
diff changeset
13989 (<internallink id="jvmtiCapabilities.can_redefine_any_class"
a61af66fc99e Initial load
duke
parents:
diff changeset
13990 ><code>can_redefine_any_class</code></internallink>
a61af66fc99e Initial load
duke
parents:
diff changeset
13991 and
a61af66fc99e Initial load
duke
parents:
diff changeset
13992 <internallink id="jvmtiCapabilities.can_generate_all_class_hook_events"
a61af66fc99e Initial load
duke
parents:
diff changeset
13993 ><code>can_generate_all_class_hook_events</code></internallink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
13994 and an error (<errorlink id="JVMTI_ERROR_UNMODIFIABLE_CLASS"></errorlink>)
a61af66fc99e Initial load
duke
parents:
diff changeset
13995 which allow some classes to be unmodifiable.
a61af66fc99e Initial load
duke
parents:
diff changeset
13996 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
13997 <change date="28 Febuary 2004" version="0.3.11">
a61af66fc99e Initial load
duke
parents:
diff changeset
13998 Add JVMTI_ERROR_MUST_POSSESS_CAPABILITY to SetEventNotificationMode.
a61af66fc99e Initial load
duke
parents:
diff changeset
13999 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14000 <change date="8 March 2004" version="0.3.12">
a61af66fc99e Initial load
duke
parents:
diff changeset
14001 Clarified CompiledMethodUnload so that it is clear the event
a61af66fc99e Initial load
duke
parents:
diff changeset
14002 may be posted after the class has been unloaded.
a61af66fc99e Initial load
duke
parents:
diff changeset
14003 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14004 <change date="5 March 2004" version="0.3.13">
a61af66fc99e Initial load
duke
parents:
diff changeset
14005 Change the size parameter of VMObjectAlloc to jlong to match GetObjectSize.
a61af66fc99e Initial load
duke
parents:
diff changeset
14006 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14007 <change date="13 March 2004" version="0.3.14">
a61af66fc99e Initial load
duke
parents:
diff changeset
14008 Added guideline for the use of the JNI FindClass function in event
a61af66fc99e Initial load
duke
parents:
diff changeset
14009 callback functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14010 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14011 <change date="15 March 2004" version="0.3.15">
a61af66fc99e Initial load
duke
parents:
diff changeset
14012 Add GetAllStackTraces and GetThreadListStackTraces.
a61af66fc99e Initial load
duke
parents:
diff changeset
14013 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14014 <change date="19 March 2004" version="0.3.16">
a61af66fc99e Initial load
duke
parents:
diff changeset
14015 ClassLoad and ClassPrepare events can be posted during start phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14016 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14017 <change date="25 March 2004" version="0.3.17">
a61af66fc99e Initial load
duke
parents:
diff changeset
14018 Add JVMTI_ERROR_NATIVE_METHOD to GetLineNumberTable, GetLocalVariableTable,
a61af66fc99e Initial load
duke
parents:
diff changeset
14019 GetMaxLocals, GetArgumentsSize, GetMethodLocation, GetBytecodes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14020 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14021 <change date="29 March 2004" version="0.3.18">
a61af66fc99e Initial load
duke
parents:
diff changeset
14022 Return the timer kind in the timer information structure.
a61af66fc99e Initial load
duke
parents:
diff changeset
14023 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14024 <change date="31 March 2004" version="0.3.19">
a61af66fc99e Initial load
duke
parents:
diff changeset
14025 Spec clarifications:
a61af66fc99e Initial load
duke
parents:
diff changeset
14026 JVMTI_THREAD_STATE_IN_NATIVE might not include JNI or <jvmti/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
14027 ForceGarbageCollection does not run finalizers.
a61af66fc99e Initial load
duke
parents:
diff changeset
14028 The context of the specification is the Java platform.
a61af66fc99e Initial load
duke
parents:
diff changeset
14029 Warn about early instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14030 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14031 <change date="1 April 2004" version="0.3.20">
a61af66fc99e Initial load
duke
parents:
diff changeset
14032 Refinements to the above clarifications and
a61af66fc99e Initial load
duke
parents:
diff changeset
14033 Clarify that an error returned by Agent_OnLoad terminates the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
14034 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14035 <change date="1 April 2004" version="0.3.21">
a61af66fc99e Initial load
duke
parents:
diff changeset
14036 Array class creation does not generate a class load event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14037 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14038 <change date="7 April 2004" version="0.3.22">
a61af66fc99e Initial load
duke
parents:
diff changeset
14039 Align thread state hierarchy more closely with java.lang.Thread.State.
a61af66fc99e Initial load
duke
parents:
diff changeset
14040 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14041 <change date="12 April 2004" version="0.3.23">
a61af66fc99e Initial load
duke
parents:
diff changeset
14042 Clarify the documentation of thread state.
a61af66fc99e Initial load
duke
parents:
diff changeset
14043 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14044 <change date="19 April 2004" version="0.3.24">
a61af66fc99e Initial load
duke
parents:
diff changeset
14045 Remove GarbageCollectionOccurred event -- can be done by agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14046 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14047 <change date="22 April 2004" version="0.3.25">
a61af66fc99e Initial load
duke
parents:
diff changeset
14048 Define "command-line option".
a61af66fc99e Initial load
duke
parents:
diff changeset
14049 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14050 <change date="29 April 2004" version="0.3.26">
a61af66fc99e Initial load
duke
parents:
diff changeset
14051 Describe the intended use of bytecode instrumentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14052 Fix description of extension event first parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
14053 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14054 <change date="30 April 2004" version="0.3.27">
a61af66fc99e Initial load
duke
parents:
diff changeset
14055 Clarification and typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14056 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14057 <change date="18 May 2004" version="0.3.28">
a61af66fc99e Initial load
duke
parents:
diff changeset
14058 Remove DataDumpRequest event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14059 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14060 <change date="18 May 2004" version="0.3.29">
a61af66fc99e Initial load
duke
parents:
diff changeset
14061 Clarify RawMonitorWait with zero timeout.
a61af66fc99e Initial load
duke
parents:
diff changeset
14062 Clarify thread state after RunAgentThread.
a61af66fc99e Initial load
duke
parents:
diff changeset
14063 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14064 <change date="24 May 2004" version="0.3.30">
a61af66fc99e Initial load
duke
parents:
diff changeset
14065 Clean-up: fix bad/old links, etc.
a61af66fc99e Initial load
duke
parents:
diff changeset
14066 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14067 <change date="30 May 2004" version="0.3.31">
a61af66fc99e Initial load
duke
parents:
diff changeset
14068 Clarifications including:
a61af66fc99e Initial load
duke
parents:
diff changeset
14069 All character strings are modified UTF-8.
a61af66fc99e Initial load
duke
parents:
diff changeset
14070 Agent thread visibiity.
a61af66fc99e Initial load
duke
parents:
diff changeset
14071 Meaning of obsolete method version.
a61af66fc99e Initial load
duke
parents:
diff changeset
14072 Thread invoking heap callbacks,
a61af66fc99e Initial load
duke
parents:
diff changeset
14073 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14074 <change date="1 June 2004" version="1.0.32">
a61af66fc99e Initial load
duke
parents:
diff changeset
14075 Bump major.minor version numbers to "1.0".
a61af66fc99e Initial load
duke
parents:
diff changeset
14076 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14077 <change date="2 June 2004" version="1.0.33">
a61af66fc99e Initial load
duke
parents:
diff changeset
14078 Clarify interaction between ForceGarbageCollection
a61af66fc99e Initial load
duke
parents:
diff changeset
14079 and ObjectFree.
a61af66fc99e Initial load
duke
parents:
diff changeset
14080 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14081 <change date="6 June 2004" version="1.0.34">
a61af66fc99e Initial load
duke
parents:
diff changeset
14082 Restrict AddToBootstrapClassLoaderSearch and
a61af66fc99e Initial load
duke
parents:
diff changeset
14083 SetSystemProperty to the OnLoad phase only.
a61af66fc99e Initial load
duke
parents:
diff changeset
14084 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14085 <change date="11 June 2004" version="1.0.35">
a61af66fc99e Initial load
duke
parents:
diff changeset
14086 Fix typo in SetTag.
a61af66fc99e Initial load
duke
parents:
diff changeset
14087 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14088 <change date="18 June 2004" version="1.0.36">
a61af66fc99e Initial load
duke
parents:
diff changeset
14089 Fix trademarks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14090 Add missing parameter in example GetThreadState usage.
a61af66fc99e Initial load
duke
parents:
diff changeset
14091 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14092 <change date="4 August 2004" version="1.0.37">
a61af66fc99e Initial load
duke
parents:
diff changeset
14093 Copyright updates.
a61af66fc99e Initial load
duke
parents:
diff changeset
14094 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14095 <change date="5 November 2004" version="1.0.38">
a61af66fc99e Initial load
duke
parents:
diff changeset
14096 Add missing function table layout.
a61af66fc99e Initial load
duke
parents:
diff changeset
14097 Add missing description of C++ member function format of functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14098 Clarify that name in CFLH can be NULL.
a61af66fc99e Initial load
duke
parents:
diff changeset
14099 Released as part of <tm>J2SE</tm> 5.0.
a61af66fc99e Initial load
duke
parents:
diff changeset
14100 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14101 <change date="24 April 2005" version="1.1.47">
a61af66fc99e Initial load
duke
parents:
diff changeset
14102 Bump major.minor version numbers to "1.1".
a61af66fc99e Initial load
duke
parents:
diff changeset
14103 Add ForceEarlyReturn* functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14104 Add GetOwnedMonitorStackDepthInfo function.
a61af66fc99e Initial load
duke
parents:
diff changeset
14105 Add GetCurrentThread function.
a61af66fc99e Initial load
duke
parents:
diff changeset
14106 Add "since" version marker.
a61af66fc99e Initial load
duke
parents:
diff changeset
14107 Add AddToSystemClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
14108 Allow AddToBootstrapClassLoaderSearch be used in live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14109 Fix historic rubbish in the descriptions of the heap_object_callback
a61af66fc99e Initial load
duke
parents:
diff changeset
14110 parameter of IterateOverHeap and IterateOverInstancesOfClass functions;
a61af66fc99e Initial load
duke
parents:
diff changeset
14111 disallow NULL for this parameter.
a61af66fc99e Initial load
duke
parents:
diff changeset
14112 Clarify, correct and make consistent: wording about current thread,
a61af66fc99e Initial load
duke
parents:
diff changeset
14113 opaque frames and insufficient number of frames in PopFrame.
a61af66fc99e Initial load
duke
parents:
diff changeset
14114 Consistently use "current frame" rather than "topmost".
a61af66fc99e Initial load
duke
parents:
diff changeset
14115 Clarify the JVMTI_ERROR_TYPE_MISMATCH errors in GetLocal* and SetLocal*
a61af66fc99e Initial load
duke
parents:
diff changeset
14116 by making them compatible with those in ForceEarlyReturn*.
a61af66fc99e Initial load
duke
parents:
diff changeset
14117 Many other clarifications and wording clean ups.
a61af66fc99e Initial load
duke
parents:
diff changeset
14118 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14119 <change date="25 April 2005" version="1.1.48">
a61af66fc99e Initial load
duke
parents:
diff changeset
14120 Add GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14121 Switch references to the first edition of the VM Spec, to the seconds edition.
a61af66fc99e Initial load
duke
parents:
diff changeset
14122 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14123 <change date="26 April 2005" version="1.1.49">
a61af66fc99e Initial load
duke
parents:
diff changeset
14124 Clarify minor/major version order in GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14125 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14126 <change date="26 April 2005" version="1.1.50">
a61af66fc99e Initial load
duke
parents:
diff changeset
14127 Add SetNativeMethodPrefix and SetNativeMethodPrefixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14128 Reassign GetOwnedMonitorStackDepthInfo to position 153.
a61af66fc99e Initial load
duke
parents:
diff changeset
14129 Break out Class Loader Search in its own documentation category.
a61af66fc99e Initial load
duke
parents:
diff changeset
14130 Deal with overly long lines in XML source.
a61af66fc99e Initial load
duke
parents:
diff changeset
14131 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14132 <change date="29 April 2005" version="1.1.51">
a61af66fc99e Initial load
duke
parents:
diff changeset
14133 Allow agents be started in the live phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14134 Added paragraph about deploying agents.
a61af66fc99e Initial load
duke
parents:
diff changeset
14135 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14136 <change date="30 April 2005" version="1.1.52">
a61af66fc99e Initial load
duke
parents:
diff changeset
14137 Add specification description to SetNativeMethodPrefix(es).
a61af66fc99e Initial load
duke
parents:
diff changeset
14138 Better define the conditions on GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14139 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14140 <change date="30 April 2005" version="1.1.53">
a61af66fc99e Initial load
duke
parents:
diff changeset
14141 Break out the GetClassVersionNumber function from GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14142 Clean-up the references to the VM Spec.
a61af66fc99e Initial load
duke
parents:
diff changeset
14143 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14144 <change date="1 May 2005" version="1.1.54">
a61af66fc99e Initial load
duke
parents:
diff changeset
14145 Allow SetNativeMethodPrefix(es) in any phase.
a61af66fc99e Initial load
duke
parents:
diff changeset
14146 Add clarifications about the impact of redefinition on GetConstantPool.
a61af66fc99e Initial load
duke
parents:
diff changeset
14147 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14148 <change date="2 May 2005" version="1.1.56">
a61af66fc99e Initial load
duke
parents:
diff changeset
14149 Various clarifications to SetNativeMethodPrefix(es).
a61af66fc99e Initial load
duke
parents:
diff changeset
14150 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14151 <change date="2 May 2005" version="1.1.57">
a61af66fc99e Initial load
duke
parents:
diff changeset
14152 Add missing performance warning to the method entry event.
a61af66fc99e Initial load
duke
parents:
diff changeset
14153 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14154 <change date="5 May 2005" version="1.1.58">
a61af66fc99e Initial load
duke
parents:
diff changeset
14155 Remove internal JVMDI support.
a61af66fc99e Initial load
duke
parents:
diff changeset
14156 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14157 <change date="8 May 2005" version="1.1.59">
a61af66fc99e Initial load
duke
parents:
diff changeset
14158 Add <functionlink id="RetransformClasses"/>.
a61af66fc99e Initial load
duke
parents:
diff changeset
14159 Revamp the bytecode instrumentation documentation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14160 Change <functionlink id="IsMethodObsolete"/> to no longer
a61af66fc99e Initial load
duke
parents:
diff changeset
14161 require the can_redefine_classes capability.
a61af66fc99e Initial load
duke
parents:
diff changeset
14162 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14163 <change date="11 May 2005" version="1.1.63">
a61af66fc99e Initial load
duke
parents:
diff changeset
14164 Clarifications for retransformation.
a61af66fc99e Initial load
duke
parents:
diff changeset
14165 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14166 <change date="11 May 2005" version="1.1.64">
a61af66fc99e Initial load
duke
parents:
diff changeset
14167 Clarifications for retransformation, per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
14168 Lock "retransformation (in)capable" at class load enable time.
a61af66fc99e Initial load
duke
parents:
diff changeset
14169 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14170 <change date="4 June 2005" version="1.1.67">
a61af66fc99e Initial load
duke
parents:
diff changeset
14171 Add new heap functionity which supports reporting primitive values,
a61af66fc99e Initial load
duke
parents:
diff changeset
14172 allows setting the referrer tag, and has more powerful filtering:
a61af66fc99e Initial load
duke
parents:
diff changeset
14173 FollowReferences, IterateThroughHeap, and their associated
a61af66fc99e Initial load
duke
parents:
diff changeset
14174 callbacks, structs, enums, and constants.
a61af66fc99e Initial load
duke
parents:
diff changeset
14175 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14176 <change date="4 June 2005" version="1.1.68">
a61af66fc99e Initial load
duke
parents:
diff changeset
14177 Clarification.
a61af66fc99e Initial load
duke
parents:
diff changeset
14178 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14179 <change date="6 June 2005" version="1.1.69">
a61af66fc99e Initial load
duke
parents:
diff changeset
14180 FollowReferences, IterateThroughHeap: Put callbacks in a struct;
a61af66fc99e Initial load
duke
parents:
diff changeset
14181 Add missing error codes; reduce bits in the visit control flags.
a61af66fc99e Initial load
duke
parents:
diff changeset
14182 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14183 <change date="14 June 2005" version="1.1.70">
a61af66fc99e Initial load
duke
parents:
diff changeset
14184 More on new heap functionity: spec clean-up per review.
a61af66fc99e Initial load
duke
parents:
diff changeset
14185 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14186 <change date="15 June 2005" version="1.1.71">
a61af66fc99e Initial load
duke
parents:
diff changeset
14187 More on new heap functionity: Rename old heap section to Heap (1.0).
a61af66fc99e Initial load
duke
parents:
diff changeset
14188 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14189 <change date="21 June 2005" version="1.1.72">
a61af66fc99e Initial load
duke
parents:
diff changeset
14190 Fix typos.
a61af66fc99e Initial load
duke
parents:
diff changeset
14191 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14192 <change date="27 June 2005" version="1.1.73">
a61af66fc99e Initial load
duke
parents:
diff changeset
14193 Make referrer info structure a union.
a61af66fc99e Initial load
duke
parents:
diff changeset
14194 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14195 <change date="9 September 2005" version="1.1.74">
a61af66fc99e Initial load
duke
parents:
diff changeset
14196 In new heap functions:
a61af66fc99e Initial load
duke
parents:
diff changeset
14197 Add missing superclass reference kind.
a61af66fc99e Initial load
duke
parents:
diff changeset
14198 Use a single scheme for computing field indexes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14199 Remove outdated references to struct based referrer info.
a61af66fc99e Initial load
duke
parents:
diff changeset
14200 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14201 <change date="12 September 2005" version="1.1.75">
a61af66fc99e Initial load
duke
parents:
diff changeset
14202 Don't callback during FollowReferences on frivolous java.lang.Object superclass.
a61af66fc99e Initial load
duke
parents:
diff changeset
14203 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14204 <change date="13 September 2005" version="1.1.76">
a61af66fc99e Initial load
duke
parents:
diff changeset
14205 In string primitive callback, length now Unicode length.
a61af66fc99e Initial load
duke
parents:
diff changeset
14206 In array and string primitive callbacks, value now "const".
a61af66fc99e Initial load
duke
parents:
diff changeset
14207 Note possible compiler impacts on setting JNI function table.
a61af66fc99e Initial load
duke
parents:
diff changeset
14208 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14209 <change date="13 September 2005" version="1.1.77">
a61af66fc99e Initial load
duke
parents:
diff changeset
14210 GetClassVersionNumbers() and GetConstantPool() should return
a61af66fc99e Initial load
duke
parents:
diff changeset
14211 error on array or primitive class.
a61af66fc99e Initial load
duke
parents:
diff changeset
14212 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14213 <change date="14 September 2005" version="1.1.78">
a61af66fc99e Initial load
duke
parents:
diff changeset
14214 Grammar fixes.
a61af66fc99e Initial load
duke
parents:
diff changeset
14215 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14216 <change date="26 September 2005" version="1.1.79">
a61af66fc99e Initial load
duke
parents:
diff changeset
14217 Add IsModifiableClass query.
a61af66fc99e Initial load
duke
parents:
diff changeset
14218 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14219 <change date="9 February 2006" version="1.1.81">
a61af66fc99e Initial load
duke
parents:
diff changeset
14220 Add referrer_class_tag parameter to jvmtiHeapReferenceCallback.
a61af66fc99e Initial load
duke
parents:
diff changeset
14221 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14222 <change date="13 February 2006" version="1.1.82">
a61af66fc99e Initial load
duke
parents:
diff changeset
14223 Doc fixes: update can_redefine_any_class to include retransform.
a61af66fc99e Initial load
duke
parents:
diff changeset
14224 Clarify that exception events cover all Throwables.
a61af66fc99e Initial load
duke
parents:
diff changeset
14225 In GetStackTrace, no test is done for start_depth too big if start_depth is zero,
a61af66fc99e Initial load
duke
parents:
diff changeset
14226 Clarify fields reported in Primitive Field Callback -- static vs instance.
a61af66fc99e Initial load
duke
parents:
diff changeset
14227 Repair confusing names of heap types, including callback names.
a61af66fc99e Initial load
duke
parents:
diff changeset
14228 Require consistent usage of stack depth in the face of thread launch methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
14229 Note incompatibility of <jvmti/> memory management with other systems.
a61af66fc99e Initial load
duke
parents:
diff changeset
14230 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14231 <change date="14 February 2006" version="1.1.85">
a61af66fc99e Initial load
duke
parents:
diff changeset
14232 Fix typos and missing renames.
a61af66fc99e Initial load
duke
parents:
diff changeset
14233 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14234 <change date="13 March 2006" version="1.1.86">
a61af66fc99e Initial load
duke
parents:
diff changeset
14235 Clarify that jmethodIDs and jfieldIDs can be saved.
a61af66fc99e Initial load
duke
parents:
diff changeset
14236 Clarify that Iterate Over Instances Of Class includes subclasses.
a61af66fc99e Initial load
duke
parents:
diff changeset
14237 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14238 <change date="14 March 2006" version="1.1.87">
a61af66fc99e Initial load
duke
parents:
diff changeset
14239 Better phrasing.
a61af66fc99e Initial load
duke
parents:
diff changeset
14240 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14241 <change date="16 March 2006" version="1.1.88">
a61af66fc99e Initial load
duke
parents:
diff changeset
14242 Match the referrer_index for static fields in Object Reference Callback
a61af66fc99e Initial load
duke
parents:
diff changeset
14243 with the Reference Implementation (and all other known implementations);
a61af66fc99e Initial load
duke
parents:
diff changeset
14244 that is, make it match the definition for instance fields.
a61af66fc99e Initial load
duke
parents:
diff changeset
14245 In GetThreadListStackTraces, add JVMTI_ERROR_INVALID_THREAD to cover
a61af66fc99e Initial load
duke
parents:
diff changeset
14246 an invalid thread in the list; and specify that not started threads
a61af66fc99e Initial load
duke
parents:
diff changeset
14247 return empty stacks.
a61af66fc99e Initial load
duke
parents:
diff changeset
14248 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14249 <change date="17 March 2006" version="1.1.89">
a61af66fc99e Initial load
duke
parents:
diff changeset
14250 Typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
14251 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14252 <change date="25 March 2006" version="1.1.90">
a61af66fc99e Initial load
duke
parents:
diff changeset
14253 Typo.
a61af66fc99e Initial load
duke
parents:
diff changeset
14254 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14255 <change date="6 April 2006" version="1.1.91">
a61af66fc99e Initial load
duke
parents:
diff changeset
14256 Remove restrictions on AddToBootstrapClassLoaderSearch and
a61af66fc99e Initial load
duke
parents:
diff changeset
14257 AddToSystemClassLoaderSearch.
a61af66fc99e Initial load
duke
parents:
diff changeset
14258 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14259 <change date="1 May 2006" version="1.1.93">
a61af66fc99e Initial load
duke
parents:
diff changeset
14260 Changed spec to return -1 for monitor stack depth for the
a61af66fc99e Initial load
duke
parents:
diff changeset
14261 implementation which can not determine stack depth.
a61af66fc99e Initial load
duke
parents:
diff changeset
14262 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14263 <change date="3 May 2006" version="1.1.94">
a61af66fc99e Initial load
duke
parents:
diff changeset
14264 Corrections for readability and accuracy courtesy of Alan Pratt of IBM.
a61af66fc99e Initial load
duke
parents:
diff changeset
14265 List the object relationships reported in FollowReferences.
a61af66fc99e Initial load
duke
parents:
diff changeset
14266 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14267 <change date="5 May 2006" version="1.1.95">
a61af66fc99e Initial load
duke
parents:
diff changeset
14268 Clarify the object relationships reported in FollowReferences.
a61af66fc99e Initial load
duke
parents:
diff changeset
14269 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14270 <change date="28 June 2006" version="1.1.98">
a61af66fc99e Initial load
duke
parents:
diff changeset
14271 Clarify DisposeEnvironment; add warning.
a61af66fc99e Initial load
duke
parents:
diff changeset
14272 Fix typos in SetLocalXXX "retrieve" => "set".
a61af66fc99e Initial load
duke
parents:
diff changeset
14273 Clarify that native method prefixes must remain set while used.
a61af66fc99e Initial load
duke
parents:
diff changeset
14274 Clarify that exactly one Agent_OnXXX is called per agent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14275 Clarify that library loading is independent from start-up.
a61af66fc99e Initial load
duke
parents:
diff changeset
14276 Remove ambiguous reference to Agent_OnLoad in the Agent_OnUnload spec.
a61af66fc99e Initial load
duke
parents:
diff changeset
14277 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14278 <change date="31 July 2006" version="1.1.99">
a61af66fc99e Initial load
duke
parents:
diff changeset
14279 Clarify the interaction between functions and exceptions.
a61af66fc99e Initial load
duke
parents:
diff changeset
14280 Clarify and give examples of field indices.
a61af66fc99e Initial load
duke
parents:
diff changeset
14281 Remove confusing "That is" sentence from MonitorWait and MonitorWaited events.
a61af66fc99e Initial load
duke
parents:
diff changeset
14282 Update links to point to Java 6.
a61af66fc99e Initial load
duke
parents:
diff changeset
14283 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14284 <change date="6 August 2006" version="1.1.102">
a61af66fc99e Initial load
duke
parents:
diff changeset
14285 Add ResourceExhaustedEvent.
a61af66fc99e Initial load
duke
parents:
diff changeset
14286 </change>
a61af66fc99e Initial load
duke
parents:
diff changeset
14287 </changehistory>
a61af66fc99e Initial load
duke
parents:
diff changeset
14288
a61af66fc99e Initial load
duke
parents:
diff changeset
14289 </specification>
a61af66fc99e Initial load
duke
parents:
diff changeset
14290 <!-- Keep this comment at the end of the file
a61af66fc99e Initial load
duke
parents:
diff changeset
14291 Local variables:
a61af66fc99e Initial load
duke
parents:
diff changeset
14292 mode: sgml
a61af66fc99e Initial load
duke
parents:
diff changeset
14293 sgml-omittag:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14294 sgml-shorttag:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14295 sgml-namecase-general:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14296 sgml-general-insert-case:lower
a61af66fc99e Initial load
duke
parents:
diff changeset
14297 sgml-minimize-attributes:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14298 sgml-always-quote-attributes:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14299 sgml-indent-step:2
a61af66fc99e Initial load
duke
parents:
diff changeset
14300 sgml-indent-data:t
a61af66fc99e Initial load
duke
parents:
diff changeset
14301 sgml-parent-document:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14302 sgml-exposed-tags:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14303 sgml-local-catalogs:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14304 sgml-local-ecat-files:nil
a61af66fc99e Initial load
duke
parents:
diff changeset
14305 End:
a61af66fc99e Initial load
duke
parents:
diff changeset
14306 -->