• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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