am 442a079e: Merge "Add swap operation to UniquePtr."
* commit '442a079ec17770e6b0fa912b0c1e26c2dc64af8a':
Add swap operation to UniquePtr.
diff --git a/JNIHelp.cpp b/JNIHelp.cpp
index 0629a53..4b77680 100644
--- a/JNIHelp.cpp
+++ b/JNIHelp.cpp
@@ -330,6 +330,12 @@
(*env)->SetIntField(e, fileDescriptor, fid, value);
}
+jobject jniGetReferent(C_JNIEnv* env, jobject ref) {
+ JNIEnv* e = reinterpret_cast<JNIEnv*>(env);
+ static jmethodID get = e->GetMethodID(JniConstants::referenceClass, "get", "()Ljava/lang/Object;");
+ return (*env)->CallObjectMethod(e, ref, get);
+}
+
/*
* DO NOT USE THIS FUNCTION
*
diff --git a/JniConstants.cpp b/JniConstants.cpp
index 6c3b9aa..9c2c24f 100644
--- a/JniConstants.cpp
+++ b/JniConstants.cpp
@@ -54,6 +54,7 @@
jclass JniConstants::parsePositionClass;
jclass JniConstants::patternSyntaxExceptionClass;
jclass JniConstants::realToStringClass;
+jclass JniConstants::referenceClass;
jclass JniConstants::shortClass;
jclass JniConstants::socketClass;
jclass JniConstants::socketImplClass;
@@ -116,6 +117,7 @@
parsePositionClass = findClass(env, "java/text/ParsePosition");
patternSyntaxExceptionClass = findClass(env, "java/util/regex/PatternSyntaxException");
realToStringClass = findClass(env, "java/lang/RealToString");
+ referenceClass = findClass(env, "java/lang/ref/Reference");
shortClass = findClass(env, "java/lang/Short");
socketClass = findClass(env, "java/net/Socket");
socketImplClass = findClass(env, "java/net/SocketImpl");
diff --git a/include/nativehelper/JNIHelp.h b/include/nativehelper/JNIHelp.h
index 35cdf2e..8a630fe 100644
--- a/include/nativehelper/JNIHelp.h
+++ b/include/nativehelper/JNIHelp.h
@@ -105,6 +105,11 @@
void jniSetFileDescriptorOfFD(C_JNIEnv* env, jobject fileDescriptor, int value);
/*
+ * Returns the reference from a java.lang.ref.Reference.
+ */
+jobject jniGetReferent(C_JNIEnv* env, jobject ref);
+
+/*
* Log a message and an exception.
* If exception is NULL, logs the current exception in the JNI environment.
*/
@@ -165,6 +170,10 @@
jniSetFileDescriptorOfFD(&env->functions, fileDescriptor, value);
}
+inline jobject jniGetReferent(JNIEnv* env, jobject ref) {
+ return jniGetReferent(&env->functions, ref);
+}
+
inline void jniLogException(JNIEnv* env, int priority, const char* tag, jthrowable exception = NULL) {
jniLogException(&env->functions, priority, tag, exception);
}
diff --git a/include/nativehelper/JniConstants.h b/include/nativehelper/JniConstants.h
index f11ec9c..6b8731a 100644
--- a/include/nativehelper/JniConstants.h
+++ b/include/nativehelper/JniConstants.h
@@ -75,6 +75,7 @@
static jclass parsePositionClass;
static jclass patternSyntaxExceptionClass;
static jclass realToStringClass;
+ static jclass referenceClass;
static jclass shortClass;
static jclass socketClass;
static jclass socketImplClass;