zombiezen.com/go/lua@v0.0.0-20231013005828-290725fb9140/internal/lua54/lfunc.h (about)

     1  /*
     2  ** $Id: lfunc.h $
     3  ** Auxiliary functions to manipulate prototypes and closures
     4  ** See Copyright Notice in lua.h
     5  */
     6  
     7  #ifndef lfunc_h
     8  #define lfunc_h
     9  
    10  
    11  #include "lobject.h"
    12  
    13  
    14  #define sizeCclosure(n)	(cast_int(offsetof(CClosure, upvalue)) + \
    15                           cast_int(sizeof(TValue)) * (n))
    16  
    17  #define sizeLclosure(n)	(cast_int(offsetof(LClosure, upvals)) + \
    18                           cast_int(sizeof(TValue *)) * (n))
    19  
    20  
    21  /* test whether thread is in 'twups' list */
    22  #define isintwups(L)	(L->twups != L)
    23  
    24  
    25  /*
    26  ** maximum number of upvalues in a closure (both C and Lua). (Value
    27  ** must fit in a VM register.)
    28  */
    29  #define MAXUPVAL	255
    30  
    31  
    32  #define upisopen(up)	((up)->v.p != &(up)->u.value)
    33  
    34  
    35  #define uplevel(up)	check_exp(upisopen(up), cast(StkId, (up)->v.p))
    36  
    37  
    38  /*
    39  ** maximum number of misses before giving up the cache of closures
    40  ** in prototypes
    41  */
    42  #define MAXMISS		10
    43  
    44  
    45  
    46  /* special status to close upvalues preserving the top of the stack */
    47  #define CLOSEKTOP	(-1)
    48  
    49  
    50  LUAI_FUNC Proto *luaF_newproto (lua_State *L);
    51  LUAI_FUNC CClosure *luaF_newCclosure (lua_State *L, int nupvals);
    52  LUAI_FUNC LClosure *luaF_newLclosure (lua_State *L, int nupvals);
    53  LUAI_FUNC void luaF_initupvals (lua_State *L, LClosure *cl);
    54  LUAI_FUNC UpVal *luaF_findupval (lua_State *L, StkId level);
    55  LUAI_FUNC void luaF_newtbcupval (lua_State *L, StkId level);
    56  LUAI_FUNC void luaF_closeupval (lua_State *L, StkId level);
    57  LUAI_FUNC StkId luaF_close (lua_State *L, StkId level, int status, int yy);
    58  LUAI_FUNC void luaF_unlinkupval (UpVal *uv);
    59  LUAI_FUNC void luaF_freeproto (lua_State *L, Proto *f);
    60  LUAI_FUNC const char *luaF_getlocalname (const Proto *func, int local_number,
    61                                           int pc);
    62  
    63  
    64  #endif