void JNICALL OnVMInit(jvmtiEnv *jvmti, JNIEnv *jniEnv, jthread thread) { IMPLICITLY_USE(thread); TimeUtils::init(); // required to init OS X's clock service // Forces the creation of jmethodIDs of the classes that had already // been loaded (eg java.lang.Object, java.lang.ClassLoader) and // OnClassPrepare() misses. jint class_count; JvmtiScopedPtr<jclass> classes(jvmti); JVMTI_ERROR((jvmti->GetLoadedClasses(&class_count, classes.GetRef()))); jclass *classList = classes.Get(); for (int i = 0; i < class_count; ++i) { jclass klass = classList[i]; CreateJMethodIDsForClass(jvmti, klass); } if (!configuration.host.empty() && !configuration.port.empty()) { controller->start(); } }
void JNICALL OnVMInit(jvmtiEnv *jvmti, JNIEnv *jniEnv, jthread thread) { IMPLICITLY_USE(thread); TimeUtils::init(); // required to init OS X's clock service // Forces the creation of jmethodIDs of the classes that had already // been loaded (eg java.lang.Object, java.lang.ClassLoader) and // OnClassPrepare() misses. jint class_count; JvmtiScopedPtr<jclass> classes(jvmti); JVMTI_ERROR((jvmti->GetLoadedClasses(&class_count, classes.GetRef()))); jclass *classList = classes.Get(); for (int i = 0; i < class_count; ++i) { jclass klass = classList[i]; CreateJMethodIDsForClass(jvmti, klass); } #ifndef GETENV_NEW_THREAD_ASYNC_UNSAFE if (CONFIGURATION->host != NULL && CONFIGURATION->port != NULL) { controller->start(); } #endif }