a9295a2b8e
typos in comments
Roberto Ierusalimschy
2017-12-30 18:46:18 -02:00
c6fedc92f8
new command 'print' (to print literal strings) in mini-language
Roberto Ierusalimschy
2017-12-29 13:59:37 -02:00
68af7cc81a
another try with table resize. (Old version was leaving some elements unanchored while allocating new memory)
Roberto Ierusalimschy
2017-12-29 13:58:23 -02:00
28323aeaa6
by-one error when filling missing arguments in a tail call
Roberto Ierusalimschy
2017-12-29 13:44:51 -02:00
cf7eff45f3
keep control of stack top in Lua functions concentrated in 'luaV_execute'
Roberto Ierusalimschy
2017-12-28 13:42:57 -02:00
8691612f01
when calling a hook, cannot decrease 'ci->top' (to preserve stack size if the stack is reallocated)
Roberto Ierusalimschy
2017-12-28 12:17:09 -02:00
f360e7778b
assert cannot use instruction after the last
Roberto Ierusalimschy
2017-12-22 14:43:59 -02:00
4676f6599e
new macros 'isOT'/'isIT' (plus exchanged parameters of OP_VARARG to make it similar to other 'isOT' instructions)
Roberto Ierusalimschy
2017-12-22 12:16:46 -02:00
1d5b885437
when running Lua code, there is no need to keep 'L->top' "correct"; set it only when needed.
Roberto Ierusalimschy
2017-12-20 12:58:05 -02:00
4dc0be950a
new macro 'isLuacode' (to distinguish regular Lua code from hooks, where C code can run inside a Lua function).
Roberto Ierusalimschy
2017-12-19 14:40:17 -02:00
3153a41e33
no need to save 'pc' in case of allocation errors (allocation errors do not call message handlers)
Roberto Ierusalimschy
2017-12-19 14:18:04 -02:00
d388c165ef
new opcodes 'FORLOOP1'/'FORPREP1' for "basic for" (integer variable with increment of 1)
Roberto Ierusalimschy
2017-12-18 15:53:50 -02:00
ab07005568
new auxiliary function 'luaK_isKint' + removal of 'luaK_needclose', which was not being used anywhere.
Roberto Ierusalimschy
2017-12-18 13:44:44 -02:00
7024f49c42
default now is compiling without compatibility options + smaller stack size in debug mode (clang uses still more stack space when debugging).
Roberto Ierusalimschy
2017-12-18 11:01:49 -02:00
2f6f6abeba
'rehash' -> 'tablerehash' (to avoid name colisions when compiling Lua as a single file)
Roberto Ierusalimschy
2017-12-18 11:00:57 -02:00
f8c1c1469a
some cleaning on signed opcode parameters
Roberto Ierusalimschy
2017-12-15 16:53:48 -02:00
4b6928e7f5
(1 << 31) with signed integer has undefined behavior in C
Roberto Ierusalimschy
2017-12-15 16:35:22 -02:00
b3f924bc69
'Proto->numparams' does not include vararg parameter (one less subtraction when calling functions...)
Roberto Ierusalimschy
2017-12-15 11:07:10 -02:00
e752d84ed8
bug: memory-allocation error when resizing a table can leave it in an inconsistent state.
Roberto Ierusalimschy
2017-12-13 16:35:03 -02:00
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.)
Roberto Ierusalimschy
2017-12-13 16:32:09 -02:00
36cf8f3a3c
Code should not change the stack level after the initialization of a string buffer.
Roberto Ierusalimschy
2017-12-13 10:51:42 -02:00
725c15a4ca
when shrinking stack, always shrinks the CI list. (Stack overflow is not corelated to CI overflow anymore.)
Roberto Ierusalimschy
2017-12-12 09:57:30 -02:00
b077b20206
back to reallocation when resizing the string table. (Not a good idea to explicitly allocate new memory when shrinking something.)
Roberto Ierusalimschy
2017-12-12 09:52:35 -02:00
7ad20af2cf
more freedom in handling memory-allocation errors (not all allocations automatically raise an error), which allows fixing a bug when resizing a table.
Roberto Ierusalimschy
2017-12-11 16:53:53 -02:00
bfb88e99e9
'luaD_growstack' cannot raise any errors when 'raiseerror' is false (+ some comments)
Roberto Ierusalimschy
2017-12-11 10:43:40 -02:00
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)
Roberto Ierusalimschy
2017-12-11 10:27:48 -02:00
e663a24ab0
more freedom in handling memory-allocation errors (not all allocations automatically raise an error), which allows fixing a bug when resizing a table.
Roberto Ierusalimschy
2017-12-08 15:28:25 -02:00
40f823ec90
new C instruction "rawcheckstack" (to test failing in 'lua_checkstack')
Roberto Ierusalimschy
2017-12-08 13:19:13 -02:00
7622373033
using explicit tests for allocation overflow whenever possible
Roberto Ierusalimschy
2017-12-07 16:59:52 -02:00
cc01d46247
new test function 'T.allocount' to restrict number of allocations before a memory-allocation error
Roberto Ierusalimschy
2017-12-07 16:51:39 -02:00
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
Roberto Ierusalimschy
2017-12-07 13:44:10 -02:00
49dfaf7447
avoid using one function for different tasks (malloc, free, etc.)
Roberto Ierusalimschy
2017-12-06 16:36:31 -02:00
348fa1ca56
bug: 'lua_pushcclosure' should not call the garbage collector when 'n' is zero.
Roberto Ierusalimschy
2017-12-06 16:20:28 -02:00
ae11e37e53
bug: 'lua_pushcclosure' should not call the GC when 'n' is zero
Roberto Ierusalimschy
2017-12-06 16:08:03 -02:00
c7ee7fe026
new opcodes OP_SHLI/OP_SHRI
Roberto Ierusalimschy
2017-12-04 15:41:30 -02:00
9d28b40152
rehashes string table always allocating a new array instead of reallocating old one. (Avoids problems if reallocation to a small size fails.)
Roberto Ierusalimschy
2017-12-01 14:40:29 -02:00
745eb41993
new opcodes OP_RETURN0/OP_RETURN1
Roberto Ierusalimschy
2017-11-29 14:57:36 -02:00
c766e4103d
'luaV_execute' gets call info as extra argument (it is always available on call sites)
Roberto Ierusalimschy
2017-11-29 11:02:17 -02:00
36aecd4548
order opcodes cannot use 'K' operands
Roberto Ierusalimschy
2017-11-28 13:26:15 -02:00
1a5e8c1014
conditional jumps unified in label "condjump' + new variable 'vra' to avoid excessive use of macro 's2v'
Roberto Ierusalimschy
2017-11-28 12:51:00 -02:00
ff5fe51044
using register 'k' for conditions in tests (we only need one bit there)
Roberto Ierusalimschy
2017-11-28 10:58:18 -02:00
dfd188ba12
detail (identation of switch)
Roberto Ierusalimschy
2017-11-28 09:19:07 -02:00
093c16b67b
new opcodes 'OP_LTI' and 'OP_LEI'
Roberto Ierusalimschy
2017-11-27 15:44:31 -02:00
599f1742c6
detail (typo in comments)
Roberto Ierusalimschy
2017-11-23 17:29:04 -02:00
73abfde2ef
small simplifications around 'luaT_callorderTM'
Roberto Ierusalimschy
2017-11-23 17:18:10 -02:00
194a4f9710
small simplifications in 'luaD_poscall'
Roberto Ierusalimschy
2017-11-23 16:29:41 -02:00
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)
Roberto Ierusalimschy
2017-11-23 14:41:16 -02:00
39f26b1480
more information from 'T.stacklevel'
Roberto Ierusalimschy
2017-11-23 13:38:42 -02:00
3c230cc825
using 'A' for register instead of 'B' in relational opcodes ('R(A)' is already created by default for all instructions.)
Roberto Ierusalimschy
2017-11-22 17:15:44 -02:00
41f2936d8f
new opcode 'OP_EQI' for equality with immediate numbers
Roberto Ierusalimschy
2017-11-22 16:41:20 -02:00
14c3aa12b5
more direct implementation for tail calls.
Roberto Ierusalimschy
2017-11-21 12:18:03 -02:00
f3ca52bfa9
in order comparison opcodes, fast track for floats too
Roberto Ierusalimschy
2017-11-20 10:57:39 -02:00
c47111bd4e
'io.read' accepts multiple formats in a single string argument
Roberto Ierusalimschy
2017-11-16 14:28:36 -02:00
4c0e36a46e
new instruction 'OP_EQK' (for equality with constants)
Roberto Ierusalimschy
2017-11-16 10:59:14 -02:00
5440b42f43
using 'trap' to stop 'luaV_execute' when necessary (tracing and to update its copy of 'base' when the stack is reallocated)
Roberto Ierusalimschy
2017-11-13 13:36:52 -02:00
7d4828cc9f
avoid accessing wrong union field
Roberto Ierusalimschy
2017-11-13 10:26:30 -02:00
32fef60743
detail ('Protect' defined as an expression)
Roberto Ierusalimschy
2017-11-08 17:01:02 -02:00
26679ea35b
new function 'luaV_flttointeger' to convert floats to integers (without string coercions) + string operands to bitwise operations handled by string metamethods
Roberto Ierusalimschy
2017-11-08 12:50:23 -02:00
c3e5946fb2
new format for JUMP instructions (to allow larger offsets)
Roberto Ierusalimschy
2017-11-07 15:20:42 -02:00
ad0704e40c
back to 'CallInfo' (no gains with its removal)
Roberto Ierusalimschy
2017-11-07 11:25:26 -02:00
5a3f26f855
fitting a StackValue structure into 32 bytes (for 64-bit machines)
Roberto Ierusalimschy
2017-11-06 15:34:06 -02:00
93fd67b793
no more 'CallInfo' structure
Roberto Ierusalimschy
2017-11-04 10:57:02 -02:00
6bb3e40a8d
'lua_Debug' not using 'CallInfo'
Roberto Ierusalimschy
2017-11-03 18:41:05 -02:00
7612f7735d
removing uses of 'CallInfo'
Roberto Ierusalimschy
2017-11-03 17:33:22 -02:00
472c560705
no more useful fields in CallInfo
Roberto Ierusalimschy
2017-11-03 15:22:54 -02:00
54eb35a8aa
more fields moved out of 'CallInfo'
Roberto Ierusalimschy
2017-11-03 10:12:30 -02:00
ba36180fd7
new API for 'lua_resume' + cleaning the uses of the 'extra' field in 'CallInfo'
Roberto Ierusalimschy
2017-11-02 09:28:56 -02:00
b9e76be8a6
using 'L->func' when possible
Roberto Ierusalimschy
2017-11-01 16:20:48 -02:00
f3b3d9b5c2
string constants (Kstr) must fit into 'B' register
Roberto Ierusalimschy
2017-10-02 19:50:57 -03:00
7f9a32ad85
new function 'printcode'
Roberto Ierusalimschy
2017-10-01 16:17:51 -03:00
bc1b0733b8
avoid the use of bit 'Bk' ('B' will lose this bit soon)
Roberto Ierusalimschy
2017-10-01 16:13:43 -03:00
722bdbe17d
no more 'getBMode'-'getCMode' (imprecise + we will need more space for op mode) + better control of op modes
Roberto Ierusalimschy
2017-09-28 13:53:29 -03:00