| HANDLE_OPCODE(OP_MONITOR_ENTER /*vAA*/) |
| { |
| Object* obj; |
| |
| vsrc1 = INST_AA(inst); |
| ILOGV("|monitor-enter v%d %s(0x%08x)", |
| vsrc1, kSpacing+6, GET_REGISTER(vsrc1)); |
| obj = (Object*)GET_REGISTER(vsrc1); |
| if (!checkForNullExportPC(obj, fp, pc)) |
| GOTO_exceptionThrown(); |
| ILOGV("+ locking %p %s\n", obj, obj->clazz->descriptor); |
| EXPORT_PC(); /* need for precise GC, also WITH_MONITOR_TRACKING */ |
| dvmLockObject(self, obj); |
| #ifdef WITH_DEADLOCK_PREDICTION |
| if (dvmCheckException(self)) |
| GOTO_exceptionThrown(); |
| #endif |
| } |
| FINISH(1); |
| OP_END |