summaryrefslogtreecommitdiff
path: root/runtime/interpreter/unstarted_runtime.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/interpreter/unstarted_runtime.cc')
-rw-r--r--runtime/interpreter/unstarted_runtime.cc18
1 files changed, 16 insertions, 2 deletions
diff --git a/runtime/interpreter/unstarted_runtime.cc b/runtime/interpreter/unstarted_runtime.cc
index 99cd5470c3..229142ec4c 100644
--- a/runtime/interpreter/unstarted_runtime.cc
+++ b/runtime/interpreter/unstarted_runtime.cc
@@ -687,7 +687,12 @@ void UnstartedRuntime::UnstartedConstructorNewInstance0(
soa.AddLocalReference<jobject>(receiver.Get()));
ScopedLocalRef<jobject> args_ref(self->GetJniEnv(),
soa.AddLocalReference<jobject>(args.Get()));
- InvokeMethod(soa, method_ref.get(), object_ref.get(), args_ref.get(), 2);
+ PointerSize pointer_size = Runtime::Current()->GetClassLinker()->GetImagePointerSize();
+ if (pointer_size == PointerSize::k64) {
+ InvokeMethod<PointerSize::k64>(soa, method_ref.get(), object_ref.get(), args_ref.get(), 2);
+ } else {
+ InvokeMethod<PointerSize::k32>(soa, method_ref.get(), object_ref.get(), args_ref.get(), 2);
+ }
}
if (self->IsExceptionPending()) {
AbortTransactionOrFail(self, "Failed running constructor");
@@ -1644,8 +1649,17 @@ void UnstartedRuntime::UnstartedMethodInvoke(
ScopedLocalRef<jobject> java_args(env,
java_args_obj == nullptr ? nullptr : env->AddLocalReference<jobject>(java_args_obj));
+ PointerSize pointer_size = Runtime::Current()->GetClassLinker()->GetImagePointerSize();
ScopedLocalRef<jobject> result_jobj(env,
- InvokeMethod(soa, java_method.get(), java_receiver.get(), java_args.get()));
+ (pointer_size == PointerSize::k64)
+ ? InvokeMethod<PointerSize::k64>(soa,
+ java_method.get(),
+ java_receiver.get(),
+ java_args.get())
+ : InvokeMethod<PointerSize::k32>(soa,
+ java_method.get(),
+ java_receiver.get(),
+ java_args.get()));
result->SetL(self->DecodeJObject(result_jobj.get()));