Roberto Ierusalimschy
ab859fe59b
Bug: Loading a corrupted binary file can segfault
The size of the list of upvalue names are stored separated from the
size of the list of upvalues, but they share the same array.
2 years ago
Roberto Ierusalimschy
61a4e64a66
Back to old encoding of versions in binary files
(Undoing part of commit f53eabeed8.) It is better to keep this encoding
stable, so that all Lua versions can read at least the version of a
binary file.
5 years ago
Roberto Ierusalimschy
e8a52281d9
Code style in 'ldump'/'lundump'.
- function names start with lower case;
- state is always the first parameter.
5 years ago
Roberto Ierusalimschy
46c3587a6f
Clearer distinction between types and tags
LUA_T* represents only types; tags (types + Variants) are represented
by LUA_V* constants.
5 years ago
Roberto Ierusalimschy
5ff408d218
Changed internal representation of booleans
Instead of an explicit value (field 'b'), true and false use different
tag variants. This avoids reading an extra field and results in more
direct code. (Most code that uses booleans needs to distinguish between
true and false anyway.)
5 years ago
Roberto Ierusalimschy
f6aab3ec1f
First implementation of constant propagation
Local constant variables initialized with compile-time constants
are optimized away from the code.
5 years ago
Roberto Ierusalimschy
54f7b46c1e
New implementation for constants
VLOCAL expressions keep a reference to their corresponding 'Vardesc',
and 'Upvaldesc' (for upvalues) has a field 'ro' (read-only). So, it is
easier to check whether a variable is read-only. The decoupling in
VLOCAL between 'vidx' ('Vardesc' index) and 'sidx' (stack index)
should also help the forthcoming implementation of compile-time
constant propagation.
5 years ago
Roberto Ierusalimschy
f53eabeed8
Small changes in the header of binary files
- LUAC_VERSION is equal to LUA_VERSION_NUM, and it is stored
as an int.
- 'sizeof(int)' and 'sizeof(size_t)' removed from the header, as
the binary format does not depend on these sizes. (It uses its
own serialization for unsigned integer values.)
6 years ago
Roberto Ierusalimschy
f99509581e
Removed extra information from RCS keyword strings
Version numbers and dates (mostly wrong) from RCS keyword strings
removed from all source files; only the file name are kept.
6 years ago
Roberto Ierusalimschy
ef8263f81f
better names for macros for tags and types.
rttype -> rawtt; ttyperaw -> withvariant; ttype -> ttypetag;
tnov -> ttype
7 years ago
Roberto Ierusalimschy
dfd188ba12
detail (identation of switch)
7 years ago
Roberto Ierusalimschy
124bfd2081
dumping ints and size_ts compacted
7 years ago
Roberto Ierusalimschy
b42430fd3a
'lineinfo' in prototypes saved as differences instead of absolute
values, so that the array can use bytes instead of ints, reducing
its size. (A new array 'abslineinfo' is used when line differences
do not fit in a byte.)
7 years ago
Roberto Ierusalimschy
0c78de0d6d
avoid calling write function with empty block
9 years ago
Roberto Ierusalimschy
fcc6e1220e
avoid expression with side effect (in debug mode) inside 'sizeof'
10 years ago
Roberto Ierusalimschy
7e2015a46d
size of short strings stored in a single byte, to reduce the size
of struct 'TString'
10 years ago
Roberto Ierusalimschy
28fdbcf393
added include for 'lprefix.h', for stuff that must be added before
any other header file
10 years ago
Roberto Ierusalimschy
ca41b43f53
type 'TString' refers directly to the structure inside the union
(union used only for size purposes)
10 years ago
Roberto Ierusalimschy
7021cc9bc8
allows different 'source' for each prototype, but inherits it from
parent when they are equal (only possible case for chunks created
by the parser)
11 years ago
Roberto Ierusalimschy
04da0a40c0
added assertion about sources being the same for all protos in a chunk
11 years ago
Roberto Ierusalimschy
94266dfdbd
source for all prototypes must be equal in a chunk; no need to store
each one separated
11 years ago
Roberto Ierusalimschy
607be77ec8
some details to avoid warnings
11 years ago
Roberto Ierusalimschy
420cc62fac
missplelling in comments/function names (endianess -> endianness)
11 years ago
Roberto Ierusalimschy
80fe8504f5
make all dumps/loads go trhough Load/DumpVector (so it is easier
to adapt the code to correct endianess, if needed)
11 years ago
Roberto Ierusalimschy
e976384213
keep chunk's headers compatible at least up to LUAC_VERSION (to be
able to detect correctly version mismatches)
11 years ago
Roberto Ierusalimschy
197e249433
"indent -kr -i2 -br -brf -nut" plus a few manual formating
11 years ago
Roberto Ierusalimschy
f69e0ade19
no need to store a full 'size_t' fo the size of (frequent) small strings
11 years ago
Roberto Ierusalimschy
99a1c06ea3
more regularity with vectors + sizeof computed by the macros themselves
11 years ago
Roberto Ierusalimschy
93e28031de
all chars used in binary dumps are unsigned ('lu_byte')
11 years ago
Roberto Ierusalimschy
de84b3fecb
store number of upvalues of main function in front of the dump,
so that undump can create initial closure before reading its prototype
11 years ago
Roberto Ierusalimschy
054179c2ff
more explicit handling of headers for binary chunks
11 years ago
Roberto Ierusalimschy
eee51492e2
dumping and undumping integers
12 years ago
Roberto Ierusalimschy
8f8665fffa
'ttypenv' -> 'ttnov'
12 years ago
Roberto Ierusalimschy
f88806a1fb
"default: lua_assert(0)" in switches helps debugging + uses
non-variant types in binary files
13 years ago
Roberto Ierusalimschy
6e899850b9
details
13 years ago
Roberto Ierusalimschy
6c8a32217a
changes by lhf (better control of chars x bytes)
14 years ago
Roberto Ierusalimschy
1475cb59bf
version from lhf
14 years ago
Roberto Ierusalimschy
25c557ec63
first version of _ENV; no more global variables
15 years ago
Roberto Ierusalimschy
0ac3d07ea6
first implementation of lexical environments
15 years ago
Roberto Ierusalimschy
5938212748
information about upvalues (where they come from) kept in Proto structure,
instead of sequence of pseudo-opcodes after OP_CLOSURE
15 years ago
Roberto Ierusalimschy
1ceec74370
useless test removed (pointed by lint)
17 years ago
Roberto Ierusalimschy
a7c9e45c64
avoid trailing white spaces
18 years ago
Roberto Ierusalimschy
69ea087dff
small change to strip file names when stripping debug information
19 years ago
Roberto Ierusalimschy
2753134a38
new versions by lhf
19 years ago
Roberto Ierusalimschy
67578ec51f
several small details
20 years ago
Roberto Ierusalimschy
1ab2b93462
debug information for last line of a function definition
20 years ago
Roberto Ierusalimschy
5d834bdf57
function constants may include boolean values
20 years ago
Roberto Ierusalimschy
4206d7ed60
`lua_Chunkwriter' returns 0 in case of success
21 years ago
Roberto Ierusalimschy
b4cd38ba6c
new scheme for configuration through `luaconf.h'
21 years ago
Roberto Ierusalimschy
47fc57a252
`TObject' renamed to `TValue' + other name changes and better assertions
for incremental garbage collection
21 years ago