• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

HANDLE_OPCODE(OP_INVOKE_OBJECT_INIT_RANGE)1 HANDLE_OPCODE(OP_INVOKE_OBJECT_INIT_RANGE /*{vCCCC..v(CCCC+AA-1)}, meth@BBBB*/)
2     {
3         Object* obj;
4 
5         vsrc1 = FETCH(2);               /* reg number of "this" pointer */
6         obj = GET_REGISTER_AS_OBJECT(vsrc1);
7 
8         if (!checkForNullExportPC(obj, fp, pc))
9             GOTO_exceptionThrown();
10 
11         /*
12          * The object should be marked "finalizable" when Object.<init>
13          * completes normally.  We're going to assume it does complete
14          * (by virtue of being nothing but a return-void) and set it now.
15          */
16         if (IS_CLASS_FLAG_SET(obj->clazz, CLASS_ISFINALIZABLE)) {
17             EXPORT_PC();
18             dvmSetFinalizable(obj);
19             if (dvmGetException(self))
20                 GOTO_exceptionThrown();
21         }
22 
23         if (self->interpBreak.ctl.subMode & kSubModeDebuggerActive) {
24             /* behave like OP_INVOKE_DIRECT_RANGE */
25             GOTO_invoke(invokeDirect, true);
26         }
27         FINISH(3);
28     }
29 OP_END
30