Commit Graph
100 Commits
Author SHA1 Message Date
Roberto Ierusalimschy de9128d09d do not mess up the debt when the collector is not running 2017-10-31 13:29:28 -02:00
Roberto Ierusalimschy 1d8920dd7f some cleaning in GC parameters 2017-10-11 09:38:45 -03:00
Roberto Ierusalimschy 911f1e3e7f raw operation should not convert strings to numbers 2017-10-10 17:05:40 -03:00
Roberto Ierusalimschy a1ef58b3a5 eplicit 1-bit opcode operand 'k' 2017-10-04 18:56:32 -03:00
Roberto Ierusalimschy 283e7455ff detail 2017-10-04 18:53:03 -03:00
Roberto Ierusalimschy 8fbe9e3470 new opcodes with immediate integer operand for all arithmetic operations 2017-10-04 12:49:24 -03:00
Roberto Ierusalimschy 9ed9f40f1e avoid warning about 'const' 2017-10-04 12:49:05 -03:00
Roberto Ierusalimschy 940472c75c opcode size increased to 7 bits 2017-10-02 19:51:32 -03:00
Roberto Ierusalimschy f3b3d9b5c2 string constants (Kstr) must fit into 'B' register 2017-10-02 19:50:57 -03:00
Roberto Ierusalimschy 7f9a32ad85 new function 'printcode' 2017-10-01 16:17:51 -03:00
Roberto Ierusalimschy bc1b0733b8 avoid the use of bit 'Bk' ('B' will lose this bit soon) 2017-10-01 16:13:43 -03:00
Roberto Ierusalimschy 722bdbe17d no more 'getBMode'-'getCMode' (imprecise + we will need more space
for op mode) + better control of op modes
2017-09-28 13:53:29 -03:00
Roberto Ierusalimschy 1b10033583 new function 'luaT_trybiniTM'
to handle tag methods for instructions with immediate integer arguments
2017-09-27 15:59:08 -03:00
Roberto Ierusalimschy 00e728af88 binary operators use R instead of RK
faster + nobody uses RK(B), so B can be smaller (freeing one bit
for more opcodes, soon)
2017-09-26 15:14:45 -03:00
Roberto Ierusalimschy 13256a4173 detail
put explicit all cases for a switch of an enumeration
2017-09-26 14:10:49 -03:00
Roberto Ierusalimschy abb17cf19b new opcode OP_LOADF (load immediate float) 2017-09-19 15:38:14 -03:00
Roberto Ierusalimschy e0c0e2ee14 comments (documentation about instruction formats) 2017-09-18 13:07:54 -03:00
Roberto Ierusalimschy 022e4427cf detail (keep OP_LOADK and OP_LOADKX together) 2017-09-15 11:19:06 -03:00
Roberto Ierusalimschy 80d9b09f35 jumps do not close upvalues (to be faster and simpler);
explicit instruction to close upvalues; command 'break' not
handled like a 'goto' (to optimize removal of uneeded 'close'
instructions)
2017-09-13 16:50:08 -03:00
Roberto Ierusalimschy 029d269f4d bug: dead keys with nil values can stay in weak tables 2017-08-31 13:14:41 -03:00
Roberto Ierusalimschy ac65bab25f jumps in 'for' loops don't need to be signed 2017-08-14 15:33:14 -03:00
Roberto Ierusalimschy f185c0132e comment in code fragment 2017-08-12 10:12:42 -03:00
Roberto Ierusalimschy b77f792b23 comment 2017-08-12 10:12:21 -03:00
Roberto Ierusalimschy 4053eae9eb bug: Lua does not check GC when creating error messages 2017-07-27 10:55:38 -03:00
Roberto Ierusalimschy 6d998055c8 no more reference 'memerrmsg' + new reference to "n"
(both can be retrieved by 'luaS_newliteral' without creating anything,
because they are fixed, but "n" deserves fast access while 'memerrmsg'
does not)
2017-07-27 10:50:16 -03:00
Roberto Ierusalimschy 11769b203f new version (5.4) 2017-07-27 10:36:54 -03:00
Roberto Ierusalimschy b1daa069ba bug: Lua does not check GC when creating error messages 2017-07-10 14:35:12 -03:00
Roberto Ierusalimschy 4dff277255 coercion string->number in arithmetic operations moved to string
library
2017-07-07 13:34:32 -03:00
Roberto Ierusalimschy 07db10813c 'OP_VARARG' has the vararg parameter as an operand 2017-06-29 12:38:41 -03: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 5a1c8d8ef3 new constant 'LUA_GNAME' for the name of the global table "_G" 2017-06-27 15:32:49 -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 60a7492d24 new type 'ls_byte' for signed bytes 2017-06-27 08:35:01 -03:00
Roberto Ierusalimschy 73ec04fcf3 no more 'DEADKEY'. Table traversals do not need to consider dead keys;
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.
2017-06-12 11:21:44 -03:00
Roberto Ierusalimschy d13a3fb070 detail
(removed empty spaces at the end of lines)
2017-06-09 16:16:41 -03:00
Roberto Ierusalimschy b6f87491af in hash nodes, keys are stored in separate pieces to avoid wasting
space with alignments
2017-06-09 13:48:44 -03:00
Roberto Ierusalimschy 4bb30f461b when assigning to a 'TValue', better assign only exact fields,
to allow us to put stuff after the 'TValuefields' if needed
2017-06-01 17:24:05 -03:00
Roberto Ierusalimschy dad85e4131 macro 'setobj2t' may not be an expression 2017-06-01 17:23:27 -03:00
Roberto Ierusalimschy b029e7ea20 macro 'luaV_fastget' may need protection ({}) to be used inside
'if's
2017-06-01 17:22:33 -03:00
Roberto Ierusalimschy 4bc33d64de avoid overflows in computation of step size 2017-06-01 16:16:34 -03:00
Roberto Ierusalimschy 8821746841 updated GC states in function 'T.gcstate' 2017-05-31 15:54:58 -03:00
Roberto Ierusalimschy 72d82a296c revamping the incremental collector
Some simplifications (not counting bytes, couting only slots visited;
no more 'gcfinnum'); more GC parameters; using vararg in 'lua_gc' to
set parameters in different GC modes
2017-05-26 16:14:29 -03:00
Roberto Ierusalimschy 4804bbd9bb include first standard header files
(Some broken compiler has problems with 'signal.h' being included
without a definition for 'size_t'.)
2017-05-24 18:11:19 -03:00
Roberto Ierusalimschy be0d951be8 bug: cannot reuse a dying upvalue 2017-05-24 15:54:54 -03:00
Roberto Ierusalimschy a9dbc2d641 assert removed in 'luaO_arith'
(nobody calls it with L==NULL)
2017-05-24 10:47:11 -03:00
Roberto Ierusalimschy c25380c28d details (using proper version of 'setobj') 2017-05-23 09:50:11 -03:00
Roberto Ierusalimschy 03094da80c detail (extra closing brackets) 2017-05-22 09:55:16 -03:00
Roberto Ierusalimschy 01c96ad12e handling of inf, -inf, and NaN by string.format'%q' 2017-05-19 13:29:40 -03:00
Roberto Ierusalimschy 1bdc328c75 bug: Lua crashes when building sequences with more than 2^30 elements.
bug: Table length computation overflows for sequences larger than
2^31 elements..
2017-05-19 09:58:40 -03:00
Roberto Ierusalimschy e3d52da144 BUG: in 'computesizes', 'twotoi' overflows when a sequence has
more than 2^30 elements.
2017-05-19 09:57:10 -03:00
Roberto Ierusalimschy e39ee2cc58 'luaH_getn' must return 'lua_Unsigned' (or 'lua_Integer'), to
allow the boundary-search algorithm to use 'maxinteger' when
it cannot find a good upper bound.
2017-05-19 09:48:15 -03:00
Roberto Ierusalimschy 84910e04e2 better implementation for 'hash_search', without using 'size_t'
(simpler to implement and to explain)
2017-05-19 09:47:00 -03:00
Roberto Ierusalimschy de74289049 table field names for dedicated opcodes can be restricted to
small strings for slightly faster access
2017-05-18 16:44:19 -03:00
Roberto Ierusalimschy 92b3deaffa details in OP_CALL + comments 2017-05-18 16:34:39 -03:00
Roberto Ierusalimschy 49f7aab62a 'lua_rawlen' returns 'lua_Unsigned' instead of 'size_t'. (Real
length of strings and userdata are limited by Lua integers,
but table length is hard to compute limiting it to 'size_t'.)
2017-05-18 09:34:58 -03:00
Roberto Ierusalimschy 3d879fbc5d reimplementation of 'luaH_getn', trying to handle numeric limits
properly.
2017-05-16 16:07:08 -03:00
Roberto Ierusalimschy 6d95de83c6 no more field 'base' in CallInfo (base is always equal to 'func + 1',
with old/new vararg implementation)
2017-05-13 10:54:47 -03:00
Roberto Ierusalimschy 5c8770f896 back to old-style vararg system (with vararg table collecting extra
arguments)
2017-05-13 10:04:33 -03:00
Roberto Ierusalimschy 7647d5d13d revamp of fast track for table access (table set uses the same
macros as table get + new macro for integer keys)
2017-05-11 15:57:46 -03:00
Roberto Ierusalimschy 7184f6343a more integer fast tracks (for OP_LT, OP_LE, OP_SETTABLE, and OP_GETTABLE) 2017-05-10 14:32:19 -03:00
Roberto Ierusalimschy b1b7790f7c detail ('1' -> '1u' in unsigned operation) 2017-05-09 11:39:46 -03:00
Roberto Ierusalimschy ab5a650029 details (direct access to 'Ck' bit in instructions) 2017-05-08 13:08:01 -03:00
Roberto Ierusalimschy fb9de1b4d7 detail ('luaT_callbinTM' does not need to be extern) 2017-05-08 12:57:23 -03:00
Roberto Ierusalimschy e8757a73e6 'luaV_execute' keeps local copy of program counter and hook mask,
to avoid excessive access to globals.
2017-05-05 14:16:11 -03:00
Roberto Ierusalimschy 4ce8d2047c bug: Wrong code for a goto followed by a label inside an 'if' 2017-05-05 12:55:36 -03:00
Roberto Ierusalimschy 2376eb6347 barrier for prototype's cache (with new gray list 'protogray' to keep
prototypes to have their caches visited again) + constant 'MAXMISS'
2017-05-04 10:32:01 -03:00
Roberto Ierusalimschy 8634b2a011 added 'cachemiss' field to prototype to avoid wasting time checking
hits that fail too often
2017-04-30 17:43:26 -03:00
Roberto Ierusalimschy 5ecb31003f bug: cannot "skip" labels after if-goto before the jump over the
'then' part
2017-04-29 15:09:17 -03:00
Roberto Ierusalimschy a454e884e0 details in 'findsetreg' 2017-04-29 12:28:38 -03:00
Roberto Ierusalimschy 502a1d1108 new opcodes for table access with constant keys (strings and integers) 2017-04-28 17:57:45 -03:00
Roberto Ierusalimschy 173e41b2eb new opcode OP_ADDI (for immediate integer operand) (Experimental) 2017-04-26 14:46:52 -03:00
Roberto Ierusalimschy a3f9c1a77a detail (using unsigned comparison in range check for LOADI) 2017-04-25 17:01:14 -03:00
Roberto Ierusalimschy 6dbae1b5d9 registers in a VINDEXED expression must be freed in order 2017-04-25 15:28:25 -03:00
Roberto Ierusalimschy cb3d5dce30 opcodes 'OP_GETTABUP'/'OP_SETTABUP' operate only with string keys,
so they can use fast-track table access
2017-04-24 17:26:39 -03:00
Roberto Ierusalimschy 2caecf1b3e type 'L_Umaxalign' replaced by macro 'LUAI_MAXALIGN', which is also added
to the auxlib buffer
2017-04-24 15:06:12 -03:00
Roberto Ierusalimschy f399e6705f ensures that "collectgarbage'step'" in generational mode does a
minor collection
2017-04-24 14:52:18 -03:00
Roberto Ierusalimschy 69371c4b84 'KGC_NORMAL' -> 'KGC_INC' + emergency GC signalled by flag (instead
of mode)
2017-04-24 13:59:26 -03:00
Roberto Ierusalimschy 6a98aa0bb0 new opcode LOADI (for loading immediate integers) 2017-04-20 16:53:55 -03:00
Roberto Ierusalimschy c354211744 small bug in generational control 2017-04-20 15:24:33 -03:00
Roberto Ierusalimschy f748b4bb40 macros to define default parameters for generational collection 2017-04-20 15:22:44 -03:00
Roberto Ierusalimschy 7ae180f8e8 corrected some checks about colors of old objects + new test function
'gcage'
2017-04-19 15:46:47 -03:00
Roberto Ierusalimschy c7bdc0e0e8 first version of control for the generational collector 2017-04-19 14:02:50 -03:00
Roberto Ierusalimschy a45945b6d5 new macro 'lua_pointer2str' to encapsulate use of 'l_sprintf' inside
the kernel
2017-04-19 13:34:35 -03:00
Roberto Ierusalimschy 9e1f1b1f62 detail in usage message for '-l' option 2017-04-19 09:49:17 -03:00
Roberto Ierusalimschy 4679294796 memory check adapted to generational mode 2017-04-18 16:42:12 -03:00
Roberto Ierusalimschy f74b87c3c2 removed initialization of 'GCestimate' (it is initialized during
a GC cycle, when it start counting)
2017-04-12 15:56:25 -03:00
Roberto Ierusalimschy 16001acb15 small corrections + removal of debugging functions 'count' and
'printgray'.
2017-04-12 15:01:40 -03:00
Roberto Ierusalimschy 0c8a7e071b 'mainthread' lives in 'allgc' list, like everybody else 2017-04-11 16:00:27 -03:00
Roberto Ierusalimschy a3d36fe283 Upvalues collected like everything else (with mark-sweep) instead
of reference count (simpler and better for generational mode)
2017-04-11 15:41:09 -03:00
Roberto Ierusalimschy 9569ad6b0d Comments for generational collector 2017-04-10 10:33:04 -03:00
Roberto Ierusalimschy 2331e1beec small changes in 'luaC_upvalbarrier' 2017-04-06 10:08:56 -03:00
Roberto Ierusalimschy e4287da3a6 generational collector (still not complete) 2017-04-05 13:50:51 -03:00
Roberto Ierusalimschy 1a1b2f3d7f added 'return' to calls to 'luaL_error' (to signal to the compiler
that the function cannot continue past that call)
2017-03-14 09:40:44 -03:00
Roberto Ierusalimschy f5f3df3bd1 generational collection: new attempt (still incomplete) 2017-02-23 18:07:34 -03:00
Roberto Ierusalimschy e6c1e6005a comments about gray lists 2017-02-15 16:52:13 -02:00
Roberto Ierusalimschy d266d40dea error when calling close method without arguments (e.g.,
|io.stdin.close()|)
2017-02-09 12:50:05 -02:00
Roberto Ierusalimschy e354c6355e small updates 2017-01-31 19:17:47 -02:00
Roberto Ierusalimschy 94c1b3a8ee Handling of LUA_PATH/LUA_CPATH moved back to 'package' library
to avoid incompatibilites with previous releases
2017-01-12 15:14:26 -02:00
Roberto Ierusalimschy 08199ade4a release 5.3.4 (year 2017) 2016-12-22 13:51:20 -02:00