1a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee%default { "reg":"rINST", "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
163e1bbffab14075a340ad0165c6ada6a43875a01fbuzbee    jae       common_errArrayIndex      # index >= length, bail.  Expects:
173e1bbffab14075a340ad0165c6ada6a43875a01fbuzbee                                        #   arrayObj in eax
183e1bbffab14075a340ad0165c6ada6a43875a01fbuzbee                                        #   index in ecx
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    leal      offArrayObject_contents(%eax,%ecx,$shift),%eax
20f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee.L${opcode}_finish:
21a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee    GET_VREG_R  rINST rINST
22a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee    FETCH_INST_OPCODE 2 %ecx
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    $store     $reg,(%eax)
24f3e177289ac078f18401cfd8eebafe584dd0d01fbuzbee    ADVANCE_PC 2
25a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee    GOTO_NEXT_R %ecx
26