Loading core/java/android/os/SystemClock.java +15 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.app.IAlarmManager; import android.content.Context; import android.util.Slog; import dalvik.annotation.optimization.CriticalNative; /** * Core timekeeping facilities. * Loading Loading @@ -162,6 +164,7 @@ public final class SystemClock { * * @return milliseconds of non-sleep uptime since boot. */ @CriticalNative native public static long uptimeMillis(); /** Loading @@ -169,6 +172,7 @@ public final class SystemClock { * * @return elapsed milliseconds since boot. */ @CriticalNative native public static long elapsedRealtime(); /** Loading @@ -176,6 +180,7 @@ public final class SystemClock { * * @return elapsed nanoseconds since boot. */ @CriticalNative public static native long elapsedRealtimeNanos(); /** Loading @@ -183,6 +188,7 @@ public final class SystemClock { * * @return elapsed milliseconds in the thread */ @CriticalNative public static native long currentThreadTimeMillis(); /** Loading @@ -192,6 +198,7 @@ public final class SystemClock { * * @hide */ @CriticalNative public static native long currentThreadTimeMicro(); /** Loading @@ -201,5 +208,6 @@ public final class SystemClock { * * @hide */ @CriticalNative public static native long currentTimeMicro(); } core/jni/android_os_SystemClock.cpp +20 −42 Original line number Diff line number Diff line Loading @@ -36,29 +36,18 @@ namespace android { /* * native public static long uptimeMillis(); */ static jlong android_os_SystemClock_uptimeMillis(JNIEnv* env, jobject clazz) { return (jlong)uptimeMillis(); } /* * native public static long elapsedRealtime(); */ static jlong android_os_SystemClock_elapsedRealtime(JNIEnv* env, jobject clazz) { return (jlong)elapsedRealtime(); } static_assert(std::is_same<int64_t, jlong>::value, "jlong isn't an int64_t"); static_assert(std::is_same<decltype(uptimeMillis()), int64_t>::value, "uptimeMillis signature change, expected int64_t return value"); static_assert(std::is_same<decltype(elapsedRealtime()), int64_t>::value, "uptimeMillis signature change, expected int64_t return value"); static_assert(std::is_same<decltype(elapsedRealtimeNano()), int64_t>::value, "uptimeMillis signature change, expected int64_t return value"); /* * native public static long currentThreadTimeMillis(); */ static jlong android_os_SystemClock_currentThreadTimeMillis(JNIEnv* env, jobject clazz) static jlong android_os_SystemClock_currentThreadTimeMillis() { struct timespec tm; Loading @@ -70,8 +59,7 @@ static jlong android_os_SystemClock_currentThreadTimeMillis(JNIEnv* env, /* * native public static long currentThreadTimeMicro(); */ static jlong android_os_SystemClock_currentThreadTimeMicro(JNIEnv* env, jobject clazz) static jlong android_os_SystemClock_currentThreadTimeMicro() { struct timespec tm; Loading @@ -83,8 +71,7 @@ static jlong android_os_SystemClock_currentThreadTimeMicro(JNIEnv* env, /* * native public static long currentTimeMicro(); */ static jlong android_os_SystemClock_currentTimeMicro(JNIEnv* env, jobject clazz) static jlong android_os_SystemClock_currentTimeMicro() { struct timeval tv; Loading @@ -92,32 +79,23 @@ static jlong android_os_SystemClock_currentTimeMicro(JNIEnv* env, return tv.tv_sec * 1000000LL + tv.tv_usec; } /* * public static native long elapsedRealtimeNano(); */ static jlong android_os_SystemClock_elapsedRealtimeNano(JNIEnv* env, jobject clazz) { return (jlong)elapsedRealtimeNano(); } /* * JNI registration. */ static const JNINativeMethod gMethods[] = { /* name, signature, funcPtr */ { "uptimeMillis", "!()J", (void*) android_os_SystemClock_uptimeMillis }, { "elapsedRealtime", "!()J", (void*) android_os_SystemClock_elapsedRealtime }, { "currentThreadTimeMillis", "!()J", // All of these are @CriticalNative, so we can defer directly to SystemClock.h for // some of these { "uptimeMillis", "()J", (void*) uptimeMillis }, { "elapsedRealtime", "()J", (void*) elapsedRealtime }, { "elapsedRealtimeNanos", "()J", (void*) elapsedRealtimeNano }, // SystemClock doesn't have an implementation for these that we can directly call { "currentThreadTimeMillis", "()J", (void*) android_os_SystemClock_currentThreadTimeMillis }, { "currentThreadTimeMicro", "!()J", { "currentThreadTimeMicro", "()J", (void*) android_os_SystemClock_currentThreadTimeMicro }, { "currentTimeMicro", "!()J", { "currentTimeMicro", "()J", (void*) android_os_SystemClock_currentTimeMicro }, { "elapsedRealtimeNanos", "!()J", (void*) android_os_SystemClock_elapsedRealtimeNano }, }; int register_android_os_SystemClock(JNIEnv* env) { Loading Loading
core/java/android/os/SystemClock.java +15 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.app.IAlarmManager; import android.content.Context; import android.util.Slog; import dalvik.annotation.optimization.CriticalNative; /** * Core timekeeping facilities. * Loading Loading @@ -162,6 +164,7 @@ public final class SystemClock { * * @return milliseconds of non-sleep uptime since boot. */ @CriticalNative native public static long uptimeMillis(); /** Loading @@ -169,6 +172,7 @@ public final class SystemClock { * * @return elapsed milliseconds since boot. */ @CriticalNative native public static long elapsedRealtime(); /** Loading @@ -176,6 +180,7 @@ public final class SystemClock { * * @return elapsed nanoseconds since boot. */ @CriticalNative public static native long elapsedRealtimeNanos(); /** Loading @@ -183,6 +188,7 @@ public final class SystemClock { * * @return elapsed milliseconds in the thread */ @CriticalNative public static native long currentThreadTimeMillis(); /** Loading @@ -192,6 +198,7 @@ public final class SystemClock { * * @hide */ @CriticalNative public static native long currentThreadTimeMicro(); /** Loading @@ -201,5 +208,6 @@ public final class SystemClock { * * @hide */ @CriticalNative public static native long currentTimeMicro(); }
core/jni/android_os_SystemClock.cpp +20 −42 Original line number Diff line number Diff line Loading @@ -36,29 +36,18 @@ namespace android { /* * native public static long uptimeMillis(); */ static jlong android_os_SystemClock_uptimeMillis(JNIEnv* env, jobject clazz) { return (jlong)uptimeMillis(); } /* * native public static long elapsedRealtime(); */ static jlong android_os_SystemClock_elapsedRealtime(JNIEnv* env, jobject clazz) { return (jlong)elapsedRealtime(); } static_assert(std::is_same<int64_t, jlong>::value, "jlong isn't an int64_t"); static_assert(std::is_same<decltype(uptimeMillis()), int64_t>::value, "uptimeMillis signature change, expected int64_t return value"); static_assert(std::is_same<decltype(elapsedRealtime()), int64_t>::value, "uptimeMillis signature change, expected int64_t return value"); static_assert(std::is_same<decltype(elapsedRealtimeNano()), int64_t>::value, "uptimeMillis signature change, expected int64_t return value"); /* * native public static long currentThreadTimeMillis(); */ static jlong android_os_SystemClock_currentThreadTimeMillis(JNIEnv* env, jobject clazz) static jlong android_os_SystemClock_currentThreadTimeMillis() { struct timespec tm; Loading @@ -70,8 +59,7 @@ static jlong android_os_SystemClock_currentThreadTimeMillis(JNIEnv* env, /* * native public static long currentThreadTimeMicro(); */ static jlong android_os_SystemClock_currentThreadTimeMicro(JNIEnv* env, jobject clazz) static jlong android_os_SystemClock_currentThreadTimeMicro() { struct timespec tm; Loading @@ -83,8 +71,7 @@ static jlong android_os_SystemClock_currentThreadTimeMicro(JNIEnv* env, /* * native public static long currentTimeMicro(); */ static jlong android_os_SystemClock_currentTimeMicro(JNIEnv* env, jobject clazz) static jlong android_os_SystemClock_currentTimeMicro() { struct timeval tv; Loading @@ -92,32 +79,23 @@ static jlong android_os_SystemClock_currentTimeMicro(JNIEnv* env, return tv.tv_sec * 1000000LL + tv.tv_usec; } /* * public static native long elapsedRealtimeNano(); */ static jlong android_os_SystemClock_elapsedRealtimeNano(JNIEnv* env, jobject clazz) { return (jlong)elapsedRealtimeNano(); } /* * JNI registration. */ static const JNINativeMethod gMethods[] = { /* name, signature, funcPtr */ { "uptimeMillis", "!()J", (void*) android_os_SystemClock_uptimeMillis }, { "elapsedRealtime", "!()J", (void*) android_os_SystemClock_elapsedRealtime }, { "currentThreadTimeMillis", "!()J", // All of these are @CriticalNative, so we can defer directly to SystemClock.h for // some of these { "uptimeMillis", "()J", (void*) uptimeMillis }, { "elapsedRealtime", "()J", (void*) elapsedRealtime }, { "elapsedRealtimeNanos", "()J", (void*) elapsedRealtimeNano }, // SystemClock doesn't have an implementation for these that we can directly call { "currentThreadTimeMillis", "()J", (void*) android_os_SystemClock_currentThreadTimeMillis }, { "currentThreadTimeMicro", "!()J", { "currentThreadTimeMicro", "()J", (void*) android_os_SystemClock_currentThreadTimeMicro }, { "currentTimeMicro", "!()J", { "currentTimeMicro", "()J", (void*) android_os_SystemClock_currentTimeMicro }, { "elapsedRealtimeNanos", "!()J", (void*) android_os_SystemClock_elapsedRealtimeNano }, }; int register_android_os_SystemClock(JNIEnv* env) { Loading