Commit Graph

4826 Commits

Author SHA1 Message Date
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