Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Tag LUA_TUPVALTBC replaced by a flag | Roberto Ierusalimschy | 2019-07-19 | 1 | -3/+1 |
| | | | | | It is simpler to signal a to-be-closed upvalue with a boolean flag, instead of using a different tag. | ||||
* | Details | Roberto Ierusalimschy | 2019-07-18 | 1 | -5/+5 |
| | | | | | | | - Macro 'checkliveness' (for debug) always uses 'L', to avoid warnings. - Some old 'while' changed to 'for' in 'testes/gc.lua'. - In 'testes/libs/makefile', do not make files depend on 'ltests.h', which may not even exist. | ||||
* | OP_NEWTABLE keeps exact size of arrays | Roberto Ierusalimschy | 2019-07-12 | 1 | -2/+0 |
| | | | | | | OP_NEWTABLE is followed by an OP_EXTRAARG, so that it can keep the exact size of the array part of the table to be created. (Functions 'luaO_int2fb'/'luaO_fb2int' were removed.) | ||||
* | First implementation of constant propagation | Roberto Ierusalimschy | 2019-07-12 | 1 | -1/+1 |
| | | | | | Local constant variables initialized with compile-time constants are optimized away from the code. | ||||
* | New implementation for constants | Roberto Ierusalimschy | 2019-07-09 | 1 | -0/+1 |
| | | | | | | | | | 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. | ||||
* | Added field 'srclen' to structure 'lua_Debug' | Roberto Ierusalimschy | 2019-04-04 | 1 | -1/+1 |
| | | | | | | This new field gets the length of 'source' in the same structure. Unlike the other strings in that structure, 'source' can be relatively large, and Lua already has its length readily available. | ||||
* | Strings inside Lua are not fully aligned | Roberto Ierusalimschy | 2019-03-13 | 1 | -9/+1 |
| | | | | | | Removed code to ensure that strings inside Lua (as returned by 'lua_tolstring') always start in fully aligned addresses. Since version 5.3 the documentation does not ensure that. | ||||
* | Removed internal cache for closures | Roberto Ierusalimschy | 2018-11-01 | 1 | -2/+0 |
| | | | | | | | | | | | | | | | | | | | The mechanism of "caching the last closure created for a prototype to try to reuse it the next time a closure for that prototype is created" was removed. There are several reasons: - It is hard to find a natural example where this cache has a measurable impact on performance. - Programmers already perceive closure creation as something slow, so they tend to avoid it inside hot paths. (Any case where the cache could reuse a closure can be rewritten predefining the closure in some variable and using that variable.) - The implementation was somewhat complex, due to a bad interaction with the generational collector. (Typically, new closures are new, while prototypes are old. So, the cache breaks the invariant that old objects should not point to new ones.) | ||||
* | Towards "to closed" local variables | Roberto Ierusalimschy | 2018-10-08 | 1 | -0/+4 |
| | | | | | | | | | | | | Start of the implementation of "scoped variables" or "to be closed" variables, local variables whose '__close' (or themselves) are called when they go out of scope. This commit implements the syntax, the opcode, and the creation of the corresponding upvalue, but it still does not call the finalizations when the variable goes out of scope (the most important part). Currently, the syntax is 'local scoped name = exp', but that will probably change. | ||||
* | Removed extra information from RCS keyword strings | Roberto Ierusalimschy | 2018-08-23 | 1 | -1/+1 |
| | | | | | Version numbers and dates (mostly wrong) from RCS keyword strings removed from all source files; only the file name are kept. | ||||
* | new field 'nilvalue' in struct 'global_State' to avoid the use of | Roberto Ierusalimschy | 2018-06-15 | 1 | -4/+1 |
| | | | | addresses of static variables | ||||
* | field 'sizearray' in struct 'Table' changed to 'alimit', which can | Roberto Ierusalimschy | 2018-06-15 | 1 | -2/+15 |
| | | | | be used as a hint for '#t' | ||||
* | no more 'luaO_nilobject' to avoid comparison of global variable addresses | Roberto Ierusalimschy | 2018-06-01 | 1 | -7/+1 |
| | | | | (now uses static variables) | ||||
* | no more 'luaH_emptyobject' and comparisons of addresses of global variables | Roberto Ierusalimschy | 2018-06-01 | 1 | -8/+28 |
| | | | | | (instead, use a different kind of nil to signal the fake entry returned when a key is not found in a table) | ||||
* | no more nil-in-table | Roberto Ierusalimschy | 2018-04-04 | 1 | -8/+2 |
| | |||||
* | better names for macros for tags and types. | Roberto Ierusalimschy | 2018-02-26 | 1 | -11/+11 |
| | | | | | rttype -> rawtt; ttyperaw -> withvariant; ttype -> ttypetag; tnov -> ttype | ||||
* | special compact representation for userdata with no user values | Roberto Ierusalimschy | 2018-02-26 | 1 | -9/+28 |
| | | | | (a common case) | ||||
* | avoid variant tags with the same value of the original type | Roberto Ierusalimschy | 2018-02-25 | 1 | -9/+9 |
| | | | | (to expose bugs more easily) | ||||
* | first (parcial) implementation of 'keyin'/'removekey' | Roberto Ierusalimschy | 2018-02-25 | 1 | -5/+12 |
| | | | | (still no metamethods, no raw verssions) | ||||
* | first version of empty entries in tables | Roberto Ierusalimschy | 2018-02-23 | 1 | -3/+27 |
| | | | | (so that, in the future, tables can contain regular nil entries) | ||||
* | some reorganization in 'lobject.h' | Roberto Ierusalimschy | 2018-02-22 | 1 | -187/+218 |
| | | | | (just moving stuff around) | ||||
* | details (comments) | Roberto Ierusalimschy | 2018-02-21 | 1 | -19/+26 |
| | |||||
* | userdata can have multiple user values | Roberto Ierusalimschy | 2018-02-20 | 1 | -26/+34 |
| | |||||
* | janitor work on casts | Roberto Ierusalimschy | 2018-01-28 | 1 | -4/+4 |
| | |||||
* | detail (comment) | Roberto Ierusalimschy | 2018-01-28 | 1 | -2/+2 |
| | |||||
* | detail (typo in comments) | Roberto Ierusalimschy | 2017-11-23 | 1 | -2/+2 |
| | |||||
* | back to 'CallInfo' (no gains with its removal) | Roberto Ierusalimschy | 2017-11-07 | 1 | -31/+1 |
| | |||||
* | fitting a StackValue structure into 32 bytes (for 64-bit machines) | Roberto Ierusalimschy | 2017-11-06 | 1 | -8/+9 |
| | |||||
* | no more useful fields in CallInfo | Roberto Ierusalimschy | 2017-11-03 | 1 | -2/+16 |
| | |||||
* | more fields moved out of 'CallInfo' | Roberto Ierusalimschy | 2017-11-03 | 1 | -1/+12 |
| | |||||
* | baby steps to remove 'CallInfo': keeping 'L->func' correct | Roberto Ierusalimschy | 2017-10-31 | 1 | -1/+5 |
| | |||||
* | new type 'StackValue' for stack elements | Roberto Ierusalimschy | 2017-06-29 | 1 | -11/+22 |
| | | | | (we may want to put extra info there in the future) | ||||
* | 'lineinfo' in prototypes saved as differences instead of absolute | Roberto Ierusalimschy | 2017-06-27 | 1 | -4/+21 |
| | | | | | | 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.) | ||||
* | no more 'DEADKEY'. Table traversals do not need to consider dead keys; | Roberto Ierusalimschy | 2017-06-12 | 1 | -10/+12 |
| | | | | | | if the key is dead, it cannot be given to 'next'. Instead, we now use a 'table' tag without the collectable bit, which makes it a unique tag good enough to reserve space. | ||||
* | in hash nodes, keys are stored in separate pieces to avoid wasting | Roberto Ierusalimschy | 2017-06-09 | 1 | -22/+76 |
| | | | | space with alignments | ||||
* | when assigning to a 'TValue', better assign only exact fields, | Roberto Ierusalimschy | 2017-06-01 | 1 | -6/+6 |
| | | | | to allow us to put stuff after the 'TValuefields' if needed | ||||
* | added 'cachemiss' field to prototype to avoid wasting time checking | Roberto Ierusalimschy | 2017-04-30 | 1 | -1/+2 |
| | | | | hits that fail too often | ||||
* | type 'L_Umaxalign' replaced by macro 'LUAI_MAXALIGN', which is also added | Roberto Ierusalimschy | 2017-04-24 | 1 | -3/+3 |
| | | | | to the auxlib buffer | ||||
* | Upvalues collected like everything else (with mark-sweep) instead | Roberto Ierusalimschy | 2017-04-11 | 1 | -5/+17 |
| | | | | of reference count (simpler and better for generational mode) | ||||
* | do not eliminate varargs from functions that do not use varargs | Roberto Ierusalimschy | 2016-08-01 | 1 | -2/+2 |
| | | | | (confuses the debug lib and gains very little in performance) | ||||
* | allow 'set' macros to be used when 'L' is not available (as it was | Roberto Ierusalimschy | 2015-11-03 | 1 | -2/+2 |
| | | | | needed only for assertions) | ||||
* | function prepares vararg only if it really uses them (chunks | Roberto Ierusalimschy | 2015-10-28 | 1 | -2/+2 |
| | | | | are always declared vararg but seldom uses them) | ||||
* | macros 'getaddrstr' and 'getstr' unified (they do the same thing) | Roberto Ierusalimschy | 2015-09-17 | 1 | -3/+3 |
| | |||||
* | detail in macro 'checkliveness' + macro 'setobj2t' defined as an | Roberto Ierusalimschy | 2015-09-08 | 1 | -15/+16 |
| | | | | expression (to be used in macro 'luaV_fastset') | ||||
* | small janitor work | Roberto Ierusalimschy | 2015-09-08 | 1 | -28/+23 |
| | |||||
* | using macros ('rttype' and 'settt_') to access "private" field 'tt_' | Roberto Ierusalimschy | 2015-06-09 | 1 | -3/+3 |
| | |||||
* | detail (removed unused macro VARBITS) | Roberto Ierusalimschy | 2015-04-02 | 1 | -3/+1 |
| | |||||
* | comments | Roberto Ierusalimschy | 2015-03-14 | 1 | -5/+5 |
| | |||||
* | new macros 'chgfltvalue'/'chgivalue' (numerical for loop does | Roberto Ierusalimschy | 2015-03-02 | 1 | -1/+7 |
| | | | | not need to set the type of its internal variable at each iteration) | ||||
* | size of short strings stored in a single byte, to reduce the size | Roberto Ierusalimschy | 2015-01-16 | 1 | -3/+12 |
| | | | | of struct 'TString' |