188 JNIEnv* jni = NULL;
189
190 if (!NSK_VERIFY((options = (Options*) nsk_aod_createOptions(optionsString)) != NULL))
191 return JNI_ERR;
192
193 agentName = nsk_aod_getOptionValue(options, NSK_AOD_AGENT_NAME_OPTION);
194
195 if ((jni = (JNIEnv*) nsk_aod_createJNIEnv(vm)) == NULL)
196 return NSK_FALSE;
197
198 if (!NSK_VERIFY((jvmti = nsk_jvmti_createJVMTIEnv(vm, reserved)) != NULL))
199 return JNI_ERR;
200
201 if (!NSK_VERIFY(registerNativeMethods(jni))) {
202 return JNI_ERR;
203 }
204
205 memset(&caps, 0, sizeof(caps));
206 caps.can_generate_all_class_hook_events = 1;
207 caps.can_redefine_classes = 1;
208 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(&caps)) ) {
209 /*
210 * If VM is run with -Xshare:on agent can't get required capabilities (see 6718407)
211 */
212 NSK_DISPLAY1("%s: warning: agent failed to get required capabilities, agent finishing\n", agentName);
213
214 if (!NSK_VERIFY(nsk_aod_agentLoaded(jni, agentName)))
215 return JNI_ERR;
216
217 nsk_aod_agentFinished(jni, agentName, 1);
218 } else {
219 agentGotCapabilities = JNI_TRUE;
220
221 memset(&eventCallbacks,0, sizeof(eventCallbacks));
222 eventCallbacks.ClassLoad = classLoadHandler;
223 eventCallbacks.ClassPrepare = classPrepareHandler;
224 eventCallbacks.ClassFileLoadHook = classFileLoadHoockHandler;
225 if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks))) ) {
226 return JNI_ERR;
227 }
228
229 if (!(nsk_jvmti_aod_enableEvents(jvmti, testEvents, testEventsNumber))) {
230 return JNI_ERR;
231 }
232
233 NSK_DISPLAY1("%s: initialization was done\n", agentName);
234
235 if (!NSK_VERIFY(nsk_aod_agentLoaded(jni, agentName)))
236 return JNI_ERR;
237 }
238
239 return JNI_OK;
240 }
241
242 }
|
188 JNIEnv* jni = NULL;
189
190 if (!NSK_VERIFY((options = (Options*) nsk_aod_createOptions(optionsString)) != NULL))
191 return JNI_ERR;
192
193 agentName = nsk_aod_getOptionValue(options, NSK_AOD_AGENT_NAME_OPTION);
194
195 if ((jni = (JNIEnv*) nsk_aod_createJNIEnv(vm)) == NULL)
196 return NSK_FALSE;
197
198 if (!NSK_VERIFY((jvmti = nsk_jvmti_createJVMTIEnv(vm, reserved)) != NULL))
199 return JNI_ERR;
200
201 if (!NSK_VERIFY(registerNativeMethods(jni))) {
202 return JNI_ERR;
203 }
204
205 memset(&caps, 0, sizeof(caps));
206 caps.can_generate_all_class_hook_events = 1;
207 caps.can_redefine_classes = 1;
208 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(&caps))) {
209 /*
210 * If VM is run with -Xshare:on agent can't get required capabilities (see 6718407)
211 */
212 NSK_DISPLAY1("%s: warning: agent failed to get required capabilities, agent finishing\n", agentName);
213
214 if (!NSK_VERIFY(nsk_aod_agentLoaded(jni, agentName)))
215 return JNI_ERR;
216
217 nsk_aod_agentFinished(jni, agentName, 1);
218 } else {
219 agentGotCapabilities = JNI_TRUE;
220
221 memset(&eventCallbacks,0, sizeof(eventCallbacks));
222 eventCallbacks.ClassLoad = classLoadHandler;
223 eventCallbacks.ClassPrepare = classPrepareHandler;
224 eventCallbacks.ClassFileLoadHook = classFileLoadHoockHandler;
225 if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks)))) {
226 return JNI_ERR;
227 }
228
229 if (!(nsk_jvmti_aod_enableEvents(jvmti, testEvents, testEventsNumber))) {
230 return JNI_ERR;
231 }
232
233 NSK_DISPLAY1("%s: initialization was done\n", agentName);
234
235 if (!NSK_VERIFY(nsk_aod_agentLoaded(jni, agentName)))
236 return JNI_ERR;
237 }
238
239 return JNI_OK;
240 }
241
242 }
|