blob: 3fcf08c0957202f529117d7e82154b3b9533e383 [file] [log] [blame]
Bram Moolenaardc7c3662021-12-20 15:04:29 +00001/* vim9instr.c */
2isn_T *generate_instr(cctx_T *cctx, isntype_T isn_type);
3isn_T *generate_instr_drop(cctx_T *cctx, isntype_T isn_type, int drop);
4isn_T *generate_instr_type(cctx_T *cctx, isntype_T isn_type, type_T *type);
5isn_T *generate_instr_debug(cctx_T *cctx);
Bram Moolenaar00b28d62022-12-08 15:32:33 +00006int generate_CONSTRUCT(cctx_T *cctx, class_T *cl);
Yegappan Lakshmanan5a05d372023-09-29 19:43:11 +02007int generate_GET_OBJ_MEMBER(cctx_T *cctx, int idx, type_T *type);
8int generate_GET_ITF_MEMBER(cctx_T *cctx, class_T *itf, int idx, type_T *type);
Bram Moolenaar7ce7daf2022-12-10 18:42:12 +00009int generate_STORE_THIS(cctx_T *cctx, int idx);
Yegappan Lakshmananbce51d92024-04-15 19:19:52 +020010int may_generate_2STRING(int offset, int tostring_flags, cctx_T *cctx);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000011int generate_add_instr(cctx_T *cctx, vartype_T vartype, type_T *type1, type_T *type2, exprtype_T expr_type);
12vartype_T operator_type(type_T *type1, type_T *type2);
13int generate_two_op(cctx_T *cctx, char_u *op);
14int check_compare_types(exprtype_T type, typval_T *tv1, typval_T *tv2);
15int generate_COMPARE(cctx_T *cctx, exprtype_T exprtype, int ic);
Bram Moolenaarbd3a9d22022-05-17 16:12:39 +010016int generate_CONCAT(cctx_T *cctx, int count);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000017int generate_2BOOL(cctx_T *cctx, int invert, int offset);
18int generate_COND2BOOL(cctx_T *cctx);
Bram Moolenaarc6951a72022-12-29 20:56:24 +000019int generate_TYPECHECK(cctx_T *cctx, type_T *expected, int number_ok, int offset, int is_var, int argidx);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000020int generate_SETTYPE(cctx_T *cctx, type_T *expected);
Christian Brabandt6a950da2024-01-01 20:18:36 +010021int generate_PUSHOBJ(cctx_T *cctx);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000022int generate_tv_PUSH(cctx_T *cctx, typval_T *tv);
23int generate_PUSHNR(cctx_T *cctx, varnumber_T number);
24int generate_PUSHBOOL(cctx_T *cctx, varnumber_T number);
25int generate_PUSHSPEC(cctx_T *cctx, varnumber_T number);
26int generate_PUSHF(cctx_T *cctx, float_T fnumber);
27int generate_PUSHS(cctx_T *cctx, char_u **str);
Bram Moolenaar397a87a2022-03-20 21:14:15 +000028int generate_PUSHCHANNEL(cctx_T *cctx);
29int generate_PUSHJOB(cctx_T *cctx);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000030int generate_PUSHBLOB(cctx_T *cctx, blob_T *blob);
Bram Moolenaar1d84f762022-09-03 21:35:53 +010031int generate_PUSHFUNC(cctx_T *cctx, char_u *name, type_T *type, int may_prefix);
Bram Moolenaar06b77222022-01-25 15:51:56 +000032int generate_AUTOLOAD(cctx_T *cctx, char_u *name, type_T *type);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000033int generate_GETITEM(cctx_T *cctx, int index, int with_op);
34int generate_SLICE(cctx_T *cctx, int count);
35int generate_CHECKLEN(cctx_T *cctx, int min_len, int more_OK);
36int generate_STORE(cctx_T *cctx, isntype_T isn_type, int idx, char_u *name);
Bram Moolenaard505d172022-12-18 21:42:55 +000037int generate_CLASSMEMBER(cctx_T *cctx, int load, class_T *cl, int idx);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000038int generate_STORENR(cctx_T *cctx, int idx, varnumber_T value);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000039int generate_LOAD(cctx_T *cctx, isntype_T isn_type, int idx, char_u *name, type_T *type);
Bram Moolenaarcc341812022-09-19 15:54:34 +010040int generate_LOADOUTER(cctx_T *cctx, int idx, int nesting, int loop_depth, int loop_idx, type_T *type);
Bram Moolenaarc3caa7f2022-05-25 19:15:10 +010041int generate_LOADV(cctx_T *cctx, char_u *name);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000042int generate_UNLET(cctx_T *cctx, isntype_T isn_type, char_u *name, int forceit);
43int generate_LOCKCONST(cctx_T *cctx);
44int generate_OLDSCRIPT(cctx_T *cctx, isntype_T isn_type, char_u *name, int sid, type_T *type);
45int generate_VIM9SCRIPT(cctx_T *cctx, isntype_T isn_type, int sid, int idx, type_T *type);
Bram Moolenaarec15b1c2022-03-27 16:29:53 +010046int generate_NEWLIST(cctx_T *cctx, int count, int use_null);
47int generate_NEWDICT(cctx_T *cctx, int count, int use_null);
Yegappan Lakshmanan29bb67f2023-10-14 11:18:50 +020048int generate_FUNCREF(cctx_T *cctx, ufunc_T *ufunc, class_T *cl, int object_method, int fi, int *isn_idx);
Bram Moolenaarcc341812022-09-19 15:54:34 +010049int generate_NEWFUNC(cctx_T *cctx, char_u *lambda_name, char_u *func_name);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000050int generate_DEF(cctx_T *cctx, char_u *name, size_t len);
51int generate_JUMP(cctx_T *cctx, jumpwhen_T when, int where);
Bram Moolenaarb46c0832022-09-15 17:19:37 +010052int generate_WHILE(cctx_T *cctx, int funcref_idx);
Bram Moolenaar65b0d162022-12-13 18:43:22 +000053int generate_JUMP_IF_ARG(cctx_T *cctx, isntype_T isn_type, int arg_off);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000054int generate_FOR(cctx_T *cctx, int loop_idx);
Bram Moolenaarcc341812022-09-19 15:54:34 +010055int generate_ENDLOOP(cctx_T *cctx, loop_info_T *loop_info);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000056int generate_TRYCONT(cctx_T *cctx, int levels, int where);
Bram Moolenaar16900322022-09-08 19:51:45 +010057int check_internal_func_args(cctx_T *cctx, int func_idx, int argcount, int method_call, type2_T **argtypes, type2_T *shuffled_argtypes);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000058int generate_BCALL(cctx_T *cctx, int func_idx, int argcount, int method_call);
59int generate_LISTAPPEND(cctx_T *cctx);
60int generate_BLOBAPPEND(cctx_T *cctx);
Ernie Rael58c95792024-08-13 23:27:22 +020061int generate_CALL(cctx_T *cctx, ufunc_T *ufunc, class_T *cl, int mi, int pushed_argcount, int is_super);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000062int generate_UCALL(cctx_T *cctx, char_u *name, int argcount);
Bram Moolenaar16900322022-09-08 19:51:45 +010063int check_func_args_from_type(cctx_T *cctx, type_T *type, int argcount, int at_top, char_u *name);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000064int generate_PCALL(cctx_T *cctx, int argcount, char_u *name, type_T *type, int at_top);
Yegappan Lakshmananf3eac692023-10-17 11:00:45 +020065int generate_DEFER(cctx_T *cctx, int var_idx, int argcount);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000066int generate_STRINGMEMBER(cctx_T *cctx, char_u *name, size_t len);
67int generate_ECHO(cctx_T *cctx, int with_white, int count);
68int generate_MULT_EXPR(cctx_T *cctx, isntype_T isn_type, int count);
Bram Moolenaarbdc09a12022-10-07 14:31:45 +010069int generate_ECHOWINDOW(cctx_T *cctx, int count, long time);
Bram Moolenaarc0ceeeb2022-03-30 21:12:27 +010070int generate_SOURCE(cctx_T *cctx, int sid);
Christian Brabandt762a79e2025-03-16 21:39:58 +010071int generate_PUT(cctx_T *cctx, int regname, linenr_T lnum);
Ernie Raelee865f32023-09-29 19:53:55 +020072int generate_LOCKUNLOCK(cctx_T *cctx, char_u *line, int is_arg);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000073int generate_EXEC_copy(cctx_T *cctx, isntype_T isntype, char_u *line);
74int generate_EXEC(cctx_T *cctx, isntype_T isntype, char_u *str);
75int generate_LEGACY_EVAL(cctx_T *cctx, char_u *line);
76int generate_EXECCONCAT(cctx_T *cctx, int count);
77int generate_RANGE(cctx_T *cctx, char_u *range);
78int generate_UNPACK(cctx_T *cctx, int var_count, int semicolon);
79int generate_cmdmods(cctx_T *cctx, cmdmod_T *cmod);
80int generate_undo_cmdmods(cctx_T *cctx);
Bram Moolenaard505d172022-12-18 21:42:55 +000081int 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 Moolenaar38ecd972022-01-15 21:44:44 +000082int inside_loop_scope(cctx_T *cctx);
Bram Moolenaar5cd64792021-12-25 18:23:24 +000083int generate_store_lhs(cctx_T *cctx, lhs_T *lhs, int instr_count, int is_decl);
Yegappan Lakshmanan16f2d3a2025-02-24 19:23:43 +010084int generate_SCRIPTCTX_SET(cctx_T *cctx, sctx_T new_sctx);
Bram Moolenaardc7c3662021-12-20 15:04:29 +000085void may_generate_prof_end(cctx_T *cctx, int prof_lnum);
86void delete_instr(isn_T *isn);
87void clear_instr_ga(garray_T *gap);
88/* vim: set ft=c : */