Roberto Ierusalimschy
2f6f6abeba
'rehash' -> 'tablerehash'
...
(to avoid name colisions when compiling Lua as a single file)
2017-12-18 11:00:57 -02:00
Roberto Ierusalimschy
3064edead2
details (cleaning uses of 'exp1')
2017-12-18 10:33:54 -02:00
Roberto Ierusalimschy
f8c1c1469a
some cleaning on signed opcode parameters
2017-12-15 16:53:48 -02:00
Roberto Ierusalimschy
4b6928e7f5
(1 << 31) with signed integer has undefined behavior in C
2017-12-15 16:35:22 -02:00
Roberto Ierusalimschy
b3f924bc69
'Proto->numparams' does not include vararg parameter
...
(one less subtraction when calling functions...)
2017-12-15 11:07:10 -02:00
Roberto Ierusalimschy
e001d5aea6
'VRELOCABLE' -> 'VRELOC'
2017-12-14 12:24:02 -02:00
Roberto Ierusalimschy
e752d84ed8
bug: memory-allocation error when resizing a table can leave it
...
in an inconsistent state.
2017-12-13 16:35:03 -02:00
Roberto Ierusalimschy
86431a2f1c
new opcodes BANDK/BORK/BXORK. (They do not use immediate operands
...
because, too often, masks in bitwise operations are integers larger
than one byte.)
2017-12-13 16:32:09 -02:00
Roberto Ierusalimschy
36cf8f3a3c
Code should not change the stack level after the initialization of a
...
string buffer.
2017-12-13 10:51:42 -02:00
Roberto Ierusalimschy
725c15a4ca
when shrinking stack, always shrinks the CI list.
...
(Stack overflow is not corelated to CI overflow anymore.)
2017-12-12 09:57:30 -02:00
Roberto Ierusalimschy
b077b20206
back to reallocation when resizing the string table.
...
(Not a good idea to explicitly allocate new memory when shrinking
something.)
2017-12-12 09:52:35 -02:00
Roberto Ierusalimschy
3cf340f676
allows memory-allocation errors when shrinking blocks
2017-12-11 16:55:31 -02:00
Roberto Ierusalimschy
7ad20af2cf
more freedom in handling memory-allocation errors (not all allocations
...
automatically raise an error), which allows fixing a bug when resizing
a table.
2017-12-11 16:53:53 -02:00
Roberto Ierusalimschy
bfb88e99e9
'luaD_growstack' cannot raise any errors when 'raiseerror' is
...
false (+ some comments)
2017-12-11 10:43:40 -02:00
Roberto Ierusalimschy
c5ebed7399
'luaM_shrinkvector' raises an error if it cannot shrink the block
...
(several parts of Lua use array size in protos as proxies for
number of valid elements)
2017-12-11 10:27:48 -02:00
Roberto Ierusalimschy
e663a24ab0
more freedom in handling memory-allocation errors (not all allocations
...
automatically raise an error), which allows fixing a bug when resizing
a table.
2017-12-08 15:28:25 -02:00
Roberto Ierusalimschy
40f823ec90
new C instruction "rawcheckstack" (to test failing in 'lua_checkstack')
2017-12-08 13:19:13 -02:00
Roberto Ierusalimschy
7622373033
using explicit tests for allocation overflow whenever possible
2017-12-07 16:59:52 -02:00
Roberto Ierusalimschy
46bc7f2bf7
detail (comment)
2017-12-07 16:53:33 -02:00
Roberto Ierusalimschy
cc01d46247
new test function 'T.allocount' to restrict number of allocations
...
before a memory-allocation error
2017-12-07 16:51:39 -02:00
Roberto Ierusalimschy
9fa1baf6de
opcodes for order and shift can use several metamethods,
...
so it is better to use a generic description + metamethod names
in some error messages shown without '__' prefix
2017-12-07 13:44:10 -02:00
Roberto Ierusalimschy
49dfaf7447
avoid using one function for different tasks (malloc, free, etc.)
2017-12-06 16:36:31 -02:00
Roberto Ierusalimschy
348fa1ca56
bug: 'lua_pushcclosure' should not call the garbage collector when
...
'n' is zero.
2017-12-06 16:20:28 -02:00
Roberto Ierusalimschy
ae11e37e53
bug: 'lua_pushcclosure' should not call the GC when 'n' is zero
2017-12-06 16:08:03 -02:00
Roberto Ierusalimschy
c7ee7fe026
new opcodes OP_SHLI/OP_SHRI
2017-12-04 15:41:30 -02:00
Roberto Ierusalimschy
421e459684
'luaS_resize' can raise memory errors
2017-12-01 15:38:49 -02:00
Roberto Ierusalimschy
9d28b40152
rehashes string table always allocating a new array instead of
...
reallocating old one. (Avoids problems if reallocation to a small
size fails.)
2017-12-01 14:40:29 -02:00
Roberto Ierusalimschy
e0bece77d6
detail
2017-12-01 13:44:51 -02:00
Roberto Ierusalimschy
d0356d5f15
another value for LUAI_MAXCCALLS (must think more about that)
2017-12-01 13:08:14 -02:00
Roberto Ierusalimschy
ac78b914b6
warnings from Visual Studio /W3
2017-11-30 13:37:16 -02:00
Roberto Ierusalimschy
10b8c99bbb
small peephole optimizations
2017-11-30 11:29:18 -02:00
Roberto Ierusalimschy
bdc751ce23
details (comments)
2017-11-30 11:16:43 -02:00
Roberto Ierusalimschy
19c6b375c3
detail (spacing)
2017-11-30 10:03:00 -02:00
Roberto Ierusalimschy
745eb41993
new opcodes OP_RETURN0/OP_RETURN1
2017-11-29 14:57:36 -02:00
Roberto Ierusalimschy
c766e4103d
'luaV_execute' gets call info as extra argument (it is always
...
available on call sites)
2017-11-29 11:02:17 -02:00
Roberto Ierusalimschy
36aecd4548
order opcodes cannot use 'K' operands
2017-11-28 13:26:15 -02:00
Roberto Ierusalimschy
1a5e8c1014
conditional jumps unified in label "condjump' + new variable 'vra'
...
to avoid excessive use of macro 's2v'
2017-11-28 12:51:00 -02:00
Roberto Ierusalimschy
ff5fe51044
using register 'k' for conditions in tests (we only need one bit there)
2017-11-28 10:58:18 -02:00
Roberto Ierusalimschy
dfd188ba12
detail (identation of switch)
2017-11-28 09:19:07 -02:00
Roberto Ierusalimschy
093c16b67b
new opcodes 'OP_LTI' and 'OP_LEI'
2017-11-27 15:44:31 -02:00
Roberto Ierusalimschy
599f1742c6
detail (typo in comments)
2017-11-23 17:29:04 -02:00
Roberto Ierusalimschy
73abfde2ef
small simplifications around 'luaT_callorderTM'
2017-11-23 17:18:10 -02:00
Roberto Ierusalimschy
194a4f9710
small simplifications in 'luaD_poscall'
2017-11-23 16:29:41 -02:00
Roberto Ierusalimschy
196c87c9ce
no more 'stackless' implementation; 'luaV_execute' calls itself
...
recursively to execute function calls. 'unroll' continues all
executions suspended by an yield (through a long jump)
2017-11-23 14:41:16 -02:00
Roberto Ierusalimschy
39f26b1480
more information from 'T.stacklevel'
2017-11-23 13:38:42 -02:00
Roberto Ierusalimschy
3c230cc825
using 'A' for register instead of 'B' in relational opcodes
...
('R(A)' is already created by default for all instructions.)
2017-11-22 17:15:44 -02:00
Roberto Ierusalimschy
41f2936d8f
new opcode 'OP_EQI' for equality with immediate numbers
2017-11-22 16:41:20 -02:00
Roberto Ierusalimschy
14c3aa12b5
more direct implementation for tail calls.
2017-11-21 12:18:03 -02:00
Roberto Ierusalimschy
f3ca52bfa9
in order comparison opcodes, fast track for floats too
2017-11-20 10:57:39 -02:00
Roberto Ierusalimschy
c47111bd4e
'io.read' accepts multiple formats in a single string argument
2017-11-16 14:28:36 -02:00
Roberto Ierusalimschy
e4e5aa85a2
detail ('signal' -> 'sign' in comments)
2017-11-16 11:19:06 -02:00
Roberto Ierusalimschy
4c0e36a46e
new instruction 'OP_EQK' (for equality with constants)
2017-11-16 10:59:14 -02:00
Roberto Ierusalimschy
5440b42f43
using 'trap' to stop 'luaV_execute' when necessary (tracing and
...
to update its copy of 'base' when the stack is reallocated)
2017-11-13 13:36:52 -02:00
Roberto Ierusalimschy
7d4828cc9f
avoid accessing wrong union field
2017-11-13 10:26:30 -02:00
Roberto Ierusalimschy
62f3b7c472
detail
2017-11-13 10:20:51 -02:00
Roberto Ierusalimschy
fb9be62f79
includes 'stdio.h' to allow prints when testing
2017-11-13 10:19:35 -02:00
Roberto Ierusalimschy
7c0175bc83
removed unused variable 'islocked'
2017-11-09 11:31:29 -02:00
Roberto Ierusalimschy
32fef60743
detail ('Protect' defined as an expression)
2017-11-08 17:01:02 -02:00
Roberto Ierusalimschy
26679ea35b
new function 'luaV_flttointeger' to convert floats to integers (without
...
string coercions) + string operands to bitwise operations handled
by string metamethods
2017-11-08 12:50:23 -02:00
Roberto Ierusalimschy
c3e5946fb2
new format for JUMP instructions (to allow larger offsets)
2017-11-07 15:20:42 -02:00
Roberto Ierusalimschy
ad0704e40c
back to 'CallInfo' (no gains with its removal)
2017-11-07 11:25:26 -02:00
Roberto Ierusalimschy
5a3f26f855
fitting a StackValue structure into 32 bytes (for 64-bit machines)
2017-11-06 15:34:06 -02:00
Roberto Ierusalimschy
93fd67b793
no more 'CallInfo' structure
2017-11-04 10:57:02 -02:00
Roberto Ierusalimschy
6bb3e40a8d
'lua_Debug' not using 'CallInfo'
2017-11-03 18:41:05 -02:00
Roberto Ierusalimschy
7612f7735d
removing uses of 'CallInfo'
2017-11-03 17:33:22 -02:00
Roberto Ierusalimschy
472c560705
no more useful fields in CallInfo
2017-11-03 15:22:54 -02:00
Roberto Ierusalimschy
54eb35a8aa
more fields moved out of 'CallInfo'
2017-11-03 10:12:30 -02:00
Roberto Ierusalimschy
ba36180fd7
new API for 'lua_resume' + cleaning the uses of the 'extra' field in
...
'CallInfo'
2017-11-02 09:28:56 -02:00
Roberto Ierusalimschy
b9e76be8a6
using 'L->func' when possible
2017-11-01 16:20:48 -02:00
Roberto Ierusalimschy
c5482468fd
baby steps to remove 'CallInfo': keeping 'L->func' correct
2017-10-31 15:54:35 -02:00
Roberto Ierusalimschy
ad5dcdcf0f
detail: in 'isinstack', check against the whole stack instead
...
of against the stack frame
2017-10-31 15:14:02 -02:00
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