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