aboutsummaryrefslogtreecommitdiff
path: root/vm/mterp/c/OP_ARRAY_LENGTH.cpp
blob: 0d5a933c5b2efbb30ab08c2dbdf5572caf541178 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HANDLE_OPCODE(OP_ARRAY_LENGTH /*vA, vB*/)
    {
        ArrayObject* arrayObj;

        vdst = INST_A(inst);
        vsrc1 = INST_B(inst);
        arrayObj = (ArrayObject*) GET_REGISTER(vsrc1);
        ILOGV("|array-length v%d,v%d  (%p)", vdst, vsrc1, arrayObj);
        if (!checkForNullExportPC((Object*) arrayObj, fp, pc))
            GOTO_exceptionThrown();
        /* verifier guarantees this is an array reference */
        SET_REGISTER(vdst, arrayObj->length);
    }
    FINISH(1);
OP_END