Lines Matching refs:jvmti
72 static AgentInfo* GetAgentInfo(jvmtiEnv* jvmti) { in GetAgentInfo() argument
74 CHECK_EQ(jvmti->GetEnvironmentLocalStorage(reinterpret_cast<void**>(&ai)), JVMTI_ERROR_NONE); in GetAgentInfo()
81 explicit JvmtiAllocator(jvmtiEnv* jvmti) : jvmti_(jvmti) {} in JvmtiAllocator() argument
134 static void CbClassFileLoadHook(jvmtiEnv* jvmti, in CbClassFileLoadHook() argument
146 AgentInfo* ai = GetAgentInfo(jvmti); in CbClassFileLoadHook()
153 LOG(INFO) << "Got CFLH for " << name << " on env " << static_cast<void*>(jvmti); in CbClassFileLoadHook()
154 JvmtiAllocator allocator(jvmti); in CbClassFileLoadHook()
166 static jclass FindClass(jvmtiEnv* jvmti, JNIEnv* env, const std::string& name) { in FindClass() argument
178 if (jvmti->GetLoadedClasses(&cnt, &klasses) != JVMTI_ERROR_NONE) { in FindClass()
184 if (jvmti->GetClassSignature(klasses[i], &sig, nullptr) != JVMTI_ERROR_NONE) { in FindClass()
192 jvmti->Deallocate(reinterpret_cast<unsigned char*>(klasses)); in FindClass()
201 static void RedefineClass(jvmtiEnv* jvmti, JNIEnv* env, const std::string& klass_name) { in RedefineClass() argument
203 if ((klass = FindClass(jvmti, env, klass_name)) == nullptr) { in RedefineClass()
209 jvmti->RetransformClasses(1, &klass); in RedefineClass()
213 static void AgentMain(jvmtiEnv* jvmti, JNIEnv* jni, [[maybe_unused]] void* arg) { in AgentMain() argument
214 AgentInfo* ai = GetAgentInfo(jvmti); in AgentMain()
216 jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, nullptr); in AgentMain()
219 LOG(INFO) << "Redefining class " << klass_name << " with " << static_cast<void*>(jvmti); in AgentMain()
224 RedefineClass(jvmti, jni, klass_name); in AgentMain()
228 static void CbVmInit(jvmtiEnv* jvmti, JNIEnv* env, [[maybe_unused]] jthread thr) { in CbVmInit() argument
258 jvmti->RunAgentThread(thread.get(), AgentMain, nullptr, JVMTI_THREAD_MIN_PRIORITY); in CbVmInit()
265 jvmtiEnv* jvmti = nullptr; in AgentStart() local
267 if (vm->GetEnv(reinterpret_cast<void**>(&jvmti), JVMTI_VERSION_1_1) != JNI_OK || in AgentStart()
268 jvmti == nullptr) { in AgentStart()
283 if (jvmti->AddCapabilities(&caps) != JVMTI_ERROR_NONE) { in AgentStart()
291 jvmti->SetEventCallbacks(&cb, sizeof(cb)); in AgentStart()
292 jvmti->SetEnvironmentLocalStorage(reinterpret_cast<void*>(ai)); in AgentStart()
294 jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_VM_INIT, nullptr); in AgentStart()
299 jvmti->GetCurrentThread(&thr); in AgentStart()
300 CbVmInit(jvmti, jni, thr); in AgentStart()