[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/android 3079e15f546: Update Android port
From: |
Po Lu |
Subject: |
feature/android 3079e15f546: Update Android port |
Date: |
Tue, 27 Jun 2023 03:33:20 -0400 (EDT) |
branch: feature/android
commit 3079e15f546de2c4b36259521eb960bfd248603e
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Update Android port
* src/android.c (android_exception_check)
(android_exception_check_1)
(android_exception_check_2)
(android_exception_check_nonnull)
(android_exception_check_nonnull_1): Tell the compiler to expect
that the object is non-NULL, or that no exception has been
thrown.
---
src/android.c | 80 ++++++++++++++++++++++++++++++++---------------------------
1 file changed, 43 insertions(+), 37 deletions(-)
diff --git a/src/android.c b/src/android.c
index e45aa82fc3c..da5e8da3be1 100644
--- a/src/android.c
+++ b/src/android.c
@@ -6565,8 +6565,8 @@ android_build_jstring (const char *text)
Typically, you use these functions by calling them immediately
after a JNI function which allocates memory, passing it any local
- references that are already valid but are not used after leaving
- the current scope. For example, to allocate foo and then make
+ references that are already valid but should be deleted after
+ leaving the current scope. For example, to allocate foo, make
global_foo its global reference, and then release foo, you write:
jobject foo, global_foo;
@@ -6585,22 +6585,28 @@ android_build_jstring (const char *text)
if global_foo cannot be allocated, and after the global reference
is created. */
+#if __GNUC__ >= 3
+#define likely(cond) __builtin_expect ((cond), 1)
+#else /* __GNUC__ < 3 */
+#define likely(cond) (cond)
+#endif /* __GNUC__ >= 3 */
+
/* Check for JNI exceptions and call memory_full in that
situation. */
void
android_exception_check (void)
{
- if ((*android_java_env)->ExceptionCheck (android_java_env))
- {
- __android_log_print (ANDROID_LOG_WARN, __func__,
- "Possible out of memory error. "
- " The Java exception follows: ");
- /* Describe exactly what went wrong. */
- (*android_java_env)->ExceptionDescribe (android_java_env);
- (*android_java_env)->ExceptionClear (android_java_env);
- memory_full (0);
- }
+ if (likely (!(*android_java_env)->ExceptionCheck (android_java_env)))
+ return;
+
+ __android_log_print (ANDROID_LOG_WARN, __func__,
+ "Possible out of memory error. "
+ " The Java exception follows: ");
+ /* Describe exactly what went wrong. */
+ (*android_java_env)->ExceptionDescribe (android_java_env);
+ (*android_java_env)->ExceptionClear (android_java_env);
+ memory_full (0);
}
/* Check for JNI exceptions. If there is one such exception, clear
@@ -6610,17 +6616,17 @@ android_exception_check (void)
void
android_exception_check_1 (jobject object)
{
- if ((*android_java_env)->ExceptionCheck (android_java_env))
- {
- __android_log_print (ANDROID_LOG_WARN, __func__,
- "Possible out of memory error. "
- " The Java exception follows: ");
- /* Describe exactly what went wrong. */
- (*android_java_env)->ExceptionDescribe (android_java_env);
- (*android_java_env)->ExceptionClear (android_java_env);
- ANDROID_DELETE_LOCAL_REF (object);
- memory_full (0);
- }
+ if (likely (!(*android_java_env)->ExceptionCheck (android_java_env)))
+ return;
+
+ __android_log_print (ANDROID_LOG_WARN, __func__,
+ "Possible out of memory error. "
+ " The Java exception follows: ");
+ /* Describe exactly what went wrong. */
+ (*android_java_env)->ExceptionDescribe (android_java_env);
+ (*android_java_env)->ExceptionClear (android_java_env);
+ ANDROID_DELETE_LOCAL_REF (object);
+ memory_full (0);
}
/* Like android_exception_check_1, except it takes more than one local
@@ -6629,18 +6635,18 @@ android_exception_check_1 (jobject object)
void
android_exception_check_2 (jobject object, jobject object1)
{
- if ((*android_java_env)->ExceptionCheck (android_java_env))
- {
- __android_log_print (ANDROID_LOG_WARN, __func__,
- "Possible out of memory error. "
- " The Java exception follows: ");
- /* Describe exactly what went wrong. */
- (*android_java_env)->ExceptionDescribe (android_java_env);
- (*android_java_env)->ExceptionClear (android_java_env);
- ANDROID_DELETE_LOCAL_REF (object);
- ANDROID_DELETE_LOCAL_REF (object1);
- memory_full (0);
- }
+ if (likely (!(*android_java_env)->ExceptionCheck (android_java_env)))
+ return;
+
+ __android_log_print (ANDROID_LOG_WARN, __func__,
+ "Possible out of memory error. "
+ " The Java exception follows: ");
+ /* Describe exactly what went wrong. */
+ (*android_java_env)->ExceptionDescribe (android_java_env);
+ (*android_java_env)->ExceptionClear (android_java_env);
+ ANDROID_DELETE_LOCAL_REF (object);
+ ANDROID_DELETE_LOCAL_REF (object1);
+ memory_full (0);
}
/* Check for JNI problems based on the value of OBJECT.
@@ -6655,7 +6661,7 @@ android_exception_check_2 (jobject object, jobject
object1)
void
android_exception_check_nonnull (void *object, jobject object1)
{
- if (object)
+ if (likely (object != NULL))
return;
if (object1)
@@ -6673,7 +6679,7 @@ void
android_exception_check_nonnull_1 (void *object, jobject object1,
jobject object2)
{
- if (object)
+ if (likely (object != NULL))
return;
if (object1)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- feature/android 3079e15f546: Update Android port,
Po Lu <=