64 nsk_jvmti_setFailStatus();
65 }
66 }
67
68 return JVMTI_ITERATION_CONTINUE;
69 }
70
71 /* ========================================================================== */
72
73 static int prepare(JNIEnv* jni) {
74 const char* CLASS_NAME = "nsk/jvmti/scenarios/multienv/MA04/ma04t002";
75 const char* FIELD_NAME = "testedObject1";
76 const char* FIELD_SIGNATURE = "Ljava/lang/Object;";
77 const char* INSTANCE_NAME = "testedInstance1";
78 const char* INSTANCE_SIGNATURE = "Lnsk/jvmti/scenarios/multienv/MA04/ma04t002;";
79 jfieldID fid = NULL;
80
81 NSK_DISPLAY0("Obtain tested object from a static field of debugee class\n");
82
83 NSK_DISPLAY1("Find class: %s\n", CLASS_NAME);
84 if (!NSK_JNI_VERIFY(jni, (testedClass =
85 NSK_CPP_STUB2(FindClass, jni, CLASS_NAME)) != NULL))
86 return NSK_FALSE;
87
88 if (!NSK_JNI_VERIFY(jni, (testedClass = (jclass)
89 NSK_CPP_STUB2(NewGlobalRef, jni, testedClass)) != NULL))
90 return NSK_FALSE;
91
92 NSK_DISPLAY2("Find field: %s:%s\n", FIELD_NAME, FIELD_SIGNATURE);
93 if (!NSK_JNI_VERIFY(jni, (fid =
94 NSK_CPP_STUB4(GetStaticFieldID, jni, testedClass,
95 FIELD_NAME, FIELD_SIGNATURE)) != NULL))
96 return NSK_FALSE;
97
98 if (!NSK_JNI_VERIFY(jni, (testedObject =
99 NSK_CPP_STUB3(GetStaticObjectField, jni, testedClass, fid)) != NULL))
100 return NSK_FALSE;
101
102 NSK_DISPLAY2("Find class instance: %s:%s\n",
103 INSTANCE_NAME, INSTANCE_SIGNATURE);
104 if (!NSK_JNI_VERIFY(jni, (fid =
105 NSK_CPP_STUB4(GetStaticFieldID, jni, testedClass,
106 INSTANCE_NAME, INSTANCE_SIGNATURE)) != NULL))
107 return NSK_FALSE;
108
109 if (!NSK_JNI_VERIFY(jni, (testedInstance =
110 NSK_CPP_STUB3(GetStaticObjectField, jni, testedClass, fid)) != NULL))
111 return NSK_FALSE;
112
113 return NSK_TRUE;
114 }
115
116 /* ========================================================================== */
117
118 /** Agent algorithm. */
119 static void JNICALL
120 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
121 jint dummy;
122
123 if (!nsk_jvmti_waitForSync(timeout))
124 return;
125
126 if (!prepare(jni)) {
127 nsk_jvmti_setFailStatus();
128 return;
129 }
130
131 NSK_DISPLAY0("Testcase #1: check that there are no tagged objects\n");
132
133 ObjectsCount = 0;
134 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
135 JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
136 nsk_jvmti_setFailStatus();
137 return;
138 }
139 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
140 if (ObjectsCount != 0) {
141 NSK_COMPLAIN1("Some objects were unexpectedly tagged: %d\n",
142 ObjectsCount);
143 nsk_jvmti_setFailStatus();
144 }
145
146 ObjectsCount = 0;
147 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
148 JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {
149 nsk_jvmti_setFailStatus();
150 return;
151 }
152 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
153 if (ObjectsCount != 0) {
154 NSK_COMPLAIN1("Some objects were unexpectedly tagged: %d\n",
155 ObjectsCount);
156 nsk_jvmti_setFailStatus();
157 }
158
159 ObjectsCount = 0;
160 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB5(IterateOverInstancesOfClass, jvmti,
161 testedClass, JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
162 nsk_jvmti_setFailStatus();
163 return;
164 }
165 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
166 if (ObjectsCount != 0) {
167 NSK_COMPLAIN1("Some class instances were unexpectedly tagged: %d\n",
168 ObjectsCount);
169 nsk_jvmti_setFailStatus();
170 }
171
172 ObjectsCount = 0;
173 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB5(IterateOverInstancesOfClass, jvmti,
174 testedClass, JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {
175 nsk_jvmti_setFailStatus();
176 return;
177 }
178 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
179 if (ObjectsCount != 0) {
180 NSK_COMPLAIN1("Some class instances were unexpectedly tagged: %d\n",
181 ObjectsCount);
182 nsk_jvmti_setFailStatus();
183 }
184
185 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB3(SetTag, jvmti, testedObject,
186 SAMPLE_TAG))) {
187 nsk_jvmti_setFailStatus();
188 return;
189 }
190
191 if (!NSK_VERIFY(nsk_jvmti_resumeSync()))
192 return;
193 if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
194 return;
195
196
197 NSK_DISPLAY0("Testcase #2: check that there is only one object tagged\n");
198
199 ObjectsCount = 0;
200 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
201 JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
202 nsk_jvmti_setFailStatus();
203 return;
204 }
205 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
206 if (ObjectsCount != 1) {
207 NSK_COMPLAIN1("Expected 1 object to be tagged: %d\n", ObjectsCount);
208 nsk_jvmti_setFailStatus();
209 }
210
211 ObjectsCount = 0;
212 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
213 JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {
214 nsk_jvmti_setFailStatus();
215 return;
216 }
217 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
218 if (ObjectsCount != 1) {
219 NSK_COMPLAIN1("Expected 1 object to be tagged: %d\n", ObjectsCount);
220 nsk_jvmti_setFailStatus();
221 }
222
223 ObjectsCount = 0;
224 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
225 JVMTI_HEAP_OBJECT_UNTAGGED, heap_object_callback, &dummy))) {
226 nsk_jvmti_setFailStatus();
227 return;
228 }
229 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
230 if (ObjectsCount != 0) {
231 NSK_COMPLAIN1("Some tagged objects were unexpectedly shown as untagged: %d\n",
232 ObjectsCount);
233 nsk_jvmti_setFailStatus();
234 }
235
236 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB3(SetTag, jvmti, testedInstance,
237 SAMPLE_TAG))) {
238 nsk_jvmti_setFailStatus();
239 return;
240 }
241
242 if (!NSK_VERIFY(nsk_jvmti_resumeSync()))
243 return;
244 if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
245 return;
246
247
248 NSK_DISPLAY0("Testcase #3: check that there is only one class object tagged\n");
249
250 ObjectsCount = 0;
251 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB5(IterateOverInstancesOfClass, jvmti,
252 testedClass, JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
253 nsk_jvmti_setFailStatus();
254 return;
255 }
256 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
257 if (ObjectsCount != 1) {
258 NSK_COMPLAIN1("Expected 1 class instance to be tagged: %d\n",
259 ObjectsCount);
260 nsk_jvmti_setFailStatus();
261 }
262
263 ObjectsCount = 0;
264 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB5(IterateOverInstancesOfClass, jvmti,
265 testedClass, JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
266 nsk_jvmti_setFailStatus();
267 return;
268 }
269 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
270 if (ObjectsCount != 1) {
271 NSK_COMPLAIN1("Expected 1 class instance to be tagged: %d\n",
272 ObjectsCount);
273 nsk_jvmti_setFailStatus();
274 }
275
276 ObjectsCount = 0;
277 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
278 JVMTI_HEAP_OBJECT_UNTAGGED, heap_object_callback, &dummy))) {
279 nsk_jvmti_setFailStatus();
280 return;
281 }
282 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
283 if (ObjectsCount != 0) {
284 NSK_COMPLAIN1("Some tagged class instances were unexpectedly shown as untagged: %d\n",
285 ObjectsCount);
286 nsk_jvmti_setFailStatus();
287 }
288
289
290 NSK_TRACE(NSK_CPP_STUB2(DeleteGlobalRef, jni, testedClass));
291
292 if (!nsk_jvmti_resumeSync())
293 return;
294 }
295
296 /* ========================================================================== */
297
298 /** Agent library initialization. */
299 #ifdef STATIC_BUILD
300 JNIEXPORT jint JNICALL Agent_OnLoad_ma04t002(JavaVM *jvm, char *options, void *reserved) {
301 return Agent_Initialize(jvm, options, reserved);
302 }
303 JNIEXPORT jint JNICALL Agent_OnAttach_ma04t002(JavaVM *jvm, char *options, void *reserved) {
304 return Agent_Initialize(jvm, options, reserved);
305 }
306 JNIEXPORT jint JNI_OnLoad_ma04t002(JavaVM *jvm, char *options, void *reserved) {
307 return JNI_VERSION_1_8;
308 }
309 #endif
310 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
311 jvmtiEnv* jvmti = NULL;
312 jvmtiEventCallbacks callbacks;
313 jvmtiCapabilities caps;
314
315 NSK_DISPLAY0("Agent_OnLoad\n");
316
317 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
318 return JNI_ERR;
319
320 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
321
322 if (!NSK_VERIFY((jvmti =
323 nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
324 return JNI_ERR;
325
326 memset(&caps, 0, sizeof(caps));
327 caps.can_tag_objects = 1;
328 caps.can_generate_object_free_events = 1;
329 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB2(AddCapabilities, jvmti, &caps))) {
330 return JNI_ERR;
331 }
332
333 if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL)))
334 return JNI_ERR;
335
336 memset(&callbacks, 0, sizeof(callbacks));
337 if (!NSK_VERIFY(nsk_jvmti_init_MA(&callbacks)))
338 return JNI_ERR;
339
340 if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(SetEventNotificationMode,
341 jvmti, JVMTI_ENABLE, JVMTI_EVENT_OBJECT_FREE, NULL)))
342 return JNI_ERR;
343
344 return JNI_OK;
345 }
346
347 /* ========================================================================== */
348
349 }
|
64 nsk_jvmti_setFailStatus();
65 }
66 }
67
68 return JVMTI_ITERATION_CONTINUE;
69 }
70
71 /* ========================================================================== */
72
73 static int prepare(JNIEnv* jni) {
74 const char* CLASS_NAME = "nsk/jvmti/scenarios/multienv/MA04/ma04t002";
75 const char* FIELD_NAME = "testedObject1";
76 const char* FIELD_SIGNATURE = "Ljava/lang/Object;";
77 const char* INSTANCE_NAME = "testedInstance1";
78 const char* INSTANCE_SIGNATURE = "Lnsk/jvmti/scenarios/multienv/MA04/ma04t002;";
79 jfieldID fid = NULL;
80
81 NSK_DISPLAY0("Obtain tested object from a static field of debugee class\n");
82
83 NSK_DISPLAY1("Find class: %s\n", CLASS_NAME);
84 if (!NSK_JNI_VERIFY(jni, (testedClass = jni->FindClass(CLASS_NAME)) != NULL))
85 return NSK_FALSE;
86
87 if (!NSK_JNI_VERIFY(jni, (testedClass = (jclass) jni->NewGlobalRef(testedClass)) != NULL))
88 return NSK_FALSE;
89
90 NSK_DISPLAY2("Find field: %s:%s\n", FIELD_NAME, FIELD_SIGNATURE);
91 if (!NSK_JNI_VERIFY(jni, (fid =
92 jni->GetStaticFieldID(testedClass, FIELD_NAME, FIELD_SIGNATURE)) != NULL))
93 return NSK_FALSE;
94
95 if (!NSK_JNI_VERIFY(jni, (testedObject = jni->GetStaticObjectField(testedClass, fid)) != NULL))
96 return NSK_FALSE;
97
98 NSK_DISPLAY2("Find class instance: %s:%s\n",
99 INSTANCE_NAME, INSTANCE_SIGNATURE);
100 if (!NSK_JNI_VERIFY(jni, (fid =
101 jni->GetStaticFieldID(testedClass, INSTANCE_NAME, INSTANCE_SIGNATURE)) != NULL))
102 return NSK_FALSE;
103
104 if (!NSK_JNI_VERIFY(jni, (testedInstance =
105 jni->GetStaticObjectField(testedClass, fid)) != NULL))
106 return NSK_FALSE;
107
108 return NSK_TRUE;
109 }
110
111 /* ========================================================================== */
112
113 /** Agent algorithm. */
114 static void JNICALL
115 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
116 jint dummy;
117
118 if (!nsk_jvmti_waitForSync(timeout))
119 return;
120
121 if (!prepare(jni)) {
122 nsk_jvmti_setFailStatus();
123 return;
124 }
125
126 NSK_DISPLAY0("Testcase #1: check that there are no tagged objects\n");
127
128 ObjectsCount = 0;
129 if (!NSK_JVMTI_VERIFY(jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
130 nsk_jvmti_setFailStatus();
131 return;
132 }
133 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
134 if (ObjectsCount != 0) {
135 NSK_COMPLAIN1("Some objects were unexpectedly tagged: %d\n",
136 ObjectsCount);
137 nsk_jvmti_setFailStatus();
138 }
139
140 ObjectsCount = 0;
141 if (!NSK_JVMTI_VERIFY(jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {
142 nsk_jvmti_setFailStatus();
143 return;
144 }
145 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
146 if (ObjectsCount != 0) {
147 NSK_COMPLAIN1("Some objects were unexpectedly tagged: %d\n",
148 ObjectsCount);
149 nsk_jvmti_setFailStatus();
150 }
151
152 ObjectsCount = 0;
153 if (!NSK_JVMTI_VERIFY(jvmti->IterateOverInstancesOfClass(testedClass,
154 JVMTI_HEAP_OBJECT_EITHER,
155 heap_object_callback,
156 &dummy))) {
157 nsk_jvmti_setFailStatus();
158 return;
159 }
160 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
161 if (ObjectsCount != 0) {
162 NSK_COMPLAIN1("Some class instances were unexpectedly tagged: %d\n",
163 ObjectsCount);
164 nsk_jvmti_setFailStatus();
165 }
166
167 ObjectsCount = 0;
168 if (!NSK_JVMTI_VERIFY(jvmti->IterateOverInstancesOfClass(testedClass,
169 JVMTI_HEAP_OBJECT_TAGGED,
170 heap_object_callback,
171 &dummy))) {
172 nsk_jvmti_setFailStatus();
173 return;
174 }
175 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
176 if (ObjectsCount != 0) {
177 NSK_COMPLAIN1("Some class instances were unexpectedly tagged: %d\n",
178 ObjectsCount);
179 nsk_jvmti_setFailStatus();
180 }
181
182 if (!NSK_JVMTI_VERIFY(jvmti->SetTag(testedObject, SAMPLE_TAG))) {
183 nsk_jvmti_setFailStatus();
184 return;
185 }
186
187 if (!NSK_VERIFY(nsk_jvmti_resumeSync()))
188 return;
189 if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
190 return;
191
192
193 NSK_DISPLAY0("Testcase #2: check that there is only one object tagged\n");
194
195 ObjectsCount = 0;
196 if (!NSK_JVMTI_VERIFY(
197 jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
198 nsk_jvmti_setFailStatus();
199 return;
200 }
201 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
202 if (ObjectsCount != 1) {
203 NSK_COMPLAIN1("Expected 1 object to be tagged: %d\n", ObjectsCount);
204 nsk_jvmti_setFailStatus();
205 }
206
207 ObjectsCount = 0;
208 if (!NSK_JVMTI_VERIFY(
209 jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {
210 nsk_jvmti_setFailStatus();
211 return;
212 }
213 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
214 if (ObjectsCount != 1) {
215 NSK_COMPLAIN1("Expected 1 object to be tagged: %d\n", ObjectsCount);
216 nsk_jvmti_setFailStatus();
217 }
218
219 ObjectsCount = 0;
220 if (!NSK_JVMTI_VERIFY(jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_UNTAGGED, heap_object_callback, &dummy))) {
221 nsk_jvmti_setFailStatus();
222 return;
223 }
224 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
225 if (ObjectsCount != 0) {
226 NSK_COMPLAIN1("Some tagged objects were unexpectedly shown as untagged: %d\n",
227 ObjectsCount);
228 nsk_jvmti_setFailStatus();
229 }
230
231 if (!NSK_JVMTI_VERIFY(jvmti->SetTag(testedInstance, SAMPLE_TAG))) {
232 nsk_jvmti_setFailStatus();
233 return;
234 }
235
236 if (!NSK_VERIFY(nsk_jvmti_resumeSync()))
237 return;
238 if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
239 return;
240
241
242 NSK_DISPLAY0("Testcase #3: check that there is only one class object tagged\n");
243
244 ObjectsCount = 0;
245 if (!NSK_JVMTI_VERIFY(jvmti->IterateOverInstancesOfClass(testedClass,
246 JVMTI_HEAP_OBJECT_EITHER,
247 heap_object_callback,
248 &dummy))) {
249 nsk_jvmti_setFailStatus();
250 return;
251 }
252 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
253 if (ObjectsCount != 1) {
254 NSK_COMPLAIN1("Expected 1 class instance to be tagged: %d\n",
255 ObjectsCount);
256 nsk_jvmti_setFailStatus();
257 }
258
259 ObjectsCount = 0;
260 if (!NSK_JVMTI_VERIFY(jvmti->IterateOverInstancesOfClass(testedClass,
261 JVMTI_HEAP_OBJECT_EITHER,
262 heap_object_callback,
263 &dummy))) {
264 nsk_jvmti_setFailStatus();
265 return;
266 }
267 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
268 if (ObjectsCount != 1) {
269 NSK_COMPLAIN1("Expected 1 class instance to be tagged: %d\n",
270 ObjectsCount);
271 nsk_jvmti_setFailStatus();
272 }
273
274 ObjectsCount = 0;
275 if (!NSK_JVMTI_VERIFY(jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_UNTAGGED, heap_object_callback, &dummy))) {
276 nsk_jvmti_setFailStatus();
277 return;
278 }
279 NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
280 if (ObjectsCount != 0) {
281 NSK_COMPLAIN1("Some tagged class instances were unexpectedly shown as untagged: %d\n",
282 ObjectsCount);
283 nsk_jvmti_setFailStatus();
284 }
285
286
287 NSK_TRACE(jni->DeleteGlobalRef(testedClass));
288
289 if (!nsk_jvmti_resumeSync())
290 return;
291 }
292
293 /* ========================================================================== */
294
295 /** Agent library initialization. */
296 #ifdef STATIC_BUILD
297 JNIEXPORT jint JNICALL Agent_OnLoad_ma04t002(JavaVM *jvm, char *options, void *reserved) {
298 return Agent_Initialize(jvm, options, reserved);
299 }
300 JNIEXPORT jint JNICALL Agent_OnAttach_ma04t002(JavaVM *jvm, char *options, void *reserved) {
301 return Agent_Initialize(jvm, options, reserved);
302 }
303 JNIEXPORT jint JNI_OnLoad_ma04t002(JavaVM *jvm, char *options, void *reserved) {
304 return JNI_VERSION_1_8;
305 }
306 #endif
307 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
308 jvmtiEnv* jvmti = NULL;
309 jvmtiEventCallbacks callbacks;
310 jvmtiCapabilities caps;
311
312 NSK_DISPLAY0("Agent_OnLoad\n");
313
314 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
315 return JNI_ERR;
316
317 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
318
319 if (!NSK_VERIFY((jvmti =
320 nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
321 return JNI_ERR;
322
323 memset(&caps, 0, sizeof(caps));
324 caps.can_tag_objects = 1;
325 caps.can_generate_object_free_events = 1;
326 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(&caps))) {
327 return JNI_ERR;
328 }
329
330 if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL)))
331 return JNI_ERR;
332
333 memset(&callbacks, 0, sizeof(callbacks));
334 if (!NSK_VERIFY(nsk_jvmti_init_MA(&callbacks)))
335 return JNI_ERR;
336
337 if (!NSK_JVMTI_VERIFY(jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_OBJECT_FREE, NULL)))
338 return JNI_ERR;
339
340 return JNI_OK;
341 }
342
343 /* ========================================================================== */
344
345 }
|