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