Roberto Ierusalimschy
0acd55898d
Added gcc option '-Wconversion'
No warnings for standard numerical types. Still pending alternative
numerical types.
3 months ago
Roberto Ierusalimschy
0593256707
'luaH_get' functions return tag of the result
Undoing previous commit. Returning TValue increases code size without
any visible gains. Returning the tag is a little simpler than returning
a special code (HOK/HNOTFOUND) and the tag is useful by itself in
some cases.
8 months ago
Roberto Ierusalimschy
ce6f5502c9
'luaH_get' functions return 'TValue'
Instead of receiving a parameter telling them where to put the result
of the query, these functions return the TValue directly. (That is,
they return a structure.)
8 months ago
Roberto Ierusalimschy
d862da6d04
Optimizations for 'lua_rawgeti' and 'lua_rawseti'
'lua_rawgeti' now uses "fast track"; 'lua_rawseti' still calls
'luaH_setint', but the latter was recoded to avoid extra overhead
when writing to the array part after 'alimit'.
10 months ago
Roberto Ierusalimschy
08a077d673
Full implementation of new representation for arrays
1 year ago
Roberto Ierusalimschy
43c8e5bded
Full abstraction for representation of array values
1 year ago
Roberto Ierusalimschy
819bd51d87
Some cleaning in the new table API
2 years ago
Roberto Ierusalimschy
f8d30826dd
New table API for 'set' functions
2 years ago
Roberto Ierusalimschy
351ccd7332
Towards a new implementation of arrays
The array part of a table wastes too much space, due to padding.
To avoid that, we need to store values in the array as something
different from a TValue. Therefore, the API for table access
should not assume that any value in a table lives in a *TValue.
This commit is the first step to remove that assumption: functions
luaH_get*, instead of returning a *TValue where the value lives,
receive a *TValue where to put the value being accessed.
(We still have to change the luaH_set* functions.)
2 years ago
Roberto Ierusalimschy
26be27459b
Negation in constant folding of '>>' may overflow
2 years ago
Roberto Ierusalimschy
59c88f846d
Broadening the use of branch hints
More uses of macros 'likely'/'unlikely' (renamed to
'l_likely'/'l_unlikely'), both in range (extended to the
libraries) and in scope (extended to hooks, stack growth).
4 years ago
Roberto Ierusalimschy
0ddc0f47bd
Several details about 5.4.0 rc1
Corrected several small details: added 'const', adjusts in tabs x
spaces, removed unused #includes and #defines, misspellings, etc.
5 years ago
Roberto Ierusalimschy
d30569c064
Using an enumeration for float->integer coercion modes
5 years ago
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