1b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFaddenHANDLE_OPCODE(OP_EXECUTE_INLINE_RANGE /*{vCCCC..v(CCCC+AA-1)}, inline@BBBB*/)
2b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden    {
3b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        u4 arg0, arg1, arg2, arg3;
4b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        arg0 = arg1 = arg2 = arg3 = 0;      /* placate gcc */
5b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden
6b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        EXPORT_PC();
7b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden
8b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        vsrc1 = INST_AA(inst);      /* #of args */
9b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        ref = FETCH(1);             /* inline call "ref" */
10b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        vdst = FETCH(2);            /* range base */
11b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        ILOGV("|execute-inline-range args=%d @%d {regs=v%d-v%d}",
12b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            vsrc1, ref, vdst, vdst+vsrc1-1);
13b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden
14b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        assert((vdst >> 16) == 0);  // 16-bit type -or- high 16 bits clear
15b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        assert(vsrc1 <= 4);
16b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden
17b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        switch (vsrc1) {
18b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        case 4:
19b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            arg3 = GET_REGISTER(vdst+3);
20b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            /* fall through */
21b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        case 3:
22b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            arg2 = GET_REGISTER(vdst+2);
23b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            /* fall through */
24b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        case 2:
25b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            arg1 = GET_REGISTER(vdst+1);
26b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            /* fall through */
27b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        case 1:
28b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            arg0 = GET_REGISTER(vdst+0);
29b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            /* fall through */
30b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        default:        // case 0
31b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            ;
32b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        }
33b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden
34b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden#if INTERP_TYPE == INTERP_DBG
35b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        if (!dvmPerformInlineOp4Dbg(arg0, arg1, arg2, arg3, &retval, ref))
36b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            GOTO_exceptionThrown();
37b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden#else
38b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden        if (!dvmPerformInlineOp4Std(arg0, arg1, arg2, arg3, &retval, ref))
39b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden            GOTO_exceptionThrown();
40b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden#endif
41b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden    }
42b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFadden    FINISH(3);
43b0a0541b59d1126ff77c88de742b4a74579fe296Andy McFaddenOP_END
44