Commit Graph

119 Commits

Author SHA1 Message Date
Roberto Ierusalimschy
f6aab3ec1f First implementation of constant propagation
Local constant variables initialized with compile-time constants
are optimized away from the code.
2019-07-12 11:38:42 -03:00
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.
2019-07-09 10:43:17 -03:00
Roberto Ierusalimschy
ed2872cd3b 'require' returns where module was found
The function 'require' returns the *loader data* as a second result.
For file searchers, this data is the path where they found the module.
2019-04-17 14:57:29 -03:00
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.)
2019-03-19 15:31:08 -03:00
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.
2018-08-23 14:26:12 -03:00
Roberto Ierusalimschy
b397064955 avoid craches when loading tampered code with NULL as a string constant 2018-06-01 13:45:58 -03:00
Roberto Ierusalimschy
7622373033 using explicit tests for allocation overflow whenever possible 2017-12-07 16:59:52 -02:00
Roberto Ierusalimschy
dfd188ba12 detail (identation of switch) 2017-11-28 09:19:07 -02:00
Roberto Ierusalimschy
f96497397a new type 'StackValue' for stack elements
(we may want to put extra info there in the future)
2017-06-29 12:06:44 -03:00
Roberto Ierusalimschy
124bfd2081 dumping ints and size_ts compacted 2017-06-27 11:21:12 -03:00
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.)
2017-06-27 08:35:31 -03:00
Roberto Ierusalimschy
8c1fb91802 macro 'incr_top' replaced by function 'luaD_inctop'. (It is not used
in critical time pathes, can save a few bytes without the macro)
2015-11-02 14:09:30 -02:00
Roberto Ierusalimschy
ee5edb6b68 macros 'getaddrstr' and 'getstr' unified (they do the same thing) 2015-09-17 12:51:05 -03:00
Roberto Ierusalimschy
41964648ee long strings are created directly in final position when possible
(instead of using an auxiliar buffer to first create the string
and then allocate the final string and copy result there)
2015-09-08 12:41:05 -03:00
Roberto Ierusalimschy
28fdbcf393 added include for 'lprefix.h', for stuff that must be added before
any other header file
2014-11-02 17:19:04 -02:00
Roberto Ierusalimschy
89b56e7d84 more precision between closure types ('LClosure' x 'CClosure') 2014-06-19 15:27:20 -03:00
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)
2014-06-18 15:35:43 -03:00
Roberto Ierusalimschy
94266dfdbd source for all prototypes must be equal in a chunk; no need to store
each one separated
2014-06-18 10:21:12 -03:00
Roberto Ierusalimschy
ffa43df3cd 'setnvalue' -> 'setfltvalue' (for consitency with 'fltvalue') 2014-04-29 15:14:16 -03:00
Roberto Ierusalimschy
607be77ec8 some details to avoid warnings 2014-04-01 11:39:55 -03:00
Roberto Ierusalimschy
420cc62fac missplelling in comments/function names (endianess -> endianness) 2014-03-27 12:58:05 -03:00
Roberto Ierusalimschy
80fe8504f5 make all dumps/loads go trhough Load/DumpVector (so it is easier
to adapt the code to correct endianess, if needed)
2014-03-11 15:56:27 -03:00
Roberto Ierusalimschy
e976384213 keep chunk's headers compatible at least up to LUAC_VERSION (to be
able to detect correctly version mismatches)
2014-03-11 15:05:46 -03:00
Roberto Ierusalimschy
901da539e5 no need to avoid negative ints in 'LoadInt' 2014-03-10 16:50:19 -03:00
Roberto Ierusalimschy
197e249433 "indent -kr -i2 -br -brf -nut" plus a few manual formating 2014-03-10 14:56:32 -03:00
Roberto Ierusalimschy
f69e0ade19 no need to store a full 'size_t' fo the size of (frequent) small strings 2014-03-01 12:18:44 -03:00
Roberto Ierusalimschy
99a1c06ea3 more regularity with vectors + sizeof computed by the macros themselves 2014-02-28 13:13:01 -03:00
Roberto Ierusalimschy
93e28031de all chars used in binary dumps are unsigned ('lu_byte') 2014-02-28 09:25:12 -03:00
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
2014-02-27 15:56:15 -03:00
Roberto Ierusalimschy
054179c2ff more explicit handling of headers for binary chunks 2014-02-27 13:56:20 -03:00
Roberto Ierusalimschy
733c58595b no more local collection 2014-02-13 10:11:34 -02:00
Roberto Ierusalimschy
439d74e29f added 'local' bit (true => object is only refered by local variables) 2013-08-16 15:55:49 -03:00
Roberto Ierusalimschy
eee51492e2 dumping and undumping integers 2013-04-26 15:48:35 -03:00
Roberto Ierusalimschy
3cadc37f47 no more 'Proto' objects on the stack. Protos are anchored on outer
Protos or on a Closure, which must be created before the Proto.
2012-05-08 10:53:33 -03:00
Roberto Ierusalimschy
99bd1a000f error function can be 'l_noret' 2012-03-19 19:58:09 -03:00
Roberto Ierusalimschy
f88806a1fb "default: lua_assert(0)" in switches helps debugging + uses
non-variant types in binary files
2012-01-23 21:02:10 -02:00
Roberto Ierusalimschy
f0d143f30f avoid a few warnings (casts) 2011-12-07 16:03:47 -02:00
Roberto Ierusalimschy
6e899850b9 details 2011-11-24 11:25:41 -02:00
Roberto Ierusalimschy
6c8a32217a changes by lhf (better control of chars x bytes) 2011-05-17 09:42:43 -03:00
Roberto Ierusalimschy
7482e8f914 no need of lookahead in Zio 2011-02-23 10:13:10 -03:00
Roberto Ierusalimschy
e7a9c45a48 trying to avoid assumption that sizeof(char)==1 2011-02-07 17:15:24 -02:00
Roberto Ierusalimschy
1475cb59bf version from lhf 2010-10-25 12:33:38 -02:00
Roberto Ierusalimschy
25c557ec63 first version of _ENV; no more global variables 2010-03-12 16:14:06 -03:00
Roberto Ierusalimschy
0ac3d07ea6 first implementation of lexical environments 2009-09-30 12:38:37 -03:00
Roberto Ierusalimschy
5938212748 information about upvalues (where they come from) kept in Proto structure,
instead of sequence of pseudo-opcodes after OP_CLOSURE
2009-09-28 13:32:50 -03:00
Roberto Ierusalimschy
d7bc346d7a no more code checking 2009-04-30 14:42:21 -03:00
Roberto Ierusalimschy
facb0519a0 two bugs: invalid boolean values in constant table + too deep recursion
when reading nested functions
2008-04-07 15:44:23 -03:00
Roberto Ierusalimschy
a7c9e45c64 avoid trailing white spaces 2006-09-11 11:07:24 -03:00
Roberto Ierusalimschy
69ea087dff small change to strip file names when stripping debug information 2006-02-17 13:51:03 -02:00
Roberto Ierusalimschy
2753134a38 new versions by lhf 2005-11-16 09:55:07 -02:00