AArch64: Use of long for pointers in PropertyValuesHolder

Long is used in PropertyValuesHolder class to store native pointers
as they can be 64-bit. Note that jmethodID, a pointer to structures,
is also carried in long rather than int to support 64-bit system.

Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>

(cherry picked from commit 0141e884344a5c267239079d615e1c9d9898a222)

Change-Id: I80408a7227427732db0d8b4c960bcb849b7c8060
diff --git a/core/jni/android_animation_PropertyValuesHolder.cpp b/core/jni/android_animation_PropertyValuesHolder.cpp
index 73347ea..ef1c4ed 100644
--- a/core/jni/android_animation_PropertyValuesHolder.cpp
+++ b/core/jni/android_animation_PropertyValuesHolder.cpp
@@ -29,25 +29,25 @@
 
 const char* const kClassPathName = "android/animation/PropertyValuesHolder";
 
-static jmethodID android_animation_PropertyValuesHolder_getIntMethod(
+static jlong android_animation_PropertyValuesHolder_getIntMethod(
         JNIEnv* env, jclass pvhClass, jclass targetClass, jstring methodName)
 {
     const char *nativeString = env->GetStringUTFChars(methodName, 0);
     jmethodID mid = env->GetMethodID(targetClass, nativeString, "(I)V");
     env->ReleaseStringUTFChars(methodName, nativeString);
-    return mid;
+    return reinterpret_cast<jlong>(mid);
 }
 
-static jmethodID android_animation_PropertyValuesHolder_getFloatMethod(
+static jlong android_animation_PropertyValuesHolder_getFloatMethod(
         JNIEnv* env, jclass pvhClass, jclass targetClass, jstring methodName)
 {
     const char *nativeString = env->GetStringUTFChars(methodName, 0);
     jmethodID mid = env->GetMethodID(targetClass, nativeString, "(F)V");
     env->ReleaseStringUTFChars(methodName, nativeString);
-    return mid;
+    return reinterpret_cast<jlong>(mid);
 }
 
-static jmethodID getMultiparameterMethod(JNIEnv* env, jclass targetClass, jstring methodName,
+static jlong getMultiparameterMethod(JNIEnv* env, jclass targetClass, jstring methodName,
     jint parameterCount, char parameterType)
 {
     const char *nativeString = env->GetStringUTFChars(methodName, 0);
@@ -58,48 +58,48 @@
     jmethodID mid = env->GetMethodID(targetClass, nativeString, signature);
     delete[] signature;
     env->ReleaseStringUTFChars(methodName, nativeString);
-    return mid;
+    return reinterpret_cast<jlong>(mid);
 }
 
-static jmethodID android_animation_PropertyValuesHolder_getMultipleFloatMethod(
+static jlong android_animation_PropertyValuesHolder_getMultipleFloatMethod(
         JNIEnv* env, jclass pvhClass, jclass targetClass, jstring methodName, jint parameterCount)
 {
     return getMultiparameterMethod(env, targetClass, methodName, parameterCount, 'F');
 }
 
-static jmethodID android_animation_PropertyValuesHolder_getMultipleIntMethod(
+static jlong android_animation_PropertyValuesHolder_getMultipleIntMethod(
         JNIEnv* env, jclass pvhClass, jclass targetClass, jstring methodName, jint parameterCount)
 {
     return getMultiparameterMethod(env, targetClass, methodName, parameterCount, 'I');
 }
 
 static void android_animation_PropertyValuesHolder_callIntMethod(
-        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, int arg)
+        JNIEnv* env, jclass pvhObject, jobject target, jlong methodID, jint arg)
 {
-    env->CallVoidMethod(target, methodID, arg);
+    env->CallVoidMethod(target, reinterpret_cast<jmethodID>(methodID), arg);
 }
 
 static void android_animation_PropertyValuesHolder_callFloatMethod(
-        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, float arg)
+        JNIEnv* env, jclass pvhObject, jobject target, jlong methodID, jfloat arg)
 {
-    env->CallVoidMethod(target, methodID, arg);
+    env->CallVoidMethod(target, reinterpret_cast<jmethodID>(methodID), arg);
 }
 
 static void android_animation_PropertyValuesHolder_callTwoFloatMethod(
-        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, float arg1, float arg2)
+        JNIEnv* env, jclass pvhObject, jobject target, jlong methodID, float arg1, float arg2)
 {
-    env->CallVoidMethod(target, methodID, arg1, arg2);
+    env->CallVoidMethod(target, reinterpret_cast<jmethodID>(methodID), arg1, arg2);
 }
 
 static void android_animation_PropertyValuesHolder_callFourFloatMethod(
-        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, float arg1, float arg2,
+        JNIEnv* env, jclass pvhObject, jobject target, jlong methodID, float arg1, float arg2,
         float arg3, float arg4)
 {
-    env->CallVoidMethod(target, methodID, arg1, arg2, arg3, arg4);
+    env->CallVoidMethod(target, reinterpret_cast<jmethodID>(methodID), arg1, arg2, arg3, arg4);
 }
 
 static void android_animation_PropertyValuesHolder_callMultipleFloatMethod(
-        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, jfloatArray arg)
+        JNIEnv* env, jclass pvhObject, jobject target, jlong methodID, jfloatArray arg)
 {
     jsize parameterCount = env->GetArrayLength(arg);
     jfloat *floatValues = env->GetFloatArrayElements(arg, NULL);
@@ -107,26 +107,26 @@
     for (int i = 0; i < parameterCount; i++) {
         values[i].f = floatValues[i];
     }
-    env->CallVoidMethodA(target, methodID, values);
+    env->CallVoidMethodA(target, reinterpret_cast<jmethodID>(methodID), values);
     delete[] values;
     env->ReleaseFloatArrayElements(arg, floatValues, JNI_ABORT);
 }
 
 static void android_animation_PropertyValuesHolder_callTwoIntMethod(
-        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, int arg1, int arg2)
+        JNIEnv* env, jclass pvhObject, jobject target, jlong methodID, int arg1, int arg2)
 {
-    env->CallVoidMethod(target, methodID, arg1, arg2);
+    env->CallVoidMethod(target, reinterpret_cast<jmethodID>(methodID), arg1, arg2);
 }
 
 static void android_animation_PropertyValuesHolder_callFourIntMethod(
-        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, int arg1, int arg2,
+        JNIEnv* env, jclass pvhObject, jobject target, jlong methodID, int arg1, int arg2,
         int arg3, int arg4)
 {
-    env->CallVoidMethod(target, methodID, arg1, arg2, arg3, arg4);
+    env->CallVoidMethod(target, reinterpret_cast<jmethodID>(methodID), arg1, arg2, arg3, arg4);
 }
 
 static void android_animation_PropertyValuesHolder_callMultipleIntMethod(
-        JNIEnv* env, jclass pvhObject, jobject target, jmethodID methodID, jintArray arg)
+        JNIEnv* env, jclass pvhObject, jobject target, jlong methodID, jintArray arg)
 {
     jsize parameterCount = env->GetArrayLength(arg);
     jint *intValues = env->GetIntArrayElements(arg, NULL);
@@ -134,35 +134,35 @@
     for (int i = 0; i < parameterCount; i++) {
         values[i].i = intValues[i];
     }
-    env->CallVoidMethodA(target, methodID, values);
+    env->CallVoidMethodA(target, reinterpret_cast<jmethodID>(methodID), values);
     delete[] values;
     env->ReleaseIntArrayElements(arg, intValues, JNI_ABORT);
 }
 
 static JNINativeMethod gMethods[] = {
-    {   "nGetIntMethod", "(Ljava/lang/Class;Ljava/lang/String;)I",
+    {   "nGetIntMethod", "(Ljava/lang/Class;Ljava/lang/String;)J",
             (void*)android_animation_PropertyValuesHolder_getIntMethod },
-    {   "nGetFloatMethod", "(Ljava/lang/Class;Ljava/lang/String;)I",
+    {   "nGetFloatMethod", "(Ljava/lang/Class;Ljava/lang/String;)J",
             (void*)android_animation_PropertyValuesHolder_getFloatMethod },
-    {   "nGetMultipleFloatMethod", "(Ljava/lang/Class;Ljava/lang/String;I)I",
+    {   "nGetMultipleFloatMethod", "(Ljava/lang/Class;Ljava/lang/String;I)J",
             (void*)android_animation_PropertyValuesHolder_getMultipleFloatMethod },
-    {   "nGetMultipleIntMethod", "(Ljava/lang/Class;Ljava/lang/String;I)I",
+    {   "nGetMultipleIntMethod", "(Ljava/lang/Class;Ljava/lang/String;I)J",
             (void*)android_animation_PropertyValuesHolder_getMultipleIntMethod },
-    {   "nCallIntMethod", "(Ljava/lang/Object;II)V",
+    {   "nCallIntMethod", "(Ljava/lang/Object;JI)V",
             (void*)android_animation_PropertyValuesHolder_callIntMethod },
-    {   "nCallFloatMethod", "(Ljava/lang/Object;IF)V",
+    {   "nCallFloatMethod", "(Ljava/lang/Object;JF)V",
             (void*)android_animation_PropertyValuesHolder_callFloatMethod },
-    {   "nCallTwoFloatMethod", "(Ljava/lang/Object;IFF)V",
+    {   "nCallTwoFloatMethod", "(Ljava/lang/Object;JFF)V",
             (void*)android_animation_PropertyValuesHolder_callTwoFloatMethod },
-    {   "nCallFourFloatMethod", "(Ljava/lang/Object;IFFFF)V",
+    {   "nCallFourFloatMethod", "(Ljava/lang/Object;JFFFF)V",
             (void*)android_animation_PropertyValuesHolder_callFourFloatMethod },
-    {   "nCallMultipleFloatMethod", "(Ljava/lang/Object;I[F)V",
+    {   "nCallMultipleFloatMethod", "(Ljava/lang/Object;J[F)V",
             (void*)android_animation_PropertyValuesHolder_callMultipleFloatMethod },
-    {   "nCallTwoIntMethod", "(Ljava/lang/Object;III)V",
+    {   "nCallTwoIntMethod", "(Ljava/lang/Object;JII)V",
             (void*)android_animation_PropertyValuesHolder_callTwoIntMethod },
-    {   "nCallFourIntMethod", "(Ljava/lang/Object;IIIII)V",
+    {   "nCallFourIntMethod", "(Ljava/lang/Object;JIIII)V",
             (void*)android_animation_PropertyValuesHolder_callFourIntMethod },
-    {   "nCallMultipleIntMethod", "(Ljava/lang/Object;I[I)V",
+    {   "nCallMultipleIntMethod", "(Ljava/lang/Object;J[I)V",
             (void*)android_animation_PropertyValuesHolder_callMultipleIntMethod },
 };