diff options
Diffstat (limited to 'src/jni_internal_arm.cc')
| -rw-r--r-- | src/jni_internal_arm.cc | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/src/jni_internal_arm.cc b/src/jni_internal_arm.cc index 93380b1076..f1ed092d1b 100644 --- a/src/jni_internal_arm.cc +++ b/src/jni_internal_arm.cc @@ -46,7 +46,7 @@ CompiledInvokeStub* ArmCreateInvokeStub(const Method* method) { // Move the managed thread pointer into R9. __ mov(R9, ShifterOperand(R2)); - // Reset R4 to suspend check intercal + // Reset R4 to suspend check interval __ LoadImmediate(R4, SUSPEND_CHECK_INTERVAL); // Move frame down for arguments less 3 pushed values above @@ -106,15 +106,10 @@ CompiledInvokeStub* ArmCreateInvokeStub(const Method* method) { __ blx(IP); // If the method returns a value, store it to the result pointer. - char ch = method->GetShorty()->CharAt(0); - if (ch != 'V') { + if (!method->IsReturnVoid()) { // Load the result JValue pointer of the stub caller's out args. __ LoadFromOffset(kLoadWord, IP, SP, frame_size); - if (ch == 'D' || ch == 'J') { - __ StoreToOffset(kStoreWordPair, R0, IP, 0); - } else { - __ StoreToOffset(kStoreWord, R0, IP, 0); - } + __ StoreToOffset(method->IsReturnALongOrDouble() ? kStoreWordPair : kStoreWord, R0, IP, 0); } // Remove the frame less the spilled R4, R9 and LR |