summaryrefslogtreecommitdiff
path: root/vm/mterp/c/OP_GOTO_32.c
blob: d1cee32554a75d3f0a9f49d276fd7c02c96cb649 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HANDLE_OPCODE(OP_GOTO_32 /*+AAAAAAAA*/)
    {
        s4 offset = FETCH(1);               /* low-order 16 bits */
        offset |= ((s4) FETCH(2)) << 16;    /* high-order 16 bits */

        if (offset < 0)
            ILOGV("|goto/32 -0x%08x", -offset);
        else
            ILOGV("|goto/32 +0x%08x", offset);
        ILOGV("> branch taken");
        if (offset <= 0)    /* allowed to branch to self */
            PERIODIC_CHECKS(kInterpEntryInstr, offset);
        FINISH(offset);
    }
OP_END