Mercurial
comparison third_party/luajit/src/lj_bcdump.h @ 186:8cf4ec5e2191 hg-web
Fixed merge conflict.
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Fri, 23 Jan 2026 22:38:59 -0800 |
| parents | 94705b5986b3 |
| children |
comparison
equal
deleted
inserted
replaced
| 176:fed99fc04e12 | 186:8cf4ec5e2191 |
|---|---|
| 1 /* | |
| 2 ** Bytecode dump definitions. | |
| 3 ** Copyright (C) 2005-2023 Mike Pall. See Copyright Notice in luajit.h | |
| 4 */ | |
| 5 | |
| 6 #ifndef _LJ_BCDUMP_H | |
| 7 #define _LJ_BCDUMP_H | |
| 8 | |
| 9 #include "lj_obj.h" | |
| 10 #include "lj_lex.h" | |
| 11 | |
| 12 /* -- Bytecode dump format ------------------------------------------------ */ | |
| 13 | |
| 14 /* | |
| 15 ** dump = header proto+ 0U | |
| 16 ** header = ESC 'L' 'J' versionB flagsU [namelenU nameB*] | |
| 17 ** proto = lengthU pdata | |
| 18 ** pdata = phead bcinsW* uvdataH* kgc* knum* [debugB*] | |
| 19 ** phead = flagsB numparamsB framesizeB numuvB numkgcU numknU numbcU | |
| 20 ** [debuglenU [firstlineU numlineU]] | |
| 21 ** kgc = kgctypeU { ktab | (loU hiU) | (rloU rhiU iloU ihiU) | strB* } | |
| 22 ** knum = intU0 | (loU1 hiU) | |
| 23 ** ktab = narrayU nhashU karray* khash* | |
| 24 ** karray = ktabk | |
| 25 ** khash = ktabk ktabk | |
| 26 ** ktabk = ktabtypeU { intU | (loU hiU) | strB* } | |
| 27 ** | |
| 28 ** B = 8 bit, H = 16 bit, W = 32 bit, U = ULEB128 of W, U0/U1 = ULEB128 of W+1 | |
| 29 */ | |
| 30 | |
| 31 /* Bytecode dump header. */ | |
| 32 #define BCDUMP_HEAD1 0x1b | |
| 33 #define BCDUMP_HEAD2 0x4c | |
| 34 #define BCDUMP_HEAD3 0x4a | |
| 35 | |
| 36 /* If you perform *any* kind of private modifications to the bytecode itself | |
| 37 ** or to the dump format, you *must* set BCDUMP_VERSION to 0x80 or higher. | |
| 38 */ | |
| 39 #define BCDUMP_VERSION 2 | |
| 40 | |
| 41 /* Compatibility flags. */ | |
| 42 #define BCDUMP_F_BE 0x01 | |
| 43 #define BCDUMP_F_STRIP 0x02 | |
| 44 #define BCDUMP_F_FFI 0x04 | |
| 45 #define BCDUMP_F_FR2 0x08 | |
| 46 | |
| 47 #define BCDUMP_F_KNOWN (BCDUMP_F_FR2*2-1) | |
| 48 | |
| 49 /* Type codes for the GC constants of a prototype. Plus length for strings. */ | |
| 50 enum { | |
| 51 BCDUMP_KGC_CHILD, BCDUMP_KGC_TAB, BCDUMP_KGC_I64, BCDUMP_KGC_U64, | |
| 52 BCDUMP_KGC_COMPLEX, BCDUMP_KGC_STR | |
| 53 }; | |
| 54 | |
| 55 /* Type codes for the keys/values of a constant table. */ | |
| 56 enum { | |
| 57 BCDUMP_KTAB_NIL, BCDUMP_KTAB_FALSE, BCDUMP_KTAB_TRUE, | |
| 58 BCDUMP_KTAB_INT, BCDUMP_KTAB_NUM, BCDUMP_KTAB_STR | |
| 59 }; | |
| 60 | |
| 61 /* -- Bytecode reader/writer ---------------------------------------------- */ | |
| 62 | |
| 63 LJ_FUNC int lj_bcwrite(lua_State *L, GCproto *pt, lua_Writer writer, | |
| 64 void *data, int strip); | |
| 65 LJ_FUNC GCproto *lj_bcread_proto(LexState *ls); | |
| 66 LJ_FUNC GCproto *lj_bcread(LexState *ls); | |
| 67 | |
| 68 #endif |