Fix some failures w/ the new Dalvik JUMBO opcodes on the x86 and portable
interpreters. These showed up on dalvik/test/089-jumbo-opcodes when
running with:
run-test --host 089 # x86 host-mode
run-test --portable --host 089 # portable host-mode
run-test --portable 089 # on device, portable
Change-Id: I520c8d2e001db95aa7525e4ffde7a81e2e786d38
HANDLE_OPCODE(OP_THROW_VERIFICATION_ERROR_JUMBO)
EXPORT_PC();
HANDLE_OPCODE(OP_THROW_VERIFICATION_ERROR_JUMBO)
EXPORT_PC();
- vsrc1 = FETCH(1);
- ref = FETCH(2) | (u4)FETCH(3) << 16; /* class/field/method ref */
+ vsrc1 = FETCH(3);
+ ref = FETCH(1) | (u4)FETCH(2) << 16; /* class/field/method ref */
dvmThrowVerificationError(curMethod, vsrc1, ref);
GOTO_exceptionThrown();
OP_END
dvmThrowVerificationError(curMethod, vsrc1, ref);
GOTO_exceptionThrown();
OP_END
movl 2(rPC),%eax # eax<- AAAAAAAA
movl offThread_methodClassDex(%ecx),%ecx# ecx<- self->methodClassDex
movl offDvmDex_pResClasses(%ecx),%ecx # ecx<- dvmDex->pResClasses
movl 2(rPC),%eax # eax<- AAAAAAAA
movl offThread_methodClassDex(%ecx),%ecx# ecx<- self->methodClassDex
movl offDvmDex_pResClasses(%ecx),%ecx # ecx<- dvmDex->pResClasses
- FETCH_INST_OPCODE 4 %ecx
movl (%ecx,%eax,4),%eax # eax<- rResClasses[AAAAAAAA]
movl (%ecx,%eax,4),%eax # eax<- rResClasses[AAAAAAAA]
+ FETCH_INST_OPCODE 4 %ecx
testl %eax,%eax # resolved yet?
je .LOP_CONST_CLASS_JUMBO_resolve
SET_VREG %eax rINST # vBBBB<- rResClasses[AAAAAAAA]
testl %eax,%eax # resolved yet?
je .LOP_CONST_CLASS_JUMBO_resolve
SET_VREG %eax rINST # vBBBB<- rResClasses[AAAAAAAA]
/* File: c/OP_THROW_VERIFICATION_ERROR_JUMBO.c */
HANDLE_OPCODE(OP_THROW_VERIFICATION_ERROR_JUMBO)
EXPORT_PC();
/* File: c/OP_THROW_VERIFICATION_ERROR_JUMBO.c */
HANDLE_OPCODE(OP_THROW_VERIFICATION_ERROR_JUMBO)
EXPORT_PC();
- vsrc1 = FETCH(1);
- ref = FETCH(2) | (u4)FETCH(3) << 16; /* class/field/method ref */
+ vsrc1 = FETCH(3);
+ ref = FETCH(1) | (u4)FETCH(2) << 16; /* class/field/method ref */
dvmThrowVerificationError(curMethod, vsrc1, ref);
GOTO_exceptionThrown();
OP_END
dvmThrowVerificationError(curMethod, vsrc1, ref);
GOTO_exceptionThrown();
OP_END
/* File: c/OP_THROW_VERIFICATION_ERROR_JUMBO.c */
HANDLE_OPCODE(OP_THROW_VERIFICATION_ERROR_JUMBO)
EXPORT_PC();
/* File: c/OP_THROW_VERIFICATION_ERROR_JUMBO.c */
HANDLE_OPCODE(OP_THROW_VERIFICATION_ERROR_JUMBO)
EXPORT_PC();
- vsrc1 = FETCH(1);
- ref = FETCH(2) | (u4)FETCH(3) << 16; /* class/field/method ref */
+ vsrc1 = FETCH(3);
+ ref = FETCH(1) | (u4)FETCH(2) << 16; /* class/field/method ref */
dvmThrowVerificationError(curMethod, vsrc1, ref);
GOTO_exceptionThrown();
OP_END
dvmThrowVerificationError(curMethod, vsrc1, ref);
GOTO_exceptionThrown();
OP_END
/* File: c/OP_THROW_VERIFICATION_ERROR_JUMBO.c */
HANDLE_OPCODE(OP_THROW_VERIFICATION_ERROR_JUMBO)
EXPORT_PC();
/* File: c/OP_THROW_VERIFICATION_ERROR_JUMBO.c */
HANDLE_OPCODE(OP_THROW_VERIFICATION_ERROR_JUMBO)
EXPORT_PC();
- vsrc1 = FETCH(1);
- ref = FETCH(2) | (u4)FETCH(3) << 16; /* class/field/method ref */
+ vsrc1 = FETCH(3);
+ ref = FETCH(1) | (u4)FETCH(2) << 16; /* class/field/method ref */
dvmThrowVerificationError(curMethod, vsrc1, ref);
GOTO_exceptionThrown();
OP_END
dvmThrowVerificationError(curMethod, vsrc1, ref);
GOTO_exceptionThrown();
OP_END
movl 2(rPC),%eax # eax<- AAAAAAAA
movl offThread_methodClassDex(%ecx),%ecx# ecx<- self->methodClassDex
movl offDvmDex_pResClasses(%ecx),%ecx # ecx<- dvmDex->pResClasses
movl 2(rPC),%eax # eax<- AAAAAAAA
movl offThread_methodClassDex(%ecx),%ecx# ecx<- self->methodClassDex
movl offDvmDex_pResClasses(%ecx),%ecx # ecx<- dvmDex->pResClasses
- FETCH_INST_OPCODE 4 %ecx
movl (%ecx,%eax,4),%eax # eax<- rResClasses[AAAAAAAA]
movl (%ecx,%eax,4),%eax # eax<- rResClasses[AAAAAAAA]
+ FETCH_INST_OPCODE 4 %ecx
testl %eax,%eax # resolved yet?
je .L${opcode}_resolve
SET_VREG %eax rINST # vBBBB<- rResClasses[AAAAAAAA]
testl %eax,%eax # resolved yet?
je .L${opcode}_resolve
SET_VREG %eax rINST # vBBBB<- rResClasses[AAAAAAAA]