OP_THROW.S revision f6c387128427e121477c1b32ad35cdcaa5101ba3
1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%verify "executed" 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%verify "exception for null object" 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Throw an exception object in the current thread. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* throw vAA */ 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mov r2, rINST, lsr #8 @ r2<- AA 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project GET_VREG(r1, r2) @ r1<- vAA (exception object) 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ldr r0, [rGLUE, #offGlue_self] @ r0<- glue->self 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project cmp r1, #0 @ null object? 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project beq common_errNullObject @ yes, throw an NPE instead 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @ bypass dvmSetException, just store it 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project str r1, [r0, #offThread_exception] @ thread->exception<- obj 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project b common_exceptionThrown 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 16