Roberto Ierusalimschy
b1379936cf
vararg back to '...' (but with another implementation)
new implementation should have zero overhead for non-vararg functions
7 years ago
Roberto Ierusalimschy
4e0de3a43c
details
7 years ago
Roberto Ierusalimschy
318a9a5859
new opcode 'PREPVARARG'
(avoids test for vararg function in all function calls)
7 years ago
Roberto Ierusalimschy
51280ef2ad
call hooks for Lua functions called by 'luaV_execute'
7 years ago
Roberto Ierusalimschy
dc0ab1e8ca
warnings in VS (implicit casts from ptrdiff_t to int)
7 years ago
Roberto Ierusalimschy
89110986d7
bug in tailcall of vararg functions
(when adjusting missing parameters)
7 years ago
Roberto Ierusalimschy
53979dfe0d
calling a vararg function needs to check GC
(because it creates a new table)
7 years ago
Roberto Ierusalimschy
ab0a851db4
'luaD_tryfuncTM' can ensure it does not change the stack
7 years ago
Roberto Ierusalimschy
28323aeaa6
by-one error when filling missing arguments in a tail call
7 years ago
Roberto Ierusalimschy
8691612f01
when calling a hook, cannot decrease 'ci->top' (to preserve stack
size if the stack is reallocated)
7 years ago
Roberto Ierusalimschy
1d5b885437
when running Lua code, there is no need to keep 'L->top' "correct";
set it only when needed.
7 years ago
Roberto Ierusalimschy
4dc0be950a
new macro 'isLuacode' (to distinguish regular Lua code from
hooks, where C code can run inside a Lua function).
7 years ago
Roberto Ierusalimschy
b3f924bc69
'Proto->numparams' does not include vararg parameter
(one less subtraction when calling functions...)
7 years ago
Roberto Ierusalimschy
725c15a4ca
when shrinking stack, always shrinks the CI list.
(Stack overflow is not corelated to CI overflow anymore.)
7 years ago
Roberto Ierusalimschy
bfb88e99e9
'luaD_growstack' cannot raise any errors when 'raiseerror' is
false (+ some comments)
7 years ago
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.
7 years ago
Roberto Ierusalimschy
e0bece77d6
detail
7 years ago
Roberto Ierusalimschy
c766e4103d
'luaV_execute' gets call info as extra argument (it is always
available on call sites)
7 years ago
Roberto Ierusalimschy
194a4f9710
small simplifications in 'luaD_poscall'
7 years ago
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)
7 years ago
Roberto Ierusalimschy
14c3aa12b5
more direct implementation for tail calls.
7 years ago
Roberto Ierusalimschy
5440b42f43
using 'trap' to stop 'luaV_execute' when necessary (tracing and
to update its copy of 'base' when the stack is reallocated)
7 years ago
Roberto Ierusalimschy
7d4828cc9f
avoid accessing wrong union field
7 years ago
Roberto Ierusalimschy
ad0704e40c
back to 'CallInfo' (no gains with its removal)
7 years ago
Roberto Ierusalimschy
93fd67b793
no more 'CallInfo' structure
7 years ago
Roberto Ierusalimschy
6bb3e40a8d
'lua_Debug' not using 'CallInfo'
7 years ago
Roberto Ierusalimschy
472c560705
no more useful fields in CallInfo
7 years ago
Roberto Ierusalimschy
54eb35a8aa
more fields moved out of 'CallInfo'
7 years ago
Roberto Ierusalimschy
ba36180fd7
new API for 'lua_resume' + cleaning the uses of the 'extra' field in
'CallInfo'
7 years ago
Roberto Ierusalimschy
b9e76be8a6
using 'L->func' when possible
7 years ago
Roberto Ierusalimschy
c5482468fd
baby steps to remove 'CallInfo': keeping 'L->func' correct
7 years ago
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)
7 years ago
Roberto Ierusalimschy
f96497397a
new type 'StackValue' for stack elements
(we may want to put extra info there in the future)
7 years ago
Roberto Ierusalimschy
c25380c28d
details (using proper version of 'setobj')
8 years ago
Roberto Ierusalimschy
6d95de83c6
no more field 'base' in CallInfo (base is always equal to 'func + 1',
with old/new vararg implementation)
8 years ago
Roberto Ierusalimschy
5c8770f896
back to old-style vararg system (with vararg table collecting extra
arguments)
8 years ago
Roberto Ierusalimschy
24f6e236a3
'moveresults' and 'luaD_poscall' moved up in the file
8 years ago
Roberto Ierusalimschy
8edbf57fb8
detail (ANSI C does not accept empty arguments to macros)
8 years ago
Roberto Ierusalimschy
7fe1a4cff3
cleaner and more correct code for 'luaD_shrinkstack' (the old
test "inuse <= LUAI_MAXSTACK" for stack overflow is not correct,
as the real maximum usable size is "LUAI_MAXSTACK - EXTRA_STACK")
8 years ago
Roberto Ierusalimschy
aeb4c6fff1
comments + removed unused variable
8 years ago
Roberto Ierusalimschy
e4a9e6fcca
do not eliminate varargs from functions that do not use varargs
(confuses the debug lib and gains very little in performance)
8 years ago
Roberto Ierusalimschy
9de2bb0d62
bug: When a coroutine tries to resume a non-suspended coroutine,
it coud do some mess (and break C assertions) before detecting the error.
Now it tests for those errors before anything else.
8 years ago
Roberto Ierusalimschy
a051b3323e
comments (about hooks vs signals)
9 years ago
Roberto Ierusalimschy
d103312661
details (typos in comments)
9 years ago
Roberto Ierusalimschy
9a5d6aedb7
trying to optimize a little 'luaD_poscall'
9 years ago
Roberto Ierusalimschy
e61ee8a036
in 'luaD_call', use two functions instead of one with fixed boolean
argument + stack error handling in 'luaD_call' moved to a separated
function
9 years ago
Roberto Ierusalimschy
8c1fb91802
macro 'incr_top' replaced by function 'luaD_inctop'. (It is not used
in critical time pathes, can save a few bytes without the macro)
9 years ago
Roberto Ierusalimschy
c5363a1b58
in 'luaD_precall', in vararg functions, complete missing parameters
only after moving them to final place (avoids checking the stack
again)
9 years ago
Roberto Ierusalimschy
ffd0d1232d
using more "conventional" loops in 'luaD_poscall' (probably a little
more efficient?)
9 years ago
Roberto Ierusalimschy
6707ce6349
function prepares vararg only if it really uses them (chunks
are always declared vararg but seldom uses them)
9 years ago