Various assembly fixes.
Change-Id: I42655af8dc3d7201d53c3393cdc585d9faa8cb82
diff --git a/src/jni_internal_arm.cc b/src/jni_internal_arm.cc
index 93380b1..f1ed092 100644
--- a/src/jni_internal_arm.cc
+++ b/src/jni_internal_arm.cc
@@ -46,7 +46,7 @@
// 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 @@
__ 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