Add support for ARMv8 (64-bit) on Android

This commit is contained in:
Pedro J. Estébanez 2017-07-25 12:28:31 +02:00
parent 303370d03d
commit f78299c81b
4 changed files with 43 additions and 14 deletions

View file

@ -190,7 +190,7 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
argv[i].i = *p_args[i];
} break;
case ARG_TYPE_LONG: {
argv[i].j = *p_args[i];
argv[i].j = (int64_t)*p_args[i];
} break;
case ARG_TYPE_FLOAT: {
argv[i].f = *p_args[i];
@ -350,7 +350,7 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
Array arr = *p_args[i];
jlongArray a = env->NewLongArray(arr.size());
for (int j = 0; j < arr.size(); j++) {
jlong val = arr[j];
jlong val = (int64_t)arr[j];
env->SetLongArrayRegion(a, j, 1, &val);
}
argv[i].l = a;
@ -460,9 +460,9 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
case ARG_TYPE_LONG: {
if (method->_static) {
ret = env->CallStaticLongMethodA(_class, method->method, argv);
ret = (int64_t)env->CallStaticLongMethodA(_class, method->method, argv);
} else {
ret = env->CallLongMethodA(p_instance->instance, method->method, argv);
ret = (int64_t)env->CallLongMethodA(p_instance->instance, method->method, argv);
}
} break;
@ -680,7 +680,7 @@ bool JavaClass::_convert_object_to_variant(JNIEnv *env, jobject obj, Variant &va
} break;
case ARG_TYPE_LONG | ARG_NUMBER_CLASS_BIT: {
var = env->CallLongMethod(obj, JavaClassWrapper::singleton->Long_longValue);
var = (int64_t)env->CallLongMethod(obj, JavaClassWrapper::singleton->Long_longValue);
return true;
} break;
@ -802,7 +802,7 @@ bool JavaClass::_convert_object_to_variant(JNIEnv *env, jobject obj, Variant &va
jlong val;
env->GetLongArrayRegion((jlongArray)arr, 0, 1, &val);
ret.push_back(val);
ret.push_back((int64_t)val);
}
var = ret;