1 %verify "executed" 2 %verify "unknown method" 3 %verify "null object" 4 /* 5 * Handle an interface method call. 6 */ 7 /* invoke-interface/jumbo {vCCCC..v(CCCC+BBBB-1)}, meth@AAAAAAAA */ 8 FETCH(r2, 4) @ r2<- CCCC 9 FETCH(r0, 1) @ r0<- aaaa (lo) 10 FETCH(r1, 2) @ r1<- AAAA (hi) 11 EXPORT_PC() @ must export for invoke 12 orr r1, r0, r1, lsl #16 @ r1<- AAAAaaaa 13 GET_VREG(r9, r2) @ r9<- first arg ("this") 14 ldr r3, [rSELF, #offThread_methodClassDex] @ r3<- methodClassDex 15 cmp r9, #0 @ null obj? 16 ldr r2, [rSELF, #offThread_method] @ r2<- method 17 beq common_errNullObject @ yes, fail 18 ldr r0, [r9, #offObject_clazz] @ r0<- thisPtr->clazz 19 bl dvmFindInterfaceMethodInCache @ r0<- call(class, ref, method, dex) 20 cmp r0, #0 @ failed? 21 beq common_exceptionThrown @ yes, handle exception 22 b common_invokeMethodJumbo @ (r0=method, r9="this") 23