Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Removed internal cache for closures | Roberto Ierusalimschy | 2018-11-01 | 1 | -4/+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.) | ||||
* | Big revamp in the implmentation of labels/gotos | Roberto Ierusalimschy | 2018-10-29 | 1 | -1/+1 |
| | | | | | | | | Added restriction that, when a label is created, there cannot be another label with the same name visible. That allows backward goto's to be resolved when they are read. Backward goto's get a close if they jump out of the scope of some variable; labels get a close only if previous goto to it jumps out of the scope of some upvalue. | ||||
* | To-be-closed variables in the C API | Roberto Ierusalimschy | 2018-10-25 | 1 | -0/+3 |
| | |||||
* | First "complete" implementation of to-be-closed variables | Roberto Ierusalimschy | 2018-10-17 | 1 | -1/+1 |
| | | | | | | | Still missing: - handling of memory errors when creating upvalue (must run closing method all the same) - interaction with coroutines | ||||
* | Towards "to closed" local variables | Roberto Ierusalimschy | 2018-10-08 | 1 | -11/+14 |
| | | | | | | | | | | | | 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. | ||||
* | Fixed bug in line info. when using 'not' operator | Roberto Ierusalimschy | 2018-07-11 | 1 | -1/+21 |
| | | | | | | | | | When creating code for a jump on a 'not' condition, the code generator was removing an instruction (the OP_NOT) without adjusting its corresponding line information. This fix also added tests for this case and extra functionality in the test library to debug line info. structures. | ||||
* | Opcode names moved to a new header file | Roberto Ierusalimschy | 2018-07-09 | 1 | -3/+4 |
| | | | | | | | The array with the names of the opcodes was moved to a header file ('lopnames.h'), as it is not used by the Lua kernel. Files that need that array ('luac.c' and 'ltests.c') include the header file to get a private (static) copy. | ||||
* | field 'sizearray' in struct 'Table' changed to 'alimit', which can | Roberto Ierusalimschy | 2018-06-15 | 1 | -5/+10 |
| | | | | be used as a hint for '#t' | ||||
* | no more 'TESTGRAYBIT' (to free this bit for real uses) | Roberto Ierusalimschy | 2018-06-11 | 1 | -21/+4 |
| | |||||
* | details (casts between 'lua_Number' and 'double') | Roberto Ierusalimschy | 2018-03-09 | 1 | -3/+3 |
| | |||||
* | first version of empty entries in tables | Roberto Ierusalimschy | 2018-02-23 | 1 | -3/+3 |
| | | | | (so that, in the future, tables can contain regular nil entries) | ||||
* | userdata can have multiple user values | Roberto Ierusalimschy | 2018-02-20 | 1 | -10/+15 |
| | |||||
* | janitor work on casts | Roberto Ierusalimschy | 2018-01-28 | 1 | -13/+13 |
| | |||||
* | keep more opcode arguments byte-aligned | Roberto Ierusalimschy | 2018-01-09 | 1 | -2/+2 |
| | |||||
* | new command 'print' (to print literal strings) in mini-language | Roberto Ierusalimschy | 2017-12-29 | 1 | -2/+6 |
| | |||||
* | some cleaning on signed opcode parameters | Roberto Ierusalimschy | 2017-12-15 | 1 | -2/+2 |
| | |||||
* | allows memory-allocation errors when shrinking blocks | Roberto Ierusalimschy | 2017-12-11 | 1 | -2/+3 |
| | |||||
* | new C instruction "rawcheckstack" (to test failing in 'lua_checkstack') | Roberto Ierusalimschy | 2017-12-08 | 1 | -3/+16 |
| | |||||
* | new test function 'T.allocount' to restrict number of allocations | Roberto Ierusalimschy | 2017-12-07 | 1 | -3/+18 |
| | | | | before a memory-allocation error | ||||
* | more information from 'T.stacklevel' | Roberto Ierusalimschy | 2017-11-23 | 1 | -2/+4 |
| | |||||
* | removed unused variable 'islocked' | Roberto Ierusalimschy | 2017-11-09 | 1 | -4/+1 |
| | |||||
* | new format for JUMP instructions (to allow larger offsets) | Roberto Ierusalimschy | 2017-11-07 | 1 | -3/+9 |
| | |||||
* | back to 'CallInfo' (no gains with its removal) | Roberto Ierusalimschy | 2017-11-07 | 1 | -11/+12 |
| | |||||
* | no more useful fields in CallInfo | Roberto Ierusalimschy | 2017-11-03 | 1 | -11/+9 |
| | |||||
* | more fields moved out of 'CallInfo' | Roberto Ierusalimschy | 2017-11-03 | 1 | -5/+6 |
| | |||||
* | new API for 'lua_resume' + cleaning the uses of the 'extra' field in | Roberto Ierusalimschy | 2017-11-02 | 1 | -10/+8 |
| | | | | 'CallInfo' | ||||
* | using 'L->func' when possible | Roberto Ierusalimschy | 2017-11-01 | 1 | -2/+2 |
| | |||||
* | eplicit 1-bit opcode operand 'k' | Roberto Ierusalimschy | 2017-10-04 | 1 | -3/+4 |
| | |||||
* | new function 'printcode' | Roberto Ierusalimschy | 2017-10-01 | 1 | -1/+18 |
| | |||||
* | new type 'StackValue' for stack elements | Roberto Ierusalimschy | 2017-06-29 | 1 | -4/+4 |
| | | | | (we may want to put extra info there in the future) | ||||
* | new constant 'LUA_GNAME' for the name of the global table "_G" | Roberto Ierusalimschy | 2017-06-27 | 1 | -2/+2 |
| | |||||
* | 'lineinfo' in prototypes saved as differences instead of absolute | Roberto Ierusalimschy | 2017-06-27 | 1 | -2/+2 |
| | | | | | | 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 | -2/+1 |
| | | | | | | 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 | -6/+10 |
| | | | | space with alignments | ||||
* | updated GC states in function 'T.gcstate' | Roberto Ierusalimschy | 2017-05-31 | 1 | -5/+7 |
| | |||||
* | barrier for prototype's cache (with new gray list 'protogray' to keep | Roberto Ierusalimschy | 2017-05-04 | 1 | -1/+4 |
| | | | | prototypes to have their caches visited again) + constant 'MAXMISS' | ||||
* | type 'L_Umaxalign' replaced by macro 'LUAI_MAXALIGN', which is also added | Roberto Ierusalimschy | 2017-04-24 | 1 | -2/+2 |
| | | | | to the auxlib buffer | ||||
* | 'KGC_NORMAL' -> 'KGC_INC' + emergency GC signalled by flag (instead | Roberto Ierusalimschy | 2017-04-24 | 1 | -2/+2 |
| | | | | of mode) | ||||
* | corrected some checks about colors of old objects + new test function | Roberto Ierusalimschy | 2017-04-19 | 1 | -15/+46 |
| | | | | 'gcage' | ||||
* | memory check adapted to generational mode | Roberto Ierusalimschy | 2017-04-18 | 1 | -63/+133 |
| | |||||
* | generational collection: new attempt (still incomplete) | Roberto Ierusalimschy | 2017-02-23 | 1 | -5/+7 |
| | |||||
* | using constants for "_LOADED" and "PRELOAD" | Roberto Ierusalimschy | 2016-12-04 | 1 | -2/+2 |
| | |||||
* | using 'lastfree == NULL' to signal that table is using the dummy | Roberto Ierusalimschy | 2016-11-07 | 1 | -3/+3 |
| | | | | node for its hash part + new macro 'allocsizenode' | ||||
* | '*' as a number means stack size, so that "return *" returns | Roberto Ierusalimschy | 2015-10-12 | 1 | -1/+6 |
| | | | | all values in the stack. | ||||
* | new definition for macro 'checkliveness' | Roberto Ierusalimschy | 2015-09-08 | 1 | -2/+2 |
| | |||||
* | detail | Roberto Ierusalimschy | 2015-07-01 | 1 | -2/+2 |
| | |||||
* | using 'lua_longassert' to avoid warnings | Roberto Ierusalimschy | 2015-06-18 | 1 | -2/+2 |
| | |||||
* | new function 'log2' to test 'luaO_ceillog2' (if needed) | Roberto Ierusalimschy | 2015-04-02 | 1 | -1/+9 |
| | |||||
* | code detail ('if' -> '?:') | Roberto Ierusalimschy | 2015-03-13 | 1 | -6/+6 |
| |