Roberto Ierusalimschy
5e76a4fd31
New macros for arithmetic/bitwise operations in 'luaV_execute'
The repetitive code of the arithmetic and bitwise operators in
the main iterpreter loop was moved to appropriate macros.
(As a detail, the function 'luaV_div' was renamed 'luaV_idiv',
as it does an "integer division" (floor division).
6 years ago
Roberto Ierusalimschy
5382a22e0e
Corrections in the implementation of '%' for floats.
The multiplication (m*b) used to test whether 'm' is non-zero and
'm' and 'b' have different signs can underflow for very small numbers,
giving a wrong result. The use of explicit comparisons solves this
problem. This commit also adds several new tests for '%' (both for
floats and for integers) to exercise more corner cases, such as
very large and very small values.
6 years ago
Roberto Ierusalimschy
f99509581e
Removed extra information from RCS keyword strings
Version numbers and dates (mostly wrong) from RCS keyword strings
removed from all source files; only the file name are kept.
6 years ago
Roberto Ierusalimschy
6e600695f8
field 'sizearray' in struct 'Table' changed to 'alimit', which can
be used as a hint for '#t'
6 years ago
Roberto Ierusalimschy
9243c414d9
first version of empty entries in tables
(so that, in the future, tables can contain regular nil entries)
7 years ago
Roberto Ierusalimschy
465b474899
small reorganization of 'luaV_flttointeger'/'luaV_tointeger'
7 years ago
Roberto Ierusalimschy
1afd5a152d
more generic way to handle 'gclist'
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
26679ea35b
new function 'luaV_flttointeger' to convert floats to integers (without
string coercions) + string operands to bitwise operations handled
by string metamethods
7 years ago
Roberto Ierusalimschy
4dff277255
coercion string->number in arithmetic operations moved to string
library
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
d13a3fb070
detail
(removed empty spaces at the end of lines)
8 years ago
Roberto Ierusalimschy
dad85e4131
macro 'setobj2t' may not be an expression
8 years ago
Roberto Ierusalimschy
7647d5d13d
revamp of fast track for table access (table set uses the same
macros as table get + new macro for integer keys)
8 years ago
Roberto Ierusalimschy
2a235312f0
detail (removing spaces at end of lines)
8 years ago
Roberto Ierusalimschy
1a44e82200
'luaV_fastget' only treats the real fast case (table with a non-nil
value at given key, so that it does not need to check metamethods)
9 years ago
Roberto Ierusalimschy
b91bc93fd3
'setobj2t' incorporated into 'luaV_fastset' + 'invalidateTMcache'
is not needed in the fast track (as it does not create new
entries)
9 years ago
Roberto Ierusalimschy
8f25d08637
'invalidateTMcache' not needed in all 'settable' uses
9 years ago
Roberto Ierusalimschy
3b795541c4
fast track for 'settable'
9 years ago
Roberto Ierusalimschy
e247c3ada3
implementation of fast track for gettable operations
9 years ago
Roberto Ierusalimschy
81245b1ad5
'numisinteger' (for table keys) replaced by 'luaV_tointeger' (old
'tointeger_aux'), which can do the same job.
10 years ago
Roberto Ierusalimschy
f5c690b684
details in comments
10 years ago
Roberto Ierusalimschy
d861706620
new macro 'cvt2num' to better control whether strings are convertible
to numbers
10 years ago
Roberto Ierusalimschy
34ac039fb8
new macro 'cvt2str' to better control whether numbers are convertible
to strings
10 years ago
Roberto Ierusalimschy
c98f195eb9
function 'luaV_numtointeger' changed to a global macro
'lua_numtointeger' (tricky, small, and useful in several places)
11 years ago
Roberto Ierusalimschy
27d9219cf3
no more integer exponentiation
11 years ago
Roberto Ierusalimschy
e98ba351ce
n^-m gives float result (instead of error)
11 years ago
Roberto Ierusalimschy
037a70dfea
cast_u2s/cast_s2u renamed l_castS2U/l_castU2S to be configurable from
outside (mostly for testing)
11 years ago
Roberto Ierusalimschy
8f961da3db
macros cast_integer/cast_unsigned replaced by cast_u2s/cast_s2u, that
should be used only between lua_Integer and lua_Unsigned
11 years ago
Roberto Ierusalimschy
ea69f17d98
macro 'tostring' is used only by 'luaV_concat'
11 years ago
Roberto Ierusalimschy
1ea2d20f74
first implementation of '<<', '>>', and '~' (bitwise not)
11 years ago
Roberto Ierusalimschy
a8f8c7fd80
integer exponentiation with negative exponent is invalid
11 years ago
Roberto Ierusalimschy
6920a7f2e3
new macro 'intop' (to perform integer arithmetic on unsigned types)
12 years ago
Roberto Ierusalimschy
88bf2f83c0
new function 'tointeger' + 'luaV_arith' replaced by 'luaT_trybinTM'
12 years ago
Roberto Ierusalimschy
4abe99dc34
new interface for 'tonumber'
12 years ago
Roberto Ierusalimschy
e381c582de
integer handling for order comparisons, power, and modulo operations
12 years ago
Roberto Ierusalimschy
07f861385e
first steps in the support of integers: basic representation + table indexing + basic API ops (tointeger/pushinteger) + equality + a few extra stuff
12 years ago
Roberto Ierusalimschy
0730a56d38
detail
12 years ago
Roberto Ierusalimschy
821bd7025e
more uniform names for 'equalobj'-related functions
14 years ago
Roberto Ierusalimschy
9b7dddad7d
no need for two different implementations for equality (one raw and
one with metamethods)
14 years ago
Roberto Ierusalimschy
5286650894
new macro 'ttisequal'
14 years ago
Roberto Ierusalimschy
c3a6f3fa1c
'lua_objlen' replaced by 'lua_rawlen', 'lua_len', and 'luaL_len'
15 years ago
Roberto Ierusalimschy
b4c1824824
'luaV_arith' must be marked 'LUAI_FUNC' (as all non-static functions)
15 years ago
Roberto Ierusalimschy
155dd01163
avoid using 'ttype' when there is an explicit test
15 years ago
Roberto Ierusalimschy
59a59fafc6
exports luaV_arith to be used by lua_arith
16 years ago
Roberto Ierusalimschy
77fd93188e
'lessequal' renamed 'luaV_lessequal' and exported to be used by
'lua_compare'
16 years ago
Roberto Ierusalimschy
57f8414de1
small bug in 'luaV_concat' (L->top was left incorrect in some cases)
16 years ago
Roberto Ierusalimschy
ba484b9eb1
yielding across lua_call (first version)
16 years ago
Roberto Ierusalimschy
f94cd2201c
better control of call status through CallInfo
16 years ago
Roberto Ierusalimschy
08f902cf49
better documentation for auxiliary functions (that should be called only
through specific macros).
18 years ago