1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%default { "isrange":"0", "routine":"NoRange" } 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%verify "executed" 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%verify "null object" 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Handle an optimized virtual method call. 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * for: [opt] invoke-virtual-quick, invoke-virtual-quick/range 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */ 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */ 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FETCH(r3, 2) @ r3<- FEDC or CCCC 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project FETCH(r1, 1) @ r1<- BBBB 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .if (!$isrange) 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project and r3, r3, #15 @ r3<- C (or stays CCCC) 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .endif 169a3147c7412f4794434b4c2604aa2ba784867774buzbee GET_VREG(r9, r3) @ r9<- vC ("this" ptr) 179a3147c7412f4794434b4c2604aa2ba784867774buzbee cmp r9, #0 @ is "this" null? 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project beq common_errNullObject @ null "this", throw exception 199a3147c7412f4794434b4c2604aa2ba784867774buzbee ldr r2, [r9, #offObject_clazz] @ r2<- thisPtr->clazz 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ldr r2, [r2, #offClassObject_vtable] @ r2<- thisPtr->clazz->vtable 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project EXPORT_PC() @ invoke must export 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ldr r0, [r2, r1, lsl #2] @ r3<- vtable[BBBB] 239a3147c7412f4794434b4c2604aa2ba784867774buzbee bl common_invokeMethod${routine} @ (r0=method, r9="this") 24