OP_APUT.S revision f3e177289ac078f18401cfd8eebafe584dd0d01f
1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%default { "reg":"%ecx", "store":"movl", "shift":"4" }
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project%verify "executed"
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /*
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Array put, 32 bits or less.  vBB[vCC] <- vAA
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * for: aput, aput-object, aput-boolean, aput-byte, aput-char, aput-short
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /* op vAA, vBB, vCC */
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    movzbl    2(rPC),%eax               # eax<- BB
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    movzbl    3(rPC),%ecx               # ecx<- CC
11f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee    GET_VREG_R  %eax %eax               # eax<- vBB (array object)
12f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee    GET_VREG_R  %ecx %ecx               # ecs<- vCC (requested index)
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    testl     %eax,%eax                 # null array object?
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    je        common_errNullObject      # bail if so
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    cmpl      offArrayObject_length(%eax),%ecx
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    jae       common_errArrayIndex      # index >= length, bail
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    leal      offArrayObject_contents(%eax,%ecx,$shift),%eax
18f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee.L${opcode}_finish:
19f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee    GET_VREG_R  %ecx rINST
20f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee    FETCH_INST_OPCODE 2 %edx
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    $store     $reg,(%eax)
22f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee    ADVANCE_PC 2
23f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee    GOTO_NEXT_R %edx
24