1%verify "executed" 2%verify "exception for null object" 3 /* 4 * Synchronize on an object. 5 */ 6 /* monitor-enter vAA */ 7 mov r2, rINST, lsr #8 @ r2<- AA 8 GET_VREG(r1, r2) @ r1<- vAA (object) 9 ldr r0, [rGLUE, #offGlue_self] @ r0<- glue->self 10 cmp r1, #0 @ null object? 11#ifdef WITH_MONITOR_TRACKING 12 EXPORT_PC() @ export PC so we can grab stack trace 13#endif 14 beq common_errNullObject @ null object, throw an exception 15 FETCH_ADVANCE_INST(1) @ advance rPC, load rINST 16 bl dvmLockObject @ call(self, obj) 17#ifdef WITH_DEADLOCK_PREDICTION /* implies WITH_MONITOR_TRACKING */ 18 ldr r0, [rGLUE, #offGlue_self] @ r0<- glue->self 19 ldr r1, [r0, #offThread_exception] @ check for exception 20 cmp r1, #0 21 bne common_exceptionThrown @ exception raised, bail out 22#endif 23 GET_INST_OPCODE(ip) @ extract opcode from rINST 24 GOTO_OPCODE(ip) @ jump to next instruction 25 26