1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%verify "executed" 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%verify "exception for null object (impossible in javac)" 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%verify "dvmUnlockObject fails" 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unlock an object. 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Exceptions that occur when unlocking a monitor need to appear as 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if they happened at the following instruction. See the Dalvik 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * instruction spec. 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* monitor-exit vAA */ 12f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee GET_VREG_R %eax rINST 139f601a917c8878204482c37aec7005054b6776fabuzbee movl rSELF,%ecx 14f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee EXPORT_PC 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project testl %eax,%eax # null object? 16668628abe05cb30f86bd02c824f7219a7e20b82cBill Buzbee je .L${opcode}_errNullObject # go if so 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project movl %eax,OUT_ARG1(%esp) 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project movl %ecx,OUT_ARG0(%esp) 19a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee SPILL(rIBASE) 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project call dvmUnlockObject # unlock(self,obj) 21a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee UNSPILL(rIBASE) 22a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee FETCH_INST_OPCODE 1 %ecx 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project testl %eax,%eax # success? 24f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee ADVANCE_PC 1 25668628abe05cb30f86bd02c824f7219a7e20b82cBill Buzbee je common_exceptionThrown # no, exception pending 26a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee GOTO_NEXT_R %ecx 27668628abe05cb30f86bd02c824f7219a7e20b82cBill Buzbee.L${opcode}_errNullObject: 28f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee ADVANCE_PC 1 # advance before throw 29668628abe05cb30f86bd02c824f7219a7e20b82cBill Buzbee jmp common_errNullObject 30