"Fossies" - the Fresh Open Source Software Archive

Member "memcached-1.6.15/vendor/lua/src/ldo.h" (1 Oct 2021, 2926 Bytes) of package /linux/www/memcached-1.6.15.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /*
    2 ** $Id: ldo.h $
    3 ** Stack and Call structure of Lua
    4 ** See Copyright Notice in lua.h
    5 */
    6 
    7 #ifndef ldo_h
    8 #define ldo_h
    9 
   10 
   11 #include "lobject.h"
   12 #include "lstate.h"
   13 #include "lzio.h"
   14 
   15 
   16 /*
   17 ** Macro to check stack size and grow stack if needed.  Parameters
   18 ** 'pre'/'pos' allow the macro to preserve a pointer into the
   19 ** stack across reallocations, doing the work only when needed.
   20 ** It also allows the running of one GC step when the stack is
   21 ** reallocated.
   22 ** 'condmovestack' is used in heavy tests to force a stack reallocation
   23 ** at every check.
   24 */
   25 #define luaD_checkstackaux(L,n,pre,pos)  \
   26     if (l_unlikely(L->stack_last - L->top <= (n))) \
   27       { pre; luaD_growstack(L, n, 1); pos; } \
   28         else { condmovestack(L,pre,pos); }
   29 
   30 /* In general, 'pre'/'pos' are empty (nothing to save) */
   31 #define luaD_checkstack(L,n)    luaD_checkstackaux(L,n,(void)0,(void)0)
   32 
   33 
   34 
   35 #define savestack(L,p)      ((char *)(p) - (char *)L->stack)
   36 #define restorestack(L,n)   ((StkId)((char *)L->stack + (n)))
   37 
   38 
   39 /* macro to check stack size, preserving 'p' */
   40 #define checkstackGCp(L,n,p)  \
   41   luaD_checkstackaux(L, n, \
   42     ptrdiff_t t__ = savestack(L, p);  /* save 'p' */ \
   43     luaC_checkGC(L),  /* stack grow uses memory */ \
   44     p = restorestack(L, t__))  /* 'pos' part: restore 'p' */
   45 
   46 
   47 /* macro to check stack size and GC */
   48 #define checkstackGC(L,fsize)  \
   49     luaD_checkstackaux(L, (fsize), luaC_checkGC(L), (void)0)
   50 
   51 
   52 /* type of protected functions, to be ran by 'runprotected' */
   53 typedef void (*Pfunc) (lua_State *L, void *ud);
   54 
   55 LUAI_FUNC void luaD_seterrorobj (lua_State *L, int errcode, StkId oldtop);
   56 LUAI_FUNC int luaD_protectedparser (lua_State *L, ZIO *z, const char *name,
   57                                                   const char *mode);
   58 LUAI_FUNC void luaD_hook (lua_State *L, int event, int line,
   59                                         int fTransfer, int nTransfer);
   60 LUAI_FUNC void luaD_hookcall (lua_State *L, CallInfo *ci);
   61 LUAI_FUNC void luaD_pretailcall (lua_State *L, CallInfo *ci, StkId func, int n);
   62 LUAI_FUNC CallInfo *luaD_precall (lua_State *L, StkId func, int nResults);
   63 LUAI_FUNC void luaD_call (lua_State *L, StkId func, int nResults);
   64 LUAI_FUNC void luaD_callnoyield (lua_State *L, StkId func, int nResults);
   65 LUAI_FUNC void luaD_tryfuncTM (lua_State *L, StkId func);
   66 LUAI_FUNC int luaD_closeprotected (lua_State *L, ptrdiff_t level, int status);
   67 LUAI_FUNC int luaD_pcall (lua_State *L, Pfunc func, void *u,
   68                                         ptrdiff_t oldtop, ptrdiff_t ef);
   69 LUAI_FUNC void luaD_poscall (lua_State *L, CallInfo *ci, int nres);
   70 LUAI_FUNC int luaD_reallocstack (lua_State *L, int newsize, int raiseerror);
   71 LUAI_FUNC int luaD_growstack (lua_State *L, int n, int raiseerror);
   72 LUAI_FUNC void luaD_shrinkstack (lua_State *L);
   73 LUAI_FUNC void luaD_inctop (lua_State *L);
   74 
   75 LUAI_FUNC l_noret luaD_throw (lua_State *L, int errcode);
   76 LUAI_FUNC int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud);
   77 
   78 #endif
   79