• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1%default { "reg":"%ecx", "store":"movl", "shift":"4" }
2%verify "executed"
3    /*
4     * Array put, 32 bits or less.  vBB[vCC] <- vAA
5     *
6     * for: aput, aput-object, aput-boolean, aput-byte, aput-char, aput-short
7     */
8    /* op vAA, vBB, vCC */
9    movzbl    2(rPC),%eax               # eax<- BB
10    movzbl    3(rPC),%ecx               # ecx<- CC
11    movzbl    rINST_HI,rINST_FULL       # rINST_FULL<- AA
12    GET_VREG(%eax,%eax)                 # eax<- vBB (array object)
13    GET_VREG(%ecx,%ecx)                 # ecs<- vCC (requested index)
14    testl     %eax,%eax                 # null array object?
15    je        common_errNullObject      # bail if so
16    cmpl      offArrayObject_length(%eax),%ecx
17    jae       common_errArrayIndex      # index >= length, bail
18    leal      offArrayObject_contents(%eax,%ecx,$shift),%eax
19    GET_VREG(%ecx,rINST_FULL)
20    FETCH_INST_WORD(2)
21    $store     $reg,(%eax)
22    ADVANCE_PC(2)
23    GOTO_NEXT
24
25