Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 1 | /* vim9instr.c */ |
| 2 | isn_T *generate_instr(cctx_T *cctx, isntype_T isn_type); |
| 3 | isn_T *generate_instr_drop(cctx_T *cctx, isntype_T isn_type, int drop); |
| 4 | isn_T *generate_instr_type(cctx_T *cctx, isntype_T isn_type, type_T *type); |
| 5 | isn_T *generate_instr_debug(cctx_T *cctx); |
Bram Moolenaar | 00b28d6 | 2022-12-08 15:32:33 +0000 | [diff] [blame] | 6 | int generate_CONSTRUCT(cctx_T *cctx, class_T *cl); |
Yegappan Lakshmanan | 5a05d37 | 2023-09-29 19:43:11 +0200 | [diff] [blame] | 7 | int generate_GET_OBJ_MEMBER(cctx_T *cctx, int idx, type_T *type); |
| 8 | int generate_GET_ITF_MEMBER(cctx_T *cctx, class_T *itf, int idx, type_T *type); |
Bram Moolenaar | 7ce7daf | 2022-12-10 18:42:12 +0000 | [diff] [blame] | 9 | int generate_STORE_THIS(cctx_T *cctx, int idx); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 10 | int may_generate_2STRING(int offset, int tolerant, cctx_T *cctx); |
| 11 | int generate_add_instr(cctx_T *cctx, vartype_T vartype, type_T *type1, type_T *type2, exprtype_T expr_type); |
| 12 | vartype_T operator_type(type_T *type1, type_T *type2); |
| 13 | int generate_two_op(cctx_T *cctx, char_u *op); |
| 14 | int check_compare_types(exprtype_T type, typval_T *tv1, typval_T *tv2); |
| 15 | int generate_COMPARE(cctx_T *cctx, exprtype_T exprtype, int ic); |
Bram Moolenaar | bd3a9d2 | 2022-05-17 16:12:39 +0100 | [diff] [blame] | 16 | int generate_CONCAT(cctx_T *cctx, int count); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 17 | int generate_2BOOL(cctx_T *cctx, int invert, int offset); |
| 18 | int generate_COND2BOOL(cctx_T *cctx); |
Bram Moolenaar | c6951a7 | 2022-12-29 20:56:24 +0000 | [diff] [blame] | 19 | int generate_TYPECHECK(cctx_T *cctx, type_T *expected, int number_ok, int offset, int is_var, int argidx); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 20 | int generate_SETTYPE(cctx_T *cctx, type_T *expected); |
Christian Brabandt | 6a950da | 2024-01-01 20:18:36 +0100 | [diff] [blame] | 21 | int generate_PUSHOBJ(cctx_T *cctx); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 22 | int generate_tv_PUSH(cctx_T *cctx, typval_T *tv); |
| 23 | int generate_PUSHNR(cctx_T *cctx, varnumber_T number); |
| 24 | int generate_PUSHBOOL(cctx_T *cctx, varnumber_T number); |
| 25 | int generate_PUSHSPEC(cctx_T *cctx, varnumber_T number); |
| 26 | int generate_PUSHF(cctx_T *cctx, float_T fnumber); |
| 27 | int generate_PUSHS(cctx_T *cctx, char_u **str); |
Bram Moolenaar | 397a87a | 2022-03-20 21:14:15 +0000 | [diff] [blame] | 28 | int generate_PUSHCHANNEL(cctx_T *cctx); |
| 29 | int generate_PUSHJOB(cctx_T *cctx); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 30 | int generate_PUSHBLOB(cctx_T *cctx, blob_T *blob); |
Bram Moolenaar | 1d84f76 | 2022-09-03 21:35:53 +0100 | [diff] [blame] | 31 | int generate_PUSHFUNC(cctx_T *cctx, char_u *name, type_T *type, int may_prefix); |
Bram Moolenaar | 06b7722 | 2022-01-25 15:51:56 +0000 | [diff] [blame] | 32 | int generate_AUTOLOAD(cctx_T *cctx, char_u *name, type_T *type); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 33 | int generate_GETITEM(cctx_T *cctx, int index, int with_op); |
| 34 | int generate_SLICE(cctx_T *cctx, int count); |
| 35 | int generate_CHECKLEN(cctx_T *cctx, int min_len, int more_OK); |
| 36 | int generate_STORE(cctx_T *cctx, isntype_T isn_type, int idx, char_u *name); |
Bram Moolenaar | d505d17 | 2022-12-18 21:42:55 +0000 | [diff] [blame] | 37 | int generate_CLASSMEMBER(cctx_T *cctx, int load, class_T *cl, int idx); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 38 | int generate_STORENR(cctx_T *cctx, int idx, varnumber_T value); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 39 | int generate_LOAD(cctx_T *cctx, isntype_T isn_type, int idx, char_u *name, type_T *type); |
Bram Moolenaar | cc34181 | 2022-09-19 15:54:34 +0100 | [diff] [blame] | 40 | int generate_LOADOUTER(cctx_T *cctx, int idx, int nesting, int loop_depth, int loop_idx, type_T *type); |
Bram Moolenaar | c3caa7f | 2022-05-25 19:15:10 +0100 | [diff] [blame] | 41 | int generate_LOADV(cctx_T *cctx, char_u *name); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 42 | int generate_UNLET(cctx_T *cctx, isntype_T isn_type, char_u *name, int forceit); |
| 43 | int generate_LOCKCONST(cctx_T *cctx); |
| 44 | int generate_OLDSCRIPT(cctx_T *cctx, isntype_T isn_type, char_u *name, int sid, type_T *type); |
| 45 | int generate_VIM9SCRIPT(cctx_T *cctx, isntype_T isn_type, int sid, int idx, type_T *type); |
Bram Moolenaar | ec15b1c | 2022-03-27 16:29:53 +0100 | [diff] [blame] | 46 | int generate_NEWLIST(cctx_T *cctx, int count, int use_null); |
| 47 | int generate_NEWDICT(cctx_T *cctx, int count, int use_null); |
Yegappan Lakshmanan | 29bb67f | 2023-10-14 11:18:50 +0200 | [diff] [blame] | 48 | int generate_FUNCREF(cctx_T *cctx, ufunc_T *ufunc, class_T *cl, int object_method, int fi, int *isn_idx); |
Bram Moolenaar | cc34181 | 2022-09-19 15:54:34 +0100 | [diff] [blame] | 49 | int generate_NEWFUNC(cctx_T *cctx, char_u *lambda_name, char_u *func_name); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 50 | int generate_DEF(cctx_T *cctx, char_u *name, size_t len); |
| 51 | int generate_JUMP(cctx_T *cctx, jumpwhen_T when, int where); |
Bram Moolenaar | b46c083 | 2022-09-15 17:19:37 +0100 | [diff] [blame] | 52 | int generate_WHILE(cctx_T *cctx, int funcref_idx); |
Bram Moolenaar | 65b0d16 | 2022-12-13 18:43:22 +0000 | [diff] [blame] | 53 | int generate_JUMP_IF_ARG(cctx_T *cctx, isntype_T isn_type, int arg_off); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 54 | int generate_FOR(cctx_T *cctx, int loop_idx); |
Bram Moolenaar | cc34181 | 2022-09-19 15:54:34 +0100 | [diff] [blame] | 55 | int generate_ENDLOOP(cctx_T *cctx, loop_info_T *loop_info); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 56 | int generate_TRYCONT(cctx_T *cctx, int levels, int where); |
Bram Moolenaar | 1690032 | 2022-09-08 19:51:45 +0100 | [diff] [blame] | 57 | int check_internal_func_args(cctx_T *cctx, int func_idx, int argcount, int method_call, type2_T **argtypes, type2_T *shuffled_argtypes); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 58 | int generate_BCALL(cctx_T *cctx, int func_idx, int argcount, int method_call); |
| 59 | int generate_LISTAPPEND(cctx_T *cctx); |
| 60 | int generate_BLOBAPPEND(cctx_T *cctx); |
h-east | b895b0f | 2023-09-24 15:46:31 +0200 | [diff] [blame] | 61 | int generate_CALL(cctx_T *cctx, ufunc_T *ufunc, class_T *cl, int mi, int pushed_argcount); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 62 | int generate_UCALL(cctx_T *cctx, char_u *name, int argcount); |
Bram Moolenaar | 1690032 | 2022-09-08 19:51:45 +0100 | [diff] [blame] | 63 | int check_func_args_from_type(cctx_T *cctx, type_T *type, int argcount, int at_top, char_u *name); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 64 | int generate_PCALL(cctx_T *cctx, int argcount, char_u *name, type_T *type, int at_top); |
Yegappan Lakshmanan | f3eac69 | 2023-10-17 11:00:45 +0200 | [diff] [blame] | 65 | int generate_DEFER(cctx_T *cctx, int var_idx, int argcount); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 66 | int generate_STRINGMEMBER(cctx_T *cctx, char_u *name, size_t len); |
| 67 | int generate_ECHO(cctx_T *cctx, int with_white, int count); |
| 68 | int generate_MULT_EXPR(cctx_T *cctx, isntype_T isn_type, int count); |
Bram Moolenaar | bdc09a1 | 2022-10-07 14:31:45 +0100 | [diff] [blame] | 69 | int generate_ECHOWINDOW(cctx_T *cctx, int count, long time); |
Bram Moolenaar | c0ceeeb | 2022-03-30 21:12:27 +0100 | [diff] [blame] | 70 | int generate_SOURCE(cctx_T *cctx, int sid); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 71 | int generate_PUT(cctx_T *cctx, int regname, linenr_T lnum); |
Ernie Rael | ee865f3 | 2023-09-29 19:53:55 +0200 | [diff] [blame] | 72 | int generate_LOCKUNLOCK(cctx_T *cctx, char_u *line, int is_arg); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 73 | int generate_EXEC_copy(cctx_T *cctx, isntype_T isntype, char_u *line); |
| 74 | int generate_EXEC(cctx_T *cctx, isntype_T isntype, char_u *str); |
| 75 | int generate_LEGACY_EVAL(cctx_T *cctx, char_u *line); |
| 76 | int generate_EXECCONCAT(cctx_T *cctx, int count); |
| 77 | int generate_RANGE(cctx_T *cctx, char_u *range); |
| 78 | int generate_UNPACK(cctx_T *cctx, int var_count, int semicolon); |
| 79 | int generate_cmdmods(cctx_T *cctx, cmdmod_T *cmod); |
| 80 | int generate_undo_cmdmods(cctx_T *cctx); |
Bram Moolenaar | d505d17 | 2022-12-18 21:42:55 +0000 | [diff] [blame] | 81 | int generate_store_var(cctx_T *cctx, assign_dest_T dest, int opt_flags, int vimvaridx, type_T *type, char_u *name, lhs_T *lhs); |
Bram Moolenaar | 38ecd97 | 2022-01-15 21:44:44 +0000 | [diff] [blame] | 82 | int inside_loop_scope(cctx_T *cctx); |
Bram Moolenaar | 5cd6479 | 2021-12-25 18:23:24 +0000 | [diff] [blame] | 83 | int generate_store_lhs(cctx_T *cctx, lhs_T *lhs, int instr_count, int is_decl); |
Bram Moolenaar | dc7c366 | 2021-12-20 15:04:29 +0000 | [diff] [blame] | 84 | void may_generate_prof_end(cctx_T *cctx, int prof_lnum); |
| 85 | void delete_instr(isn_T *isn); |
| 86 | void clear_instr_ga(garray_T *gap); |
| 87 | /* vim: set ft=c : */ |