43 lines
2.0 KiB
C
43 lines
2.0 KiB
C
/********************************************************************
|
|
** Copyright (c) 2018-2020 Guan Wenliang
|
|
** This file is part of the Berry default interpreter.
|
|
** skiars@qq.com, https://github.com/Skiars/berry
|
|
** See Copyright Notice in the LICENSE file or at
|
|
** https://github.com/Skiars/berry/blob/master/LICENSE
|
|
********************************************************************/
|
|
#ifndef BE_CODE_H
|
|
#define BE_CODE_H
|
|
|
|
#include "be_parser.h"
|
|
|
|
#define be_code_freeregs(f, n) ((f)->freereg -= (bbyte)(n))
|
|
|
|
int be_code_allocregs(bfuncinfo *finfo, int count);
|
|
void be_code_prebinop(bfuncinfo *finfo, int op, bexpdesc *e);
|
|
void be_code_binop(bfuncinfo *finfo, int op, bexpdesc *e1, bexpdesc *e2);
|
|
int be_code_unop(bfuncinfo *finfo, int op, bexpdesc *e);
|
|
int be_code_setvar(bfuncinfo *finfo, bexpdesc *e1, bexpdesc *e2);
|
|
int be_code_nextreg(bfuncinfo *finfo, bexpdesc *e);
|
|
int be_code_jump(bfuncinfo *finfo);
|
|
void be_code_jumpto(bfuncinfo *finfo, int dst);
|
|
void be_code_jumpbool(bfuncinfo *finfo, bexpdesc *e, int jumptrue);
|
|
void be_code_conjump(bfuncinfo *finfo, int *list, int jmp);
|
|
void be_code_patchlist(bfuncinfo *finfo, int list, int dst);
|
|
void be_code_patchjump(bfuncinfo *finfo, int jmp);
|
|
int be_code_getmethod(bfuncinfo *finfo, bexpdesc *e);
|
|
void be_code_call(bfuncinfo *finfo, int base, int argc);
|
|
int be_code_proto(bfuncinfo *finfo, bproto *proto);
|
|
void be_code_closure(bfuncinfo *finfo, bexpdesc *e, int idx);
|
|
void be_code_close(bfuncinfo *finfo, int isret);
|
|
void be_code_class(bfuncinfo *finfo, bexpdesc *dst, bclass *c);
|
|
void be_code_ret(bfuncinfo *finfo, bexpdesc *e);
|
|
void be_code_member(bfuncinfo *finfo, bexpdesc *e1, bexpdesc *e2);
|
|
void be_code_index(bfuncinfo *finfo, bexpdesc *c, bexpdesc *k);
|
|
void be_code_setsuper(bfuncinfo *finfo, bexpdesc *c, bexpdesc *s);
|
|
void be_code_import(bfuncinfo *finfo, bexpdesc *m, bexpdesc *v);
|
|
int be_code_exblk(bfuncinfo *finfo, int depth);
|
|
void be_code_catch(bfuncinfo *finfo, int base, int ecnt, int vcnt, int *jmp);
|
|
void be_code_raise(bfuncinfo *finfo, bexpdesc *e1, bexpdesc *e2);
|
|
|
|
#endif
|