mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-01 03:53:33 +00:00
3bfb7580c5
Redbean Lua Server Pages may now be stored in the zip as byte code. This can improve performance, since redbean currently doesn't cache byte code but it might be more useful for anyone wanting to create a closed source redbean. The .lua extension should be used for byte code files. Lua will tell them apart based on a magic number at the start of the file. This change also improves some Lua error reporting conditions. See #97
71 lines
2.5 KiB
C
71 lines
2.5 KiB
C
/*
|
|
** $Id: ltm.h $
|
|
** Tag methods
|
|
** See Copyright Notice in lua.h
|
|
*/
|
|
|
|
#ifndef ltm_h
|
|
#define ltm_h
|
|
|
|
#include "third_party/lua/lobject.h"
|
|
#include "third_party/lua/luaconf.h"
|
|
#include "third_party/lua/tms.h"
|
|
|
|
/* clang-format off */
|
|
|
|
/*
|
|
** Mask with 1 in all fast-access methods. A 1 in any of these bits
|
|
** in the flag of a (meta)table means the metatable does not have the
|
|
** corresponding metamethod field. (Bit 7 of the flag is used for
|
|
** 'isrealasize'.)
|
|
*/
|
|
#define maskflags (~(~0u << (TM_EQ + 1)))
|
|
|
|
|
|
/*
|
|
** Test whether there is no tagmethod.
|
|
** (Because tagmethods use raw accesses, the result may be an "empty" nil.)
|
|
*/
|
|
#define notm(tm) ttisnil(tm)
|
|
|
|
|
|
#define gfasttm(g,et,e) ((et) == NULL ? NULL : \
|
|
((et)->flags & (1u<<(e))) ? NULL : luaT_gettm(et, e, (g)->tmname[e]))
|
|
|
|
#define fasttm(l,et,e) gfasttm(G(l), et, e)
|
|
|
|
#define ttypename(x) luaT_typenames_[(x) + 1]
|
|
|
|
LUAI_DDEC(const char *const luaT_typenames_[LUA_TOTALTYPES];)
|
|
|
|
|
|
LUAI_FUNC const char *luaT_objtypename (lua_State *L, const TValue *o);
|
|
|
|
LUAI_FUNC const TValue *luaT_gettm (Table *events, TMS event, TString *ename);
|
|
LUAI_FUNC const TValue *luaT_gettmbyobj (lua_State *L, const TValue *o,
|
|
TMS event);
|
|
LUAI_FUNC void luaT_init (lua_State *L);
|
|
|
|
LUAI_FUNC void luaT_callTM (lua_State *L, const TValue *f, const TValue *p1,
|
|
const TValue *p2, const TValue *p3);
|
|
LUAI_FUNC void luaT_callTMres (lua_State *L, const TValue *f,
|
|
const TValue *p1, const TValue *p2, StkId p3);
|
|
LUAI_FUNC void luaT_trybinTM (lua_State *L, const TValue *p1, const TValue *p2,
|
|
StkId res, TMS event);
|
|
LUAI_FUNC void luaT_tryconcatTM (lua_State *L);
|
|
LUAI_FUNC void luaT_trybinassocTM (lua_State *L, const TValue *p1,
|
|
const TValue *p2, int inv, StkId res, TMS event);
|
|
LUAI_FUNC void luaT_trybiniTM (lua_State *L, const TValue *p1, lua_Integer i2,
|
|
int inv, StkId res, TMS event);
|
|
LUAI_FUNC int luaT_callorderTM (lua_State *L, const TValue *p1,
|
|
const TValue *p2, TMS event);
|
|
LUAI_FUNC int luaT_callorderiTM (lua_State *L, const TValue *p1, int v2,
|
|
int inv, int isfloat, TMS event);
|
|
|
|
LUAI_FUNC void luaT_adjustvarargs (lua_State *L, int nfixparams,
|
|
struct CallInfo *ci, const Proto *p);
|
|
LUAI_FUNC void luaT_getvarargs (lua_State *L, struct CallInfo *ci,
|
|
StkId where, int wanted);
|
|
|
|
|
|
#endif
|