1HANDLE_OPCODE(OP_MONITOR_ENTER /*vAA*/) 2 { 3 Object* obj; 4 5 vsrc1 = INST_AA(inst); 6 ILOGV("|monitor-enter v%d %s(0x%08x)", 7 vsrc1, kSpacing+6, GET_REGISTER(vsrc1)); 8 obj = (Object*)GET_REGISTER(vsrc1); 9 if (!checkForNullExportPC(obj, fp, pc)) 10 GOTO_exceptionThrown(); 11 ILOGV("+ locking %p %s\n", obj, obj->clazz->descriptor); 12 EXPORT_PC(); /* need for precise GC, also WITH_MONITOR_TRACKING */ 13 dvmLockObject(self, obj); 14#ifdef WITH_DEADLOCK_PREDICTION 15 if (dvmCheckException(self)) 16 GOTO_exceptionThrown(); 17#endif 18 } 19 FINISH(1); 20OP_END 21