📄 ljit_hints.h
字号:
/*** Hints for the JIT compiler backend.** Copyright (C) 2005-2007 Mike Pall. See Copyright Notice in luajit.h*/#ifdef STRING_HINTS#define HH(x, name) #name#define HH_START(x) static const char *const hints_##x [] = {#define HH_END(x) NULL }#else#define HH(x, name) JIT_##x##_##name#define HH_START(x) enum { JIT_##x##_NONE,#define HH_END(x) JIT_##x##_MAX }/* Macros to access hints. */#define JIT_H2NUM(x) ((x) << 16)#define fhint_get(J, hh) \ (luaH_getnum(J->comstate, JIT_H2NUM(JIT_FH_##hh)))#define fhint_isset(J, hh) (!ttisnil(fhint_get(J, hh)))#define hint_getpc(J, hh, pc) \ (luaH_getnum(J->comstate, (pc)+JIT_H2NUM(JIT_H_##hh)))#define hint_get(J, hh) hint_getpc(J, hh, J->nextpc-1)#define hint_issetpc(J, hh, pc) (!ttisnil(hint_getpc(J, hh, pc)))#define hint_isset(J, hh) hint_issetpc(J, hh, J->nextpc-1)#endif/* Hints for functions. */HH_START(FH) HH(FH, NOCLOSE), /* No luaF_close() needed. */HH_END(FH);/* Hints for individual bytecode instruction. */HH_START(H) HH(H, COMBINE), /* Combine/dead instruction: true/false. */ HH(H, FOR_STEP_K), /* FORPREP/FORLOOP step is const: step. */ HH(H, TYPE), /* Type hint: typed object. */ HH(H, TYPEKEY), /* Type hint for keys: typed object. */ HH(H, INLINE), /* Inline function call: internal index. */HH_END(H);#undef HH#undef HH_START#undef HH_END/* Avoid multiple inclusion for the following. */#ifndef ljit_hints_h#define ljit_hints_h/* Index numbers for inlining C functions. *//* CHECK: the index numbers must match with jit.opt_lib. */#define JIT_IH_LIB(x) ((x) >> 16)#define JIT_IH_IDX(x) ((x) & 0xffff)#define JIT_IH_MKIDX(l, f) (((l) << 16) | (f))/* Library index numbers. */enum { JIT_IHLIB_INTERNAL, JIT_IHLIB_BASE, JIT_IHLIB_COROUTINE, JIT_IHLIB_STRING, JIT_IHLIB_TABLE, JIT_IHLIB_MATH, JIT_IHLIB__LAST};/* Internal functions. */enum { JIT_IH_INTERNAL_RECURSIVE, /* Recursive call. */ JIT_IH_INTERNAL__LAST};/* Base library functions. */enum { JIT_IH_BASE_PAIRS, JIT_IH_BASE_IPAIRS, JIT_IH_BASE__LAST};/* Coroutine library functions. */enum { JIT_IH_COROUTINE_YIELD, JIT_IH_COROUTINE_RESUME, JIT_IH_COROUTINE__LAST};/* String library functions. */enum { JIT_IH_STRING_LEN, JIT_IH_STRING_SUB, JIT_IH_STRING_CHAR, JIT_IH_STRING__LAST};/* Table library functions. */enum { JIT_IH_TABLE_INSERT, JIT_IH_TABLE_REMOVE, JIT_IH_TABLE_GETN, JIT_IH_TABLE__LAST};/* Math library functions. *//* CHECK: order must match with function table for jit_inline_math(). */enum { /* 1 arg, 1 result. */ /* Partially inlined. Call C function from libm: */ JIT_IH_MATH_LOG, JIT_IH_MATH_LOG10, JIT_IH_MATH_EXP, JIT_IH_MATH_SINH, JIT_IH_MATH_COSH, JIT_IH_MATH_TANH, JIT_IH_MATH_ASIN, JIT_IH_MATH_ACOS, JIT_IH_MATH_ATAN, /* Fully inlined: */ JIT_IH_MATH_SIN, JIT_IH_MATH_COS, JIT_IH_MATH_TAN, JIT_IH_MATH_CEIL, JIT_IH_MATH_FLOOR, JIT_IH_MATH_ABS, JIT_IH_MATH_SQRT, /* 2 args, 1 result. */ JIT_IH_MATH_FMOD, JIT_IH_MATH_ATAN2, JIT_IH_MATH__LAST};#define JIT_IH_MATH__21 JIT_IH_MATH_FMOD#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -