| 25 | |
| 26 | |
| 27 | extern "C" DLLEXPORT void JNICALL |
| 28 | Java_one_profiler_AsyncProfiler_start0(JNIEnv* env, jobject unused, jstring event, jlong interval, jboolean reset) { |
| 29 | Arguments args; |
| 30 | const char* event_str = env->GetStringUTFChars(event, NULL); |
| 31 | if (strcmp(event_str, EVENT_ALLOC) == 0) { |
| 32 | args._alloc = interval > 0 ? interval : 0; |
| 33 | } else if (strcmp(event_str, EVENT_LOCK) == 0) { |
| 34 | args._lock = interval >= 0 ? interval : DEFAULT_LOCK_INTERVAL; |
| 35 | } else { |
| 36 | args._event = event_str; |
| 37 | args._interval = interval; |
| 38 | } |
| 39 | |
| 40 | Error error = Profiler::instance()->start(args, reset); |
| 41 | env->ReleaseStringUTFChars(event, event_str); |
| 42 | |
| 43 | if (error) { |
| 44 | throwNew(env, "java/lang/IllegalStateException", error.message()); |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | extern "C" DLLEXPORT void JNICALL |
| 49 | Java_one_profiler_AsyncProfiler_stop0(JNIEnv* env, jobject unused) { |