1a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham%verify "executed" 2a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham%verify "Class already resolved" 3a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham%verify "Class not yet resolved" 4a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham%verify "Class cannot be resolved" 5a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham # const/class vAA, Class /* BBBB */ 6a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham FETCH(a1, 1) # a1 <- BBBB 7a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham LOAD_rSELF_methodClassDex(a2) # a2 <- self->methodClassDex 8a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham GET_OPA(rOBJ) # rOBJ <- AA 9a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham LOAD_base_offDvmDex_pResClasses(a2, a2) # a2 <- dvmDex->pResClasses 10a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham LOAD_eas2(v0, a2, a1) # v0 <- pResClasses[BBBB] 11a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham 12a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham bnez v0, .L${opcode}_resolve # v0!=0 => resolved-ok 13a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham /* 14a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham * Continuation if the Class has not yet been resolved. 15a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham * a1: BBBB (Class ref) 16a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham * rOBJ: target register 17a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham */ 18a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham EXPORT_PC() 19a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham LOAD_rSELF_method(a0) # a0 <- self->method 20a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham li a2, 1 # a2 <- true 21a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham LOAD_base_offMethod_clazz(a0, a0) # a0 <- method->clazz 22a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham JAL(dvmResolveClass) # v0 <- Class reference 23a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham # failed==0? 24a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham beqz v0, common_exceptionThrown # yup, handle the exception 25a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham 26a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham.L${opcode}_resolve: 27a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham FETCH_ADVANCE_INST(2) # advance rPC, load rINST 28a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham GET_INST_OPCODE(t0) # extract opcode from rINST 29a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham SET_VREG_GOTO(v0, rOBJ, t0) # vAA <- v0 30a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham 31a8b91c52fd8a90b784835dfe1f8898035266c4ddRaghu Gandham 32