1
0
mirror of https://github.com/lua/lua synced 2026-06-08 15:34:49 +00:00

Compare commits

..

1071 Commits

Author SHA1 Message Date
Roberto Ierusalimschy c8e96d6e91 logic for checking mode for 'fopen' moved to macro 'lua_checkmode' 2013-03-21 10:57:27 -03:00
Roberto Ierusalimschy af8efcc762 detail (avoid unnecessary "unconst" in cast) 2013-03-21 10:54:57 -03:00
Roberto Ierusalimschy 3f6f78ea0b detail (error message) 2013-03-20 16:40:07 -03:00
Roberto Ierusalimschy e3a7104b40 detail (avoiding warnings) 2013-03-19 10:19:12 -03:00
Roberto Ierusalimschy 76492b4bb2 macro 'lua_checkmode' + typos in comments 2013-03-16 18:10:18 -03:00
Roberto Ierusalimschy 75250a237c typos in comments 2013-03-16 18:10:18 -03:00
Roberto Ierusalimschy 437a49be5e cast to avoid warnings 2013-03-15 15:33:36 -03:00
Roberto Ierusalimschy 4f0c716c8e added two more commented warning options (just to know about them) 2013-03-15 11:00:08 -03:00
Roberto Ierusalimschy 70b0ee6310 export 'lua_ident' to avoid it being removed by C++ linker 2013-03-15 10:04:22 -03:00
Roberto Ierusalimschy 8830901a9c second parameter to 'ldexp' is an integer 2013-03-07 15:21:32 -03:00
Roberto Ierusalimschy 15a3738b49 no need to handle 0 as a special case in 'table.remove' 2013-03-07 15:17:24 -03:00
Roberto Ierusalimschy a83ed55f1e added 'return' (when possible) to calls to error functions 2013-02-21 10:44:53 -03:00
Roberto Ierusalimschy b559aed2d3 'l_tg' was renamed to 'l_mathop' and this use was not corrected at
the time
2013-02-20 11:08:56 -03:00
Roberto Ierusalimschy d0c038da07 typo in comment 2013-02-20 11:08:21 -03:00
Roberto Ierusalimschy db424053e8 new release number + copyright year 2013-02-19 15:39:04 -03:00
Roberto Ierusalimschy ad56721948 details (5.2 corrected to 5.2.0) 2013-02-07 13:57:47 -02:00
Roberto Ierusalimschy f4e762f688 better error checking for 'table.insert' and 'table.remove' 2013-02-06 16:29:03 -02:00
Roberto Ierusalimschy 1ce57628b2 comments 2013-02-06 11:37:39 -02:00
Roberto Ierusalimschy 181a837cac small improvement in the support of 'float' as lua_Number 2013-01-29 14:00:40 -02:00
Roberto Ierusalimschy 0730a56d38 detail 2013-01-08 12:06:55 -02:00
Roberto Ierusalimschy eecc1491f3 added some comments 2012-12-05 17:57:00 -02:00
Roberto Ierusalimschy 7ea68d84c4 added comment 2012-12-05 17:49:55 -02:00
Roberto Ierusalimschy 0e9167bc72 missing brackets in 'if' body (no bug, only 'luaC_checkfinalizer' is
called to do nothing)
2012-12-05 17:09:23 -02:00
Roberto Ierusalimschy 65e31fb179 Bug: load/loadfile returns wrong result when given an environment
for a binary chunk with no upvalues
2012-12-03 18:18:02 -02:00
Roberto Ierusalimschy f993771c70 avoids warning with 'clang' + comment explaining macro 2012-11-14 15:21:34 -02:00
Roberto Ierusalimschy 52f9ccd298 removed unreacheable 'lua_unlock' 2012-11-04 18:08:17 -02:00
Roberto Ierusalimschy a799ed5af9 more precise control for GC pause (based on threshold) 2012-10-19 16:00:33 -03:00
Roberto Ierusalimschy 4082c77ff2 error message for 'bad self' includes original 'extramsg' 2012-10-19 12:55:01 -03:00
Roberto Ierusalimschy bc84180d12 error message in 'os.rename' does not include file name, because error
may be caused both by 'fromname' or 'toname'
2012-10-19 12:54:02 -03:00
Roberto Ierusalimschy ad5da6ba14 API functions get acceptable indices except when not possible (when
they modify the value at that index) + new macro 'ispseudo' +
specific test 'api_checkstackindex'
2012-10-19 12:52:46 -03:00
Roberto Ierusalimschy 86b39206d9 open upvalues cannot be old if thread is not old; when thread is old,
their list is not traversed anymore, and therefore can contain dead
elements.
2012-10-03 09:36:46 -03:00
Roberto Ierusalimschy fdae4b9453 removed commented-out line (for debugging) 2012-10-03 09:36:17 -03:00
Roberto Ierusalimschy 84b6581287 cast to avoid warning in some compilers (size_t x unsigned int) 2012-10-02 14:41:50 -03:00
Roberto Ierusalimschy c6b6024a9d cast in 'luai_makeseed' now casts to needed type 2012-10-02 14:40:53 -03:00
Roberto Ierusalimschy d58ce8106e macro 'lua_number2unsigned' also needs proper definition if
lua_Number is float
2012-10-02 14:32:44 -03:00
Roberto Ierusalimschy 31f7d553e4 LUA_CORE condition removed from definition of some 'tricks' (as it
controlled only a few other defines) + MS_ASMTRICK renamed to
LUA_MSASMTRICK
2012-10-01 11:14:45 -03:00
Roberto Ierusalimschy adaba04059 'pcall' may not restore previous error function when
inside coroutines + Check for garbage collector in function calls
does not cover all paths
2012-10-01 11:05:31 -03:00
Roberto Ierusalimschy b157f3546e BUG: 'pcall' may not restore previous error function when
inside coroutines
2012-10-01 11:05:04 -03:00
Roberto Ierusalimschy ab7086e209 pops the string from 'get_prompt' only after using it 2012-09-29 17:07:06 -03:00
Roberto Ierusalimschy 7a3de1aba3 typo in comment 2012-09-24 19:57:26 -03:00
Roberto Ierusalimschy 8287a0db55 detail 2012-09-11 16:37:16 -03:00
Roberto Ierusalimschy cf160abcf9 no more macro 'changenvalue' 2012-09-11 15:21:44 -03:00
Roberto Ierusalimschy ae1d318822 small bug: generational mode is always in 'propagate' mode only
outside the collector: during collection of course it must go to
other modes.
2012-09-11 09:53:08 -03:00
Roberto Ierusalimschy 2038073975 more regularity for field 'fix' 2012-09-11 09:42:14 -03:00
Roberto Ierusalimschy 2dc91ca5ee checks garbage collector every time it calls a function (as the
stack can grow and so allocates more memory)
2012-08-28 15:30:45 -03:00
Roberto Ierusalimschy a3e1c40d6d remove of unecessary luaD_checkstack. (In some cases, C should
ensure stack space; in others, Lua can use the extra slots for
temporary values.)
2012-08-16 14:34:28 -03:00
Roberto Ierusalimschy c1a2a646c8 details (no need to use lua_pushfstring for plain strings) 2012-08-16 14:32:20 -03:00
Roberto Ierusalimschy 53480f1163 details (remove of some extra spaces) 2012-08-14 15:12:34 -03:00
Roberto Ierusalimschy 233eac4d3a detail (avoid being picky about conversion from 'unsigned char'
to 'int')
2012-08-06 10:36:34 -03:00
Roberto Ierusalimschy 6625cbecd1 Bug: Some patterns can overflow the C stack, due to recursion
(Took the opportunity to refactor function 'match')
2012-07-31 14:48:42 -03:00
Roberto Ierusalimschy 4ac55997ec typo 2012-07-13 11:54:14 -03:00
Roberto Ierusalimschy 763f84c84c Some patterns can overflow the C stack, due to recursion. 2012-07-13 11:53:38 -03:00
Roberto Ierusalimschy e4f609d0ee collector in generational mode must be in 'propagate' state when
not running a collection
2012-07-04 12:52:38 -03:00
Roberto Ierusalimschy 5ac56a94dd collector in generational mode should never be in 'pause' state 2012-07-02 12:38:36 -03:00
Roberto Ierusalimschy 4fc15bbfb7 major collections in generational mode are triggered by comparison with
the memory estimate from last major collection
2012-07-02 10:40:05 -03:00
Roberto Ierusalimschy f7ec36ab16 comment 2012-07-02 10:37:04 -03:00
Roberto Ierusalimschy b926472312 change in error message 2012-06-29 16:23:33 -03:00
Roberto Ierusalimschy 78d9865900 bugs: Internal Lua values may escape through the debug API +
Problems when yielding from debug hooks
2012-06-11 14:49:37 -03:00
Roberto Ierusalimschy cc2a60ecb7 bugs in yields inside debug hooks 2012-06-08 12:14:04 -03:00
Roberto Ierusalimschy 43bfb60ac8 new auxiliary function 'luaI_printinst' (to print a single instruction) 2012-06-07 15:52:47 -03:00
Roberto Ierusalimschy c510d94549 includes counts from 'sweeptolive' in cost of atomic step 2012-05-31 18:28:59 -03:00
Roberto Ierusalimschy 4dd0622d0c bug in luaL_getsubtable (calling lua_absindex not with original stack) 2012-05-31 17:28:45 -03:00
Roberto Ierusalimschy ab2c3d5cde small bug in error handling of finalizers (cannot call lua_tostring
inside the core) + small bug in luaC_checkfinalizer (when avoiding
remove object being sweeped from sweep list) + small changes in GC
pace control (for the atomic part)
2012-05-31 17:26:14 -03:00
Roberto Ierusalimschy 01e5f358bd small improvement in lua_checkmemory (only allow dead objects in
part of the sweep list not yet sweeped)
2012-05-31 17:25:42 -03:00
Roberto Ierusalimschy 69c775de21 update of 'lua_checkmemory' 2012-05-30 13:40:29 -03:00
Roberto Ierusalimschy 6fcdfc6d4f bug: object being moved to 'finobj' list might not be sweeped by
the collector
2012-05-30 13:01:10 -03:00
Roberto Ierusalimschy b77a90681e typos in comments 2012-05-30 09:33:44 -03:00
Roberto Ierusalimschy 6efffb9acd only count in 'atomic' objects marked for the first time 2012-05-29 14:52:17 -03:00
Roberto Ierusalimschy 51e8f08e60 more efficient way to apply 'stepmul' + some changes in GC parameters 2012-05-28 17:41:00 -03:00
Roberto Ierusalimschy 5adb5a4812 definition for 'MAX_LMEM' 2012-05-28 17:32:28 -03:00
Roberto Ierusalimschy e29f3a5751 definition of 'GCSTEPSIZE' moved to header file + small changes 2012-05-23 12:43:14 -03:00
Roberto Ierusalimschy 21ed264a38 compensate for 'GCSTEPSIZE' in GC steps 2012-05-23 12:42:27 -03:00
Roberto Ierusalimschy e131eb0d9a removed debug code 2012-05-23 12:41:53 -03:00
Roberto Ierusalimschy 054c20cd5b spaces -> tabs in #defines 2012-05-23 12:37:09 -03:00
Roberto Ierusalimschy 8e7149f496 detail ('char' should be 'const char') 2012-05-22 15:38:56 -03:00
Roberto Ierusalimschy 086da10dac merge of fields 'lastmajormem' (used in gen. mode) and 'estimate'
(used in inc. mode)
2012-05-22 14:50:39 -03:00
Roberto Ierusalimschy b36b4b521f try to avoid sweeping new objects created with new white (and
therefore not collectable in the current cycle)
2012-05-22 14:32:25 -03:00
Roberto Ierusalimschy 398811a313 simpler macro 'luaC_condGC' + better 'step' in 'lua_gc' +
micro bug in 'luaC_checkfinalizer' (current sweep object could be
removed from 'allgc' list)
2012-05-21 10:18:10 -03:00
Roberto Ierusalimschy 2a66b34f72 revamp of the GC pace control; more like 5.1: any X Kbytes allocated
makes the GC handle f(X) Kbytes of objects
2012-05-20 17:36:44 -03:00
Roberto Ierusalimschy 8d0e1ed52f extend optimization of 'if a then break end' for the case
'if a then break; end'
2012-05-20 11:51:23 -03:00
Roberto Ierusalimschy 3ac595da8a allow "long double" precision for PI constant if needed 2012-05-18 14:47:53 -03:00
Roberto Ierusalimschy ea980fdeef removed 'stringmark' trick 2012-05-14 14:52:56 -03:00
Roberto Ierusalimschy 5654763797 macro 'checkGC' takes care of setting 'top' to limit stack live values 2012-05-14 14:50:49 -03:00
Roberto Ierusalimschy edfa9e007d details (header comments) 2012-05-14 10:34:18 -03:00
Roberto Ierusalimschy 31829ad177 test for whether collector is running moved from function to
macro 'luaC_condGC'.
2012-05-11 16:22:33 -03:00
Roberto Ierusalimschy c2361e0b61 definition for 'LUAI_MAXSHORTLEN' moved to luaconf.h (too important) 2012-05-11 11:14:42 -03:00
Roberto Ierusalimschy 77cbd817d1 better(?) handling of '#define's for IEEE-related tricks + avoid using
IEEE trick for 64-bit integer types (lua_Integer on 64-bit machines)
2012-05-11 11:10:50 -03:00
Roberto Ierusalimschy 4ec7d6de95 bug: wrong handling of 'nCcalls' in coroutines 2012-05-11 11:10:28 -03:00
Roberto Ierusalimschy f6a12948ca useless parameter in macro 'luai_makeseed' 2012-05-11 11:06:07 -03:00
Roberto Ierusalimschy 3cadc37f47 no more 'Proto' objects on the stack. Protos are anchored on outer
Protos or on a Closure, which must be created before the Proto.
2012-05-08 10:53:33 -03:00
Roberto Ierusalimschy bb1146dc39 wrong error message when 'coroutine.create' or 'coroutine.wrap' are
called with no arguments (new thread is assumed to be the missing
argument).
2012-04-27 15:59:04 -03:00
Roberto Ierusalimschy fc24a3a6c4 small bug: a reader function should not modify the Lua stack 2012-04-27 11:13:19 -03:00
Roberto Ierusalimschy a94ce68e0a bug: wrong handling of 'nCcalls' in coroutines 2012-04-26 17:41:18 -03:00
Roberto Ierusalimschy ec22fc963a detail (separate code to create 'searchers' table into a new function) 2012-04-26 16:38:52 -03:00
Roberto Ierusalimschy c54f5f64c9 primaryexp -> suffixedexp; prefixexp -> primaryexp + more 'syntactical'
way to distinguish between function calls and assignments
2012-04-20 16:20:05 -03:00
Roberto Ierusalimschy 4cca1a436d details (using lua_setglobal/lua_getglobal instead of explicit
use of the global table)
2012-04-20 14:05:17 -03:00
Roberto Ierusalimschy 8df0198178 release 5.2.1 2012-04-20 10:18:26 -03:00
Roberto Ierusalimschy 048be9cf27 different scheme to check arguments to '%d', '%x', etc. Old scheme
did not work well when lua_Number is an integer.
2012-04-20 10:16:48 -03:00
Roberto Ierusalimschy 1485ea2ee7 Finalizers may call functions from a dynamic library after
the library has been unloaded
2012-04-12 13:25:25 -03:00
Roberto Ierusalimschy b10dbe5c72 bug: C libraries must be unloaded after all other finalizers have run,
because a finalizer may use a C function from a C library
2012-04-11 13:35:32 -03:00
Roberto Ierusalimschy 462375ba47 'if' to avoid empty 'memcpy' (may be expensive) 2012-04-03 16:06:19 -03:00
Roberto Ierusalimschy cfbe2333a4 string hash may not use all bytes (but this is configurable now) +
small other changes
2012-03-28 15:28:25 -03:00
Roberto Ierusalimschy afc3fcf952 definition for 'LUA_MAXSHORTLEN' moved to 'lstring.c' (used only there) 2012-03-28 15:27:25 -03:00
Roberto Ierusalimschy 99bd1a000f error function can be 'l_noret' 2012-03-19 19:58:09 -03:00
Roberto Ierusalimschy 3e66d3b4be cleaner code (avoids loop with empty body) 2012-03-19 19:57:14 -03:00
Roberto Ierusalimschy 29a28693e5 'luaL_checkversion' called by 'luaL_setfuncs' 2012-03-18 13:52:49 -03:00
Roberto Ierusalimschy 678c1255c9 random seed used in the hash of all strings to avoid intentional
collisions
2012-02-01 19:57:15 -02:00
Roberto Ierusalimschy a4b96ce9a3 first implementation of long strings 2012-01-25 19:05:40 -02:00
Roberto Ierusalimschy 291f564485 field 'reserved' -> 'extra' (may be used for other purposes too) 2012-01-23 21:05:51 -02:00
Roberto Ierusalimschy 9f1a8dbdd3 'eqstr' -> 'luaS_eqstr' 2012-01-23 21:05:18 -02:00
Roberto Ierusalimschy d19f1da6ef new macro 'isreserved' + 'eqstr' -> 'luaS_eqstr' (may be a function) 2012-01-23 21:04:07 -02:00
Roberto Ierusalimschy f88806a1fb "default: lua_assert(0)" in switches helps debugging + uses
non-variant types in binary files
2012-01-23 21:02:10 -02:00
Roberto Ierusalimschy fb6eee2805 Lua never uses Ã'assert' (it is always 'lua_assert') 2012-01-23 20:59:02 -02:00
Roberto Ierusalimschy 0010ec68b1 documentation comment (small correction about strings being
gray)
2012-01-23 18:29:12 -02:00
Roberto Ierusalimschy 28f8ed9113 new macro 'checktype' 2012-01-20 20:47:11 -02:00
Roberto Ierusalimschy fd22ccd6d0 object tag keeps variant bits too -> no need for 'isC' field in
Closures + more strick typing for closure variants
2012-01-20 20:05:50 -02:00
Roberto Ierusalimschy 76eab106df bug: Lexical gets confused with some combination of arithmetic
operators and hexadecimal numbers
2012-01-20 16:35:36 -02:00
Roberto Ierusalimschy 81ed85ecfb BUG: memory hoarding when creating Lua hooks for coroutines
BUG: Lexical gets confused with some combination of arithmetic
operators and hexadecimal numbers
2012-01-20 16:32:13 -02:00
Roberto Ierusalimschy 7dcc02b165 BUG: coroutine hooks were not collected together with coroutine 2012-01-19 18:14:44 -02:00
Roberto Ierusalimschy e2fc2ce8df new way to handle -E option (write a mark in the registry to avoid
reading environment variables)
2011-12-12 14:34:03 -02:00
Roberto Ierusalimschy a241b6cb3c removed redundant definition for FILEHANDLE 2011-12-08 10:11:37 -02:00
Roberto Ierusalimschy f0d143f30f avoid a few warnings (casts) 2011-12-07 16:03:47 -02:00
Roberto Ierusalimschy c82087b8dd cast from 'bool' to 'int' (for C++) 2011-12-07 12:43:55 -02:00
Roberto Ierusalimschy 138be5b843 no more explicit support for 'luaall_c': unifying file can do
the work
2011-12-06 14:58:36 -02:00
Roberto Ierusalimschy e320b5b672 small bug: format '%d' for lua_Number argument 2011-12-06 14:33:55 -02:00
Roberto Ierusalimschy ca9c405fef some compilers (e.g., gcc C++) do not accept NULL as a pointer in
that context
2011-12-02 11:26:54 -02:00
Roberto Ierusalimschy e2feb886d6 macro 'luaL_getmetatable' seems more appropriate when getting
metatables in registry
2011-12-02 11:25:57 -02:00
Roberto Ierusalimschy 5999e14ad9 old error messages may be misleading 2011-12-02 11:23:56 -02:00
Roberto Ierusalimschy 01747f2c24 error message: "tag method" -> "metamethod" 2011-12-02 11:18:41 -02:00
Roberto Ierusalimschy 7377fbdebc function prototype did not match one in .h 2011-11-30 17:30:16 -02:00
Roberto Ierusalimschy f1d2ac3a98 allow non-integer arguments to integer formats (%d, %x, etc.),
but check range
2011-11-30 16:24:56 -02:00
Roberto Ierusalimschy c5da4f4cd0 unused variable removed 2011-11-30 11:03:24 -02:00
Roberto Ierusalimschy 7bcb2462e4 comments 2011-11-30 10:58:57 -02:00
Roberto Ierusalimschy 0bd99b327b avoid "unreachable" 'break' 2011-11-30 10:44:26 -02:00
Roberto Ierusalimschy 6d8b672094 more uses of 'l_noret' 2011-11-30 10:43:51 -02:00
Roberto Ierusalimschy e21b26a964 avoid 'return' "to avoid warnings" 2011-11-30 10:42:49 -02:00
Roberto Ierusalimschy 0f388193b3 'lUA' -> 'LUA' 2011-11-30 10:35:05 -02:00
Roberto Ierusalimschy 7948b8568e when available, use '*_r' versions of 'gmtime' and 'localtime' 2011-11-29 15:15:42 -02:00
Roberto Ierusalimschy 61b1d9a466 another try to avoid warnings about unreachable 'return' after 'exit' 2011-11-29 13:55:51 -02:00
Roberto Ierusalimschy 3617e04e97 'lua_load' has an extra argument 'mode' 2011-11-29 13:55:08 -02:00
Roberto Ierusalimschy 8c62bde36f comment 2011-11-29 13:54:38 -02:00
Roberto Ierusalimschy 51650eac78 small change to avoid warnings of non-specified order of access
to volatile fields
2011-11-29 13:39:48 -02:00
Roberto Ierusalimschy aea68e5c54 explicit option RTLD_LOCAL instead of 0 (Posix does not fix
a default for dlopen)
2011-11-28 15:27:51 -02:00
Roberto Ierusalimschy ece042fef0 'table.pack' does not return 'n' (may be confusing when
using table.pack as last argument in a call)
2011-11-28 15:26:30 -02:00
Roberto Ierusalimschy 217b65e6d9 avoid some warnings about converting 32-bit shifts into 64-bit results 2011-11-28 15:25:48 -02:00
Roberto Ierusalimschy 8119374e74 avoid warnings of unreacheable 'break's 2011-11-28 15:25:16 -02:00
Roberto Ierusalimschy 3a997eefb5 MS_ASMTRICK is only valid on MS compilers (not any Windows compiler) 2011-11-25 10:52:27 -02:00
Roberto Ierusalimschy 5184ff2096 'LUA_DL_DLL' is not yet defined before the inclusion of 'lua.h' 2011-11-25 10:52:03 -02:00
Roberto Ierusalimschy b0cbe77816 '_fseeki64' and family not available in all Windows platforms 2011-11-25 10:50:03 -02:00
Roberto Ierusalimschy 6e899850b9 details 2011-11-24 11:25:41 -02:00
Roberto Ierusalimschy fded7bef19 options for 'collectgarbage' renamed: "inc" -> "incremental";
"gen" -> "generational"
2011-11-23 15:29:04 -02:00
Roberto Ierusalimschy b5d7255034 small changes to avoid some warnings 2011-11-16 16:51:36 -02:00
Roberto Ierusalimschy 6cce5c0601 new function 'luaL_loadfilex' 2011-11-14 15:10:24 -02:00
Roberto Ierusalimschy eb70f58279 'luaIO_Stream' -> 'luaL_Stream' 2011-11-14 14:55:35 -02:00
Roberto Ierusalimschy ef900f224c strutcture for file handles exported in 'lauxlib.h' 2011-11-11 17:59:17 -02:00
Roberto Ierusalimschy 3105febf9a using Lua buffers to build error messages 2011-11-10 09:42:58 -02:00
Roberto Ierusalimschy 7133e20c94 make treatment of 'pcall' and 'xpcall' more similar 2011-11-09 17:38:00 -02:00
Roberto Ierusalimschy 888d39ea75 refactoring of common parts of 'pcall' and 'xpcall' + avoids
stack errors on these functions (return error code instead)
2011-11-09 17:28:27 -02:00
Roberto Ierusalimschy eef22fa4ce create error messages with a single concat, to avoid problems with
creating strings piecemeal
2011-11-09 17:11:20 -02:00
Roberto Ierusalimschy eda87f1156 in 'luaL_checkstack', include extra stack space in test to allow
correct execution of error routines, if necessary
2011-11-09 17:08:55 -02:00
Roberto Ierusalimschy e0e406ead3 extra argument to instruction 'checkstack' (in 'testC') 2011-11-09 17:08:07 -02:00
Roberto Ierusalimschy 30cea671a7 configurable 'directory separator' in 'package.searchpath' 2011-11-09 13:18:04 -02:00
Roberto Ierusalimschy a716ae1f50 avoids including 'stdio.h' everywhere (because of definitions for
luai_writestring/luai_writeline)
2011-11-09 12:47:14 -02:00
Roberto Ierusalimschy ea382b0be1 small bug: error message in 'io.lines' is not the error number 2011-11-09 12:10:43 -02:00
Roberto Ierusalimschy 6d8d282e0f avoid calling "extra value" as if it were a function option 2011-11-06 11:59:12 -02:00
Roberto Ierusalimschy 00c8a17a2d by default, do not use Windows' goodies in Windows CE build 2011-11-05 13:29:05 -02:00
Roberto Ierusalimschy 166ce15512 cannot apply macro 'getstr' over NULL 2011-10-31 15:48:51 -02:00
Roberto Ierusalimschy 87cf2bf711 extra comments about what fields are optional debug information 2011-10-31 15:48:22 -02:00
Roberto Ierusalimschy fd8a849621 detail (avoid applying macro 'getstr' with a function-call argument) 2011-10-31 15:46:04 -02:00
Roberto Ierusalimschy 5a568a3b01 detail (comment) 2011-10-25 10:01:20 -02:00
Roberto Ierusalimschy 475e6c5352 'lua_setglobal/lua_getglobal' implemented as functions to avoid
problems with stack indices
(e.g., lua_getglobal(L, lua_tostring(L, -1)) )
2011-10-24 14:53:05 -02:00
Roberto Ierusalimschy af00a0772c new functions lua_rawsetp/lua_rawgetp 2011-10-24 12:54:05 -02:00
Roberto Ierusalimschy 6819c2a98a silly bug in 5.2 beta: assignment conflict code did not test to check
whether variable was a table element
2011-10-24 12:51:44 -02:00
Roberto Ierusalimschy 1dd8af67b6 BUG: parser may collect a prototype while building it. 2011-10-21 17:34:23 -02:00
Roberto Ierusalimschy 1350a2bcb5 more macros to try to make NaN trick work with other sizes of
IEEE float numbers. (It has not been tested with such different
sizes...)
2011-10-17 12:46:13 -02:00
Roberto Ierusalimschy 217e67cb22 new type 'l_noret' for function that do not return 2011-10-07 17:45:19 -03:00
Roberto Ierusalimschy 9bbfe9f3fd avoid the word 'TRICKLE' in macro name (as it has nothing to do
with its meaning)
2011-10-07 16:53:05 -03:00
Roberto Ierusalimschy 788a0ecd27 'luaC_separateudata' renamed to 'separatetobefnz' and called only
from 'lgc.c'
2011-10-03 14:54:25 -03:00
Roberto Ierusalimschy 6d86b937e4 'luaC_separateudata' called from 'luaC_freeallobjects' + removed
extra 'luaF_close' (already being called by 'close_state')
2011-10-03 14:54:25 -03:00
Roberto Ierusalimschy bc90cf4b83 retraverse all gray lists together to avoid traversing some weak
tables twice (as they may change lists when traversed)
2011-10-03 13:22:05 -03:00
Roberto Ierusalimschy d79190e27f missing 'LUA_CORE' definition 2011-10-03 13:19:23 -03:00
Roberto Ierusalimschy 9caf5b4f79 lint (unused definition) 2011-09-30 09:46:06 -03:00
Roberto Ierusalimschy 50cddefeeb lint (wrong identation) 2011-09-30 09:45:45 -03:00
Roberto Ierusalimschy e24f1ee9ff lint (unreachable code) 2011-09-30 09:44:45 -03:00
Roberto Ierusalimschy f3b0eb3ecf lint (unused macros) 2011-09-30 09:44:19 -03:00
Roberto Ierusalimschy 162ce8256e lint (unused struct field) 2011-09-30 09:43:54 -03:00
Roberto Ierusalimschy ad90447eb6 detail: new macros for non-valid values 2011-09-26 17:17:27 -03:00
Roberto Ierusalimschy 87912786af dead objects are not collectable. 2011-09-24 18:12:01 -03:00
Roberto Ierusalimschy 5645a84368 detail about 'trick' function (nil turn it off) 2011-09-24 18:11:29 -03:00
Roberto Ierusalimschy 95ed6c1127 better(?) scheme for cleaning weak tables; all ressurected objects
are removed from weak values before finalization
2011-09-24 18:00:40 -03:00
Roberto Ierusalimschy 12ab78aca6 detail in extra trace code: total bytes is given by 'gettotalbytes',
not by 'totalbytes' counter.
2011-09-20 16:25:23 -03:00
Roberto Ierusalimschy 45c346645c avoid clearing ephemeron tables that have nothing to be cleaned
(no white elements)
2011-09-19 14:03:38 -03:00
Roberto Ierusalimschy 68ce878292 cannot compute 'mainposition' before checking whether key is nil 2011-09-15 14:09:02 -03:00
Roberto Ierusalimschy 500336efd0 small bug in if-goto optimization: block must be closed ('leaveblock')
*before* the jump out ('escapelist')
2011-09-14 14:40:26 -03:00
Roberto Ierusalimschy 5ea8f108e1 using 'long' versions of 'fseek'/'ftell' when available 2011-09-13 18:09:04 -03:00
Roberto Ierusalimschy 2275030b86 details (and missing 'break's) 2011-09-13 15:05:59 -03:00
Roberto Ierusalimschy 05de314701 upvalue names always can be NULL (if debug info was removed), so
always check for that case
2011-09-13 14:40:20 -03:00
Roberto Ierusalimschy d281d23f8d detail (make 'lua_assert' a valid expression even when turned off) 2011-09-13 14:39:23 -03:00
Roberto Ierusalimschy ec431ce5db comment 2011-09-12 17:33:03 -03:00
Roberto Ierusalimschy c8f47c2934 optimization for |if cond then goto| 2011-08-30 13:38:58 -03:00
Roberto Ierusalimschy ca458f1f52 'luaK_goiffalse' exported 2011-08-30 13:26:41 -03:00
Roberto Ierusalimschy 121dc8af66 cleaner code for 'if' construct 2011-08-25 10:45:24 -03:00
Roberto Ierusalimschy a8675966ec detail: centralize all tests for Windows on variable 'LUA_WIN' 2011-08-23 14:25:42 -03:00
Roberto Ierusalimschy 3dc5475e23 'nCcalls' should be local to each thread, as each thread may have its
own C stack (with LuaThreads or something similar)
2011-08-23 14:24:34 -03:00
Roberto Ierusalimschy 8a008a2057 bug: __newindex metamethod may not work if metatable is its own
metatable.
2011-08-17 17:38:51 -03:00
Roberto Ierusalimschy 89b59eee73 bug: __newindex metamethod may not work if metatable is its own
metatable + luaV_settable does not create entry when there is a
metamethod (and therefore entry is useless)
2011-08-17 17:26:47 -03:00
Roberto Ierusalimschy 166dd0261a new option '-E' to avoid environment variables 2011-08-17 17:19:52 -03:00
Roberto Ierusalimschy 51471ba748 comments about use of 'luaH_set' 2011-08-15 16:41:58 -03:00
Roberto Ierusalimschy 0b65cb74cd new implementation for 'getobjname': first search for relevant
instruction (new function 'findsetreg') and then try to build
a meaningful name
2011-08-12 17:01:44 -03:00
Roberto Ierusalimschy ea46b750dc comment 2011-08-11 14:06:12 -03:00
Roberto Ierusalimschy 92afcf2823 no more 'luaH_setstr (used only once) + 'luaH_setint' receives value
to be set.
2011-08-09 17:58:29 -03:00
Roberto Ierusalimschy b5bf7d9ef4 'string.format' checks whether values for integer formats are
actually integers
2011-08-09 17:58:29 -03:00
Roberto Ierusalimschy 6a5d89b39f detail (using array instead of several variables to keep track of
enabled command-line options)
2011-08-04 15:16:16 -03:00
Roberto Ierusalimschy ae14adc272 better error message when trying to open files 2011-08-02 15:00:01 -03:00
Roberto Ierusalimschy ff98f17d27 detail: factoring in common code for opening files and checking for
errors
2011-07-28 15:41:15 -03:00
Roberto Ierusalimschy 59bcd137ae reducing even more use of C stack by the parser: struct 'FuncState'
does not need field 'L' + number of labels/gotos in a chunk may be
limited to SHRT_MAX. (Also removed some non-needed 'unsigned's.)
2011-07-27 15:09:01 -03:00
Roberto Ierusalimschy 5ab6d36d99 no more field 'L' in 'FuncState' 2011-07-27 15:07:37 -03:00
Roberto Ierusalimschy 43c873895f tonumber: base 10 is not special, no base is 2011-07-27 09:14:06 -03:00
Roberto Ierusalimschy 03a078493e refuse things like 'inf' or 'Nan' as numerals 2011-07-27 09:13:08 -03:00
Roberto Ierusalimschy bae57ea088 'M_IX86' -> '_M_IX86' 2011-07-25 14:20:47 -03:00
Roberto Ierusalimschy 2557107e91 removed unused variable 'found' (in 'findfield') + removed legacy
test for 'what' being "tail"
2011-07-25 14:18:49 -03:00
Roberto Ierusalimschy 32a12e2f3f detail (cleaned whitespaces at end of lines) 2011-07-15 09:50:29 -03:00
Roberto Ierusalimschy 559bb554c9 no more 'zungetc' (better not to read next char) 2011-07-15 09:48:03 -03:00
Roberto Ierusalimschy fd5e810e08 macro 'char2int' replaced by 'cast_uchar' (used by other files) 2011-07-15 09:35:32 -03:00
Roberto Ierusalimschy 067f761739 better code for numerical escapes 2011-07-15 09:30:41 -03:00
Roberto Ierusalimschy 7978a8d8b2 added '_M_IX86' in NaN trick 2011-07-08 17:07:11 -03:00
Roberto Ierusalimschy 32e09c2a16 detail 2011-07-08 17:01:38 -03:00
Roberto Ierusalimschy df19931ddc error on invalid escape sequences 2011-07-08 16:17:30 -03:00
Roberto Ierusalimschy b5084fdafe detail (comment) 2011-07-06 13:45:14 -03:00
Roberto Ierusalimschy d8200d5f3c '\*' -> '\z' + '\?' is not an official escape sequence 2011-07-05 16:13:45 -03:00
Roberto Ierusalimschy 79cbc3468c removed and deprecated functions really removed from the code base 2011-07-05 09:49:35 -03:00
Roberto Ierusalimschy 9e89a55a4f NILCONSTANT also depends no endianess (with NaN trick) 2011-07-04 17:29:02 -03:00
Roberto Ierusalimschy b707e81c3d comments about some compiler options that should be tested once in a while 2011-07-04 13:10:15 -03:00
Roberto Ierusalimschy ee37ee50d6 'table.pack' also returns 'n' + 'deprecated' changed to 'removed' 2011-07-02 13:01:44 -03:00
Roberto Ierusalimschy ad1a54b5c0 reordering of some defines (more logical grouping) 2011-07-02 13:00:15 -03:00
Roberto Ierusalimschy 88c29c0cd5 compilation warning about integer size x pointer size 2011-07-02 12:59:17 -03:00
Roberto Ierusalimschy d93df22bf6 small simplifications (and assert was wrongly written) 2011-07-02 12:58:14 -03:00
Roberto Ierusalimschy 5017cc6ba2 simpler 'luai_apicheck' (and avoids compilation error...) 2011-07-02 12:57:25 -03:00
Roberto Ierusalimschy 2f125ebc33 'deprecated' x 'removed' (they are not the same thing) 2011-07-02 12:56:43 -03:00
Roberto Ierusalimschy 49a01c0991 'package.loaders' -> 'package.searchers' 2011-06-28 14:14:12 -03:00
Roberto Ierusalimschy 17526ed2fe no more errors on accesses to 'string' and strings 2011-06-28 14:13:52 -03:00
Roberto Ierusalimschy f180822fa6 back to internal table for 'ctype', no more locale manipulation 2011-06-28 12:42:04 -03:00
Roberto Ierusalimschy 594220c624 use standard "underscore + uppercases" for reserved keys in the registry 2011-06-27 16:42:31 -03:00
Roberto Ierusalimschy 3dd68624dc comments 2011-06-27 15:27:18 -03:00
Roberto Ierusalimschy f9eea453b7 avoid "magic constant" 32 (the difference from 'A' to 'a') 2011-06-27 15:22:46 -03:00
Roberto Ierusalimschy 374773748b back to "one-label-per-block" 2011-06-27 15:18:59 -03:00
Roberto Ierusalimschy 29644366fc useless assignments removed (macros already do the assignment) 2011-06-24 11:36:21 -03:00
Roberto Ierusalimschy 6eadedbfa1 resort to standard C ctype for non-ASCII systems + 'ltoupper' replaced
by 'ltolower'
2011-06-24 09:25:33 -03:00
Roberto Ierusalimschy 1978094b3a resort to standard C ctype for non-ASCII systems 2011-06-24 09:25:33 -03:00
Roberto Ierusalimschy 5acc5b0c1e using 'tolower' instead of 'toupper' (slightly simpler to implement) 2011-06-24 09:25:02 -03:00
Roberto Ierusalimschy 59547c6cda macro 'ltoupper' instead of 'lisupper' (more usefull for Lua) 2011-06-23 13:01:06 -03:00
Roberto Ierusalimschy 3d3355b4f3 label syntax changed to '::label::' 2011-06-23 11:54:48 -03:00
Roberto Ierusalimschy 801f43f09a change in the representation of file handles 2011-06-21 10:43:48 -03:00
Roberto Ierusalimschy 719c01359f label syntax changed to '::label::' 2011-06-20 13:52:48 -03:00
Roberto Ierusalimschy 43f13729a2 comment 2011-06-20 13:50:59 -03:00
Roberto Ierusalimschy 136f8e148d added cast to void to calls to 'setlocale' (to easy redefining it as
a constant)
2011-06-20 13:36:03 -03:00
Roberto Ierusalimschy f90a130b07 typo in message 2011-06-20 13:35:23 -03:00
Roberto Ierusalimschy cb4950a6d8 parser must work with C locale, but external locale must be preserved 2011-06-18 14:08:58 -03:00
Roberto Ierusalimschy fdede85419 label names must be unique inside a function 2011-06-16 13:36:39 -03:00
Roberto Ierusalimschy beab626061 correct length for LUA_COPYRIGHT (without trailing '\0') 2011-06-16 11:30:58 -03:00
Roberto Ierusalimschy 817f8674af avoid warning about -unsigned value 2011-06-16 11:14:31 -03:00
Roberto Ierusalimschy cf0562e1e7 detail (missing cast to unsigned char when converting char to int) 2011-06-16 11:13:22 -03:00
Roberto Ierusalimschy 22e1c5ebad avoid conversion from 'const char*' to 'void *' (warning about 'const') 2011-06-16 11:12:24 -03:00
Roberto Ierusalimschy 470dd56a89 'os.execute' (and similars) should return 'exit' and code in case
of success, too.
2011-06-16 11:11:04 -03:00
Roberto Ierusalimschy 20d30bcd33 declarations should be present only when implementations are 2011-06-16 11:10:12 -03:00
Roberto Ierusalimschy 44b6f496b5 just in case, avoid side effects in 'ctype' macros 2011-06-15 11:35:55 -03:00
Roberto Ierusalimschy fd80e63468 configuration for NaN trick big-endian + macro 'luai_checknum' to
ensure numbers comming from C are not "improper" (some kinds of
signaling NaNs)
2011-06-13 11:13:06 -03:00
Roberto Ierusalimschy f62565abea avoid warnings with -Wstrict-overflow 2011-06-09 15:24:22 -03:00
Roberto Ierusalimschy c9d1d9f9c6 better way to test overflows with string indices 2011-06-09 15:22:47 -03:00
Roberto Ierusalimschy 35391d9b1a macro 'NNMARK' (mark for non-number values using the NaN trick) 2011-06-09 15:21:25 -03:00
Roberto Ierusalimschy 99b1b8e918 first version with 'NANTRICK' (packing all Lua values inside a 'double') 2011-06-07 16:02:33 -03:00
Roberto Ierusalimschy 3b44821334 stricter control (using tag variants) over closure kinds (Lua x C) 2011-06-02 16:31:40 -03:00
Roberto Ierusalimschy 0214dab989 yet another macro ('num_') 2011-05-31 16:15:01 -03:00
Roberto Ierusalimschy 821bd7025e more uniform names for 'equalobj'-related functions 2011-05-31 15:27:56 -03:00
Roberto Ierusalimschy 9b7dddad7d no need for two different implementations for equality (one raw and
one with metamethods)
2011-05-31 15:24:36 -03:00
Roberto Ierusalimschy 3f04a9f2c0 code is simpler without 'goto' here 2011-05-30 13:36:38 -03:00
Roberto Ierusalimschy 2a59a999d4 yet another macro abstracting TValue representation 2011-05-26 14:12:31 -03:00
Roberto Ierusalimschy ee7d0c2649 new macro 'luai_writeline' to print newlines (and flush 'stdout') 2011-05-26 13:09:40 -03:00
Roberto Ierusalimschy aa13c591f5 avoid use of 'ifdef/ifndef'; use 'defined' instead (simpler and
more powerful)
2011-05-25 11:12:28 -03:00
Roberto Ierusalimschy 6c8a32217a changes by lhf (better control of chars x bytes) 2011-05-17 09:42:43 -03:00
Roberto Ierusalimschy cb09f4fef4 details 2011-05-06 13:00:23 -03:00
Roberto Ierusalimschy 3cf1729a02 new macro 'lua_longassert' that is equivalent to an assertion without
a stringfication of the condition, to avoid too long string literals
(limited by C90 to ~510 characters)
2011-05-05 16:43:14 -03:00
Roberto Ierusalimschy 74b0bb3a45 macro 'checkconsistency' moved to this file, as it is used only
here
2011-05-05 16:42:25 -03:00
Roberto Ierusalimschy e4076fe6d9 break long assertion in two shorter ones 2011-05-05 13:18:53 -03:00
Roberto Ierusalimschy 81952e6884 avoid using expression as argument to unsafe macro 'l_isfalse' 2011-05-05 13:16:33 -03:00
Roberto Ierusalimschy 25b4e35ee8 new macros abstracting TValue representation (to easy change to
other representations)
2011-05-05 12:53:23 -03:00
Roberto Ierusalimschy 7e1facaa4e detail in assertion 2011-05-04 14:04:06 -03:00
Roberto Ierusalimschy ad2531a0ee more complete (and hopefuly more correct) handling of 'sizeof(char)' 2011-05-03 13:01:57 -03:00
Roberto Ierusalimschy bc1c718cc0 removed TOKEN_LEN (useless) 2011-05-03 12:51:16 -03:00
Roberto Ierusalimschy c9ce754e38 comment 2011-05-02 14:33:01 -03:00
Roberto Ierusalimschy d34271fe42 MacOS 'strtod' handles hexa formats too 2011-04-29 10:56:28 -03:00
Roberto Ierusalimschy d120ec29ca bug in OP_SELF when method name goes to a register 2011-04-28 11:00:11 -03:00
Roberto Ierusalimschy 2aff901c93 Mac OS defines LUA_USE_AFORMAT and LUA_USE_LONGLONG by default 2011-04-20 15:25:54 -03:00
Roberto Ierusalimschy bad231c481 'LUA_USELONGLONG' -> 'LUA_USE_LONGLONG' 2011-04-20 13:36:28 -03:00
Roberto Ierusalimschy a2b1c279f1 'LUA_USELONGLONG' on by default on Linux + LUA_USE_HEXAFLOAT renamed
to LUA_USE_STRTODHEX (as Lua 5.2 always *uses*  hexa floats)
2011-04-19 15:31:30 -03:00
Roberto Ierusalimschy 2f128c5130 'luaL_setfuncs' does not need to accept a NULL list. (If there is
no list, there is no reason to call this function.)
2011-04-19 15:29:41 -03:00
Roberto Ierusalimschy 4758113043 change in opcode OP_LOADNIL: B is used as a counter instead of a
register. (Avoids an assignment to R(B), not present in any other
instruction.)
2011-04-19 13:22:13 -03:00
Roberto Ierusalimschy a4e644add2 small bug (masked by wrong entry for OP_TEST in opcodes.c) 2011-04-18 16:49:13 -03:00
Roberto Ierusalimschy 05ca63642b added macro for code checking 2011-04-18 16:48:53 -03:00
Roberto Ierusalimschy f17e3624ef local function name only visible to debug info after being initialized 2011-04-18 16:48:24 -03:00
Roberto Ierusalimschy 2e9b8476ca detail ('luai_apicheck' should be used always through macro 'api_check') 2011-04-18 12:02:37 -03:00
Roberto Ierusalimschy c31f4946e9 copyright updated to 2011 2011-04-18 11:15:48 -03:00
Roberto Ierusalimschy c86586e866 small corrections in description of OP_TEST and OP_LOADKX 2011-04-12 14:27:35 -03:00
Roberto Ierusalimschy 19fbdf6cae 'luaL_findtable' -> 'luaL_getsubtable' 2011-04-08 16:17:36 -03:00
Roberto Ierusalimschy 427ee519db new instruction OP_LOADKX (to replace OP_LOADK with extra argument) 2011-04-07 15:14:12 -03:00
Roberto Ierusalimschy a958b711f5 cleaner scheme of bits for variant types (light C functions) and
collectable types
2011-04-07 13:11:57 -03:00
Roberto Ierusalimschy 1ffdd0bc7a detail (should use macro 'ttisdeadkey') 2011-04-05 15:32:28 -03:00
Roberto Ierusalimschy 5286650894 new macro 'ttisequal' 2011-04-05 15:32:06 -03:00
Roberto Ierusalimschy 0fb1644c60 2nd operand for unary tag methods does not need to be 'nil' 2011-04-05 11:26:23 -03:00
Roberto Ierusalimschy 119d5e46d5 lua_arith gets no fake operand for unary minus 2011-04-05 11:26:23 -03:00
Roberto Ierusalimschy 83abbac946 all names used internally by macros end with '_' 2011-04-05 11:24:07 -03:00
Roberto Ierusalimschy a25416a8d5 use of 'luaL_tolstring' for option '%s' in 'string.format' 2011-03-18 16:02:33 -03:00
Roberto Ierusalimschy 682cce3813 macro 'mark' renamed 'EOFMARK' ('mark' is too easy to confict, e.g.
in alllua.c)
2011-03-14 12:39:42 -03:00
Roberto Ierusalimschy d806710ab5 returns for file-related functions and process-related functions
unified in 'auxlib'
2011-03-03 13:34:46 -03:00
Roberto Ierusalimschy e049abb69a loaders receive an extra argument returned by the searcher
(typically the file name)
2011-03-01 14:01:53 -03:00
Roberto Ierusalimschy 98816d0ce5 small problems with 'luaone.c' 2011-02-28 14:32:10 -03:00
Roberto Ierusalimschy 7482e8f914 no need of lookahead in Zio 2011-02-23 10:13:10 -03:00
Roberto Ierusalimschy 03b769053a correct interpretation of return value from pclose 2011-02-21 16:12:54 -03:00
Roberto Ierusalimschy 3c710f056b small bug: may call reader function again after it returned end
of input
2011-02-17 15:34:16 -02:00
Roberto Ierusalimschy c0a865fa54 error for repeated label + jumps allowed to labels followed by
'no-op' statements
2011-02-14 14:36:34 -02:00
Roberto Ierusalimschy 0009ac1f3a 'break' does not need to be last statement in a block +
'explist1' -> 'explist' + moving a few functions around
2011-02-14 12:59:28 -02:00
Roberto Ierusalimschy 7b968bb514 p-close returns "correct" status plus type of termination 2011-02-10 13:35:50 -02:00
Roberto Ierusalimschy bf8b08295a 'break' coded as 'goto' + small bug when closing multiple gotos
to the same label
2011-02-10 12:50:41 -02:00
Roberto Ierusalimschy 3f5b56c48b simpler code for repeat-until 2011-02-09 15:03:18 -02:00
Roberto Ierusalimschy e7192dfdbb corrected 'follow' for checking whether label is last statement
in a block
2011-02-09 14:51:28 -02:00
Roberto Ierusalimschy 0539f48661 small changes in goto-related error messages 2011-02-09 12:45:19 -02:00
Roberto Ierusalimschy e7a9c45a48 trying to avoid assumption that sizeof(char)==1 2011-02-07 17:15:24 -02:00
Roberto Ierusalimschy fd6c1f4898 ensures that all local variables are declared inside some block,
opening a new block at 'open_func'
2011-02-07 17:00:30 -02:00
Roberto Ierusalimschy f079749287 some reorganization of dynamic data structures used by the parser 2011-02-07 15:14:50 -02:00
Roberto Ierusalimschy f8d677f94c no more 'OP_CLOSE' instructions (use jumps to close upvalues) 2011-02-07 10:28:27 -02:00
Roberto Ierusalimschy 094a7d0290 detail in 'print_usage' 2011-02-07 10:27:13 -02:00
Roberto Ierusalimschy 7cc0e63d8a first implementation of 'goto' 2011-02-04 15:34:43 -02:00
Roberto Ierusalimschy a4a8914c20 new reserved word 'goto' 2011-02-02 12:55:17 -02:00
Roberto Ierusalimschy 06c7efb4a9 avoid extra increment to 'savedpc' when jumping 2011-02-01 16:32:55 -02:00
Roberto Ierusalimschy dd547c55c8 new scheme to close upvalues in 'break'; jump instructions may
do the close, avoiding the need for a OP_CLOSE instruction
2011-02-01 16:03:10 -02:00
Roberto Ierusalimschy f6bd8b1147 better control for GC running or stopped 2011-02-01 14:52:38 -02:00
Roberto Ierusalimschy a7faa557fa bug: problem with optimizations of short-circuit logic 2011-01-31 12:52:32 -02:00
Roberto Ierusalimschy 026a7e92be bug in some short-circuit optimizations 2011-01-31 12:28:41 -02:00
Roberto Ierusalimschy c4ea0c3b29 detail (cleaning trailing spaces) 2011-01-26 14:30:02 -02:00
Roberto Ierusalimschy 7106c491dd 'sep' argument to 'string.rep' + 'string.rep' preallocates entire
buffer before creating resulting string
2011-01-12 18:36:01 -02:00
Roberto Ierusalimschy a10d495b18 'luaL_findtable' returns boolean about whether it created a new
table (to easy initializing table)
2011-01-10 13:51:42 -02:00
Roberto Ierusalimschy c2e3cc4c89 using 'luaL_findtable' to manage hook table 2011-01-10 13:51:19 -02:00
Roberto Ierusalimschy 67feed49f1 optional argument 'sep' to 'searchpath' 2011-01-07 16:54:49 -02:00
Roberto Ierusalimschy b63b0928cf prototype for 'luaO_ceillog2' was different from definition 2011-01-07 13:46:27 -02:00
Roberto Ierusalimschy 511679313f new function 'rawlen' 2011-01-07 10:41:48 -02:00
Roberto Ierusalimschy 868ff40339 full collection does not restart collector + avoid changing GC
state if an error happens in a step
2010-12-29 16:00:23 -02:00
Roberto Ierusalimschy aa6faa6331 own implementation of 'tunumber', so that it works correctly with
numbers outside the 'int' range
2010-12-27 16:00:38 -02:00
Roberto Ierusalimschy 0b3f4e254e more efficient hash for numbers in IEEE754 machines 2010-12-23 13:38:28 -02:00
Roberto Ierusalimschy 551b076f1c change in the relationship between totalbytes and GCdebt - luaM_realloc_
is too critical to update two counters
2010-12-20 17:40:07 -02:00
Roberto Ierusalimschy 737f119187 better control for GC running or stopped 2010-12-20 16:17:46 -02:00
Roberto Ierusalimschy 8980c630bf error when indexing strings with invalid keys 2010-12-20 15:25:36 -02:00
Roberto Ierusalimschy 8d579c5bc5 'debug.setmetatable' returns object (like 'setmetatable') 2010-12-20 15:24:15 -02:00
Roberto Ierusalimschy d51743b0c7 removed 'newproxy' 2010-12-17 13:14:58 -02:00
Roberto Ierusalimschy 1a92c2b354 allows number of bits used by the library to be changed from outside 2010-12-17 11:26:38 -02:00
Roberto Ierusalimschy fe0d54d37e table library respects '#' metamethods 2010-12-17 10:15:34 -02:00
Roberto Ierusalimschy c9af0768fc GC does not mark dead registers inside activation record 2010-12-17 10:05:37 -02:00
Roberto Ierusalimschy 7e0caa7d61 new closures are always created on "next" register (so that GC knows
stack limit)
2010-12-17 10:03:41 -02:00
Roberto Ierusalimschy a40768e5ea new macro 'luaC_condGC' to allow extra code to be run in case
of GC steps
2010-12-17 10:02:29 -02:00
Roberto Ierusalimschy 4a83fe569c comment 2010-12-15 17:13:29 -02:00
Roberto Ierusalimschy b83b6ba015 'loadin' -> 'load' 2010-12-13 14:38:00 -02:00
Roberto Ierusalimschy af119c8b55 official support for floating hexa numerals 2010-12-10 17:03:46 -02:00
Roberto Ierusalimschy 1aead7f553 'hexafloat' moved to 'lobject.c' (hexa conversion needs it too) 2010-12-10 12:53:15 -02:00
Roberto Ierusalimschy 75d8470f0f new macro 'cast_uchar' 2010-12-10 11:40:22 -02:00
Roberto Ierusalimschy 81646af13b 'loadstring' deprecated; use 'load' instead 2010-12-08 10:58:04 -02:00
Roberto Ierusalimschy 233b71c092 comment 2010-12-07 09:40:42 -02:00
Roberto Ierusalimschy ccc4fc9cf0 detection of erroneous numeric strings with \0 (such as "1\0") 2010-12-06 19:08:36 -02:00
Roberto Ierusalimschy c79b4a97aa using 'strspn' to skip spaces in 'tonumber' 2010-12-06 14:25:48 -02:00
Roberto Ierusalimschy ac3afc7cd4 'printf' replaced by 'luai_writestring' 2010-12-03 15:20:50 -02:00
Roberto Ierusalimschy 350cc4bcb6 'micro' bug: when closing state, old objects are finalized (breaking
assertion)
2010-12-03 09:48:25 -02:00
Roberto Ierusalimschy 35931bbed4 comments 2010-12-02 17:51:15 -02:00
Roberto Ierusalimschy 12779b2b71 getlocal/setlocal can access vararg parameters 2010-11-30 15:17:51 -02:00
Roberto Ierusalimschy 7ca1bd639f new functions 'extract' and 'replace' 2010-11-29 13:19:28 -02:00
Roberto Ierusalimschy 9b7a12c46d finalizers (__gc) for tables 2010-11-26 12:32:31 -02:00
Roberto Ierusalimschy 5b33e39855 removed deprecated functions getn-foreach-foreachi 2010-11-23 15:21:14 -02:00
Roberto Ierusalimschy a64cf8fac9 'test' -> 'btest' 2010-11-22 16:06:33 -02:00
Roberto Ierusalimschy 092fa71ddd conventional names for bitwise operators 2010-11-22 14:39:20 -02:00
Roberto Ierusalimschy a2eaad5d81 'gfind' was deprecated in 5.1 2010-11-19 14:25:51 -02:00
Roberto Ierusalimschy 54771c5afa keep 'seminfo->ts' even for reserved words, just in case
(some lhf's tools need this)
2010-11-18 16:38:44 -02:00
Roberto Ierusalimschy bcce769d29 avoid "unreacheable code" warnings 2010-11-18 16:38:27 -02:00
Roberto Ierusalimschy 24baa919c1 small bug: 'find' did not detect magic chars after a \0 in a pattern
and did a plain search in those cases
2010-11-16 18:39:41 -02:00
Roberto Ierusalimschy d1c0efdb7d comment about compatibility-only functions 2010-11-16 17:20:01 -02:00
Roberto Ierusalimschy 566758de79 'getuservalue' accepts any type of argument 2010-11-16 16:01:28 -02:00
Roberto Ierusalimschy 50334faad6 no more compatibility with (veryyyy) old ref system 2010-11-16 15:43:29 -02:00
Roberto Ierusalimschy cee7a8e1ec -DLUA_COMPAT_ALL is the default 2010-11-16 09:39:42 -02:00
Roberto Ierusalimschy 8c21f463ed 'debug' library is loaded by default 2010-11-12 13:48:30 -02:00
Roberto Ierusalimschy a1952d9c41 'l_tvar' renamed to 'l_tg' 2010-11-12 13:47:34 -02:00
Roberto Ierusalimschy 1a46a713d2 new macro 'l_tvar' to easy the use of mathlib with other floating
types (float and long double)
2010-11-11 13:39:12 -02:00
Roberto Ierusalimschy 23b9ceb0a4 allows larger array parts in tables (no need to restrict it to 2^26) 2010-11-11 13:38:43 -02:00
Roberto Ierusalimschy 0a6a6b9d9d no more sentinel to detect loops in module dependencies;
usual message for infinite recursion is good enough.
2010-11-10 18:00:04 -02:00
Roberto Ierusalimschy 1b54197491 better error message when light userdata is used instead of a
full userdata
2010-11-10 16:06:10 -02:00
Roberto Ierusalimschy c97aa9485c new function 'luaL_setmetatable' 2010-11-10 16:05:36 -02:00
Roberto Ierusalimschy e885b91326 'luaL_typeerror' deprecated 2010-11-10 15:38:10 -02:00
Roberto Ierusalimschy fa1f724378 when reading blocks with given size, try to read whole block
at once
2010-11-09 14:57:49 -02:00
Roberto Ierusalimschy 2a966116b1 detail (message) 2010-11-09 09:04:15 -02:00
Roberto Ierusalimschy 43ec354722 added support for conditional use of %Lg when using long double 2010-11-08 15:38:37 -02:00
Roberto Ierusalimschy 700b003fb5 when reading large files, double buffer size at each iteration 2010-11-08 15:27:22 -02:00
Roberto Ierusalimschy f722ba6890 code should not use "defined" types, but "typedef"s types when they
are available (i.e., after including lua.h) + small changes to make
conversions more portable across diferent types for lua_Number
(long double) and lua_Unsigned (long long unsigned)
2010-11-08 14:33:20 -02:00
Roberto Ierusalimschy c7d4da8746 correction to allow lua_Unsigned larger than usigned int 2010-11-08 14:31:22 -02:00
Roberto Ierusalimschy f1629217f1 code for conversion macros moved from luaconf to llimits + 'uint'
renamed to 'unsigned' in those macros
2010-11-03 13:16:17 -02:00
Roberto Ierusalimschy fdd5f2f7a3 comment typos 2010-10-29 15:52:46 -02:00
Roberto Ierusalimschy c6ef3e2672 bug: by-one error when creating short source names (luaO_chunkid) 2010-10-29 13:54:55 -02:00
Roberto Ierusalimschy ba8dca00ac detail (ununsed parameter) 2010-10-29 12:35:09 -02:00
Roberto Ierusalimschy 9be89a1864 'luaL_checkversion' also checks convertions (number to integer types) 2010-10-29 10:52:21 -02:00
Roberto Ierusalimschy b9f371a3c2 added another option for ieeeendian 2010-10-29 09:13:21 -02:00
Roberto Ierusalimschy 4834de8427 comment typo 2010-10-29 09:13:14 -02:00
Roberto Ierusalimschy 94043a3a1a more robust implementation for 'luaO_str2d' 2010-10-28 13:39:03 -02:00
Roberto Ierusalimschy e642cc4206 correct handling of negative numbers in non-10 bases by 'tonumber'
(e.g., tonumber(-34, 8))
2010-10-28 13:36:30 -02:00
Roberto Ierusalimschy da57477c3d added more platforms for ieeeendianess + small comments 2010-10-28 13:18:25 -02:00
Roberto Ierusalimschy f39034889d stricter control over number of bits in each operation 2010-10-28 13:17:29 -02:00
Roberto Ierusalimschy 6b053a63cb added check for architectures with known endianess (only i386 now) 2010-10-27 15:16:37 -02:00
Roberto Ierusalimschy 572e5e6b28 new names for bit functions (mimicking assembler) 2010-10-27 14:50:32 -02:00
Roberto Ierusalimschy 6098e06e09 better organization for coercion functions between lua_Number and
integer types + IEEE trick to be used in most platforms, by default
2010-10-26 17:32:19 -02:00
Roberto Ierusalimschy c6b64ffe65 new type lua_Unsigned and corresponding projection/injection functions 2010-10-25 18:31:11 -02:00
Roberto Ierusalimschy 4590a89b32 corrected warnings from different compilers (mostly casts and small
details)
2010-10-25 17:01:37 -02:00
Roberto Ierusalimschy 1475cb59bf version from lhf 2010-10-25 12:33:38 -02:00
Roberto Ierusalimschy 9e8e60dd5f bitlib renamed to 'bit32' + new function for arithmetic shift 2010-10-25 12:32:36 -02:00
Roberto Ierusalimschy d72ec210c7 POS_A replaced by POS_Ax (which is more "precise") 2010-10-25 10:24:55 -02:00
Roberto Ierusalimschy c77baf752c comment 2010-10-25 10:24:36 -02:00
Roberto Ierusalimschy a122688091 better error message for 'lua -e -i' 2010-10-18 14:06:33 -02:00
Roberto Ierusalimschy f3026c36c2 details in opcode list 2010-10-13 13:45:54 -03:00
Roberto Ierusalimschy cd0ebd0a80 'proto->source' may be NULL (if dump strips debug information) 2010-10-11 17:24:42 -03:00
Roberto Ierusalimschy 8bc33a088c 'os.exit' acceps booleans as status (for EXIT_SUCESS and EXIT_FAILURE) 2010-10-05 09:18:03 -03:00
Roberto Ierusalimschy c3eb89544f 'luaL_loadlib' accepts Utf8 BOM in the beginning of files 2010-10-01 15:53:00 -03:00
Roberto Ierusalimschy ffff9a49da 'nresults' in CallInfo now refers to number of results that the current
function returns (and not what it expects from a call)
2010-09-30 14:21:31 -03:00
Roberto Ierusalimschy b22356e5c5 hexadecimal constants may be floating values too 2010-09-13 18:49:58 -03:00
Roberto Ierusalimschy a289a62717 'loadin' should not check whether upvalue is called '_ENV',
because its name may be unknown when there is no debug information.
2010-09-07 16:38:36 -03:00
Roberto Ierusalimschy e3eabcf913 'lua_[gs]etupvalue' may work even without debug information
(that is, without upvalue names)
2010-09-07 16:35:04 -03:00
Roberto Ierusalimschy 0df2238063 name "_ENV" configurable through 'luaconf.h' 2010-09-07 16:21:39 -03:00
Roberto Ierusalimschy 6828f6d427 new parameter 'majorinc' to control frequency of major collections
in generational mode
2010-09-03 11:14:01 -03:00
Roberto Ierusalimschy daa5fe3e31 'loadin' should accept any value for the environment (not only tables) +
it should check whether chunk has upvalue named '_ENV'
2010-08-23 15:03:11 -03:00
Roberto Ierusalimschy 8d9ea59d28 'pushclosure' -> 'codeclosure' (as there is another 'pushclosure' in
'lvm.c) + small detail
2010-08-23 14:32:34 -03:00
Roberto Ierusalimschy 5e7dbd0b8b api checks to ensure that thread is OK when using lua_call/lua_pcall 2010-08-04 15:40:28 -03:00
Roberto Ierusalimschy cd6c276e41 use index 0 for header of list of free references 2010-08-03 17:21:16 -03:00
Roberto Ierusalimschy fd4b4a2a68 detail: registry._PRELOAD must be a table, no need to check 2010-08-02 14:14:48 -03:00
Roberto Ierusalimschy d447945685 'module'/'luaL_register' and associates are deprecated 2010-07-28 12:51:59 -03:00
Roberto Ierusalimschy 78f9635111 several new comments 2010-07-26 12:53:23 -03:00
Roberto Ierusalimschy 8b7cf8c62d 'lua_[gs]etenv' -> 'lua_[gs]etuservalue' 2010-07-25 12:18:19 -03:00
Roberto Ierusalimschy 73b0a3451d environment variables consulted by Lua may be version-specific 2010-07-25 12:03:37 -03:00
Roberto Ierusalimschy 85c1461422 new macros LUA_VERSION_{MAJOR/MINOR/RELEASE} 2010-07-25 12:02:41 -03:00
Roberto Ierusalimschy 5ba556d27a using curly brackets to mark blocks of '#if/#else/#endif's 2010-07-18 11:34:45 -03:00
Roberto Ierusalimschy 81dd13f4c6 new way to distinguish between indexing tables in registers and
tables in upvalues (+ fixed small bug when checking conflicts in
multiple assignments)
2010-07-07 13:27:29 -03:00
Roberto Ierusalimschy 6a02bbe1e2 better organization for fields in struct 'expdesc' 2010-07-02 17:42:40 -03:00
Roberto Ierusalimschy 7631c29b2f comand-line option '-l' creates global with given name after
requiring module
2010-07-02 14:36:32 -03:00
Roberto Ierusalimschy a9dc7c8828 functions lua_tonumber/lua_tointeger replaced by lua_tonumberx/lua_tointegerx
that have an extra out parameter with conversion status
2010-07-02 14:35:06 -03:00
Roberto Ierusalimschy 7192afafee new module policy: C modules do not create globals and do not register
themselves with 'require' (let 'require' do its work); new auxiliary
functions luaL_newlib/luaL_newlibtable/luaL_setfuncs/luaL_requiref.
Old luaL_register will be deprecated.
2010-07-02 08:38:13 -03:00
Roberto Ierusalimschy a139e2e003 old (and complex) luaL_findtable now used only in compatibility code
inside lauxlib.c
2010-06-30 14:40:27 -03:00
Roberto Ierusalimschy a71c5f6f53 typo in comments 2010-06-30 11:11:17 -03:00
Roberto Ierusalimschy d9ea6eca7c macro 'key2tal' replaced by 'gkey' (as both were equal) 2010-06-25 09:18:10 -03:00
Roberto Ierusalimschy ca3865cf1b 'getlocal' gets information about parameters of Lua functions 2010-06-21 13:30:12 -03:00
Roberto Ierusalimschy bef5980744 no more support for old Mac OS systems 2010-06-18 14:23:02 -03:00
Roberto Ierusalimschy 409741e900 'what' may be NULL in 'kname' 2010-06-16 10:44:36 -03:00
Roberto Ierusalimschy b98de30b8f 'ipair' is back 2010-06-13 16:41:34 -03:00
Roberto Ierusalimschy 9f48712c15 use ANSI versions of DLL functions in Windows 2010-06-13 16:36:17 -03:00
Roberto Ierusalimschy bd262d591f 'coroutine' library separated from 'baselib' 2010-06-10 18:30:26 -03:00
Roberto Ierusalimschy 0d116c3ada unused '#include' removed 2010-06-10 18:27:09 -03:00
Roberto Ierusalimschy 79f11fb2bb back with #-comments for binary files 2010-06-09 14:53:59 -03:00
Roberto Ierusalimschy fabe4ec487 better barrier for prototypes 2010-06-07 13:55:34 -03:00
Roberto Ierusalimschy 575074fd85 Lua closures are cached for reuse 2010-06-04 10:25:10 -03:00
Roberto Ierusalimschy 545f43065f 'luaF_newLclosure' gets prototype of new closure as argument 2010-06-04 10:06:15 -03:00
Roberto Ierusalimschy 3819c30e55 better names for barrier macros 2010-06-04 10:05:29 -03:00
Roberto Ierusalimschy e94fac8956 bug: generational collection was not running collector! (must write
a test for this...)
2010-06-02 15:36:58 -03:00
Roberto Ierusalimschy 2c1a5d678d factoring out common code in 'module' and 'luaL_openlib' 2010-05-31 13:34:19 -03:00
Roberto Ierusalimschy bd619b9311 new macro MAXUPVAL (maximum number of upvalues per closure) 2010-05-31 13:08:55 -03:00
Roberto Ierusalimschy aca84ee1a0 correct definition for 'lua_cpcall' (tested) 2010-05-28 11:27:07 -03:00
Roberto Ierusalimschy 5038e3c58c corrected compatibility macro 'lua_cpcall' (untested) 2010-05-27 09:06:42 -03:00
Roberto Ierusalimschy 5a7dee0c5d added class '%g' in patterns (for graphical characters) 2010-05-24 16:34:57 -03:00
Roberto Ierusalimschy ddf1f2a053 GC should not run when stopped, even in hard tests 2010-05-24 16:29:46 -03:00
Roberto Ierusalimschy e34d3c06b0 it is better to call open functions with lua_call to not mess
the caller stack
2010-05-20 09:57:59 -03:00
Roberto Ierusalimschy e8a2c36909 more comments 2010-05-18 14:32:19 -03:00
Roberto Ierusalimschy 3c39a0e8cb bug: loadfile of binary files read first character twice 2010-05-18 14:21:24 -03:00
Roberto Ierusalimschy 3d45a8eb1c really stop collection during finalizers 2010-05-17 17:39:31 -03:00
Roberto Ierusalimschy 3d80aeab5a lua_pushstring may reallocate the stack, making 'o' a dangling
pointer
2010-05-17 17:10:17 -03:00
Roberto Ierusalimschy 3811e23b32 detail (comment) 2010-05-17 15:30:27 -03:00
Roberto Ierusalimschy 12c764ed1e semicolons now represent the empty statement 2010-05-15 10:32:02 -03:00
Roberto Ierusalimschy e99e9a9473 patches for last two bugs (string.format and io.read) 2010-05-14 12:34:57 -03:00
Roberto Ierusalimschy f35ac38e1d updated depenency lists + eliminated duplication of definitions
for MYCFLAGS, MYLDFLAGS, and MYLIBS.
2010-05-14 12:08:10 -03:00
Roberto Ierusalimschy 058279d548 comments 2010-05-14 12:03:43 -03:00
Roberto Ierusalimschy 69ba1ac441 new "instruction" 'absindex' 2010-05-14 10:15:54 -03:00
Roberto Ierusalimschy 4a925c1552 in 'absindex', do not need to call gettop (can inline it) 2010-05-14 10:15:26 -03:00
Roberto Ierusalimschy cf531912f2 one more macro (mvdispatch) to easy experiments with alternative
dispatch methods
2010-05-13 16:53:05 -03:00
Roberto Ierusalimschy 0d00729e31 detail (breaking a long line) 2010-05-13 09:03:26 -03:00
Roberto Ierusalimschy b6e9fcbd70 use of macro ('vmcase') to format all cases in main switch of
'luaV_execute' (to facilitate experiences with direct threading)
2010-05-12 17:40:35 -03:00
Roberto Ierusalimschy 8554baeacf small changes in 'luaV_execute' to make cases more regularly formatted 2010-05-12 17:31:33 -03:00
Roberto Ierusalimschy f5b7f077ec added comments to '#else' and '#endif' in long conditionals 2010-05-12 11:17:36 -03:00
Roberto Ierusalimschy e924a7f9ea new API function 'lua_absindex' 2010-05-12 11:09:20 -03:00
Roberto Ierusalimschy 4fd76b8148 avoid "strong" cast 2010-05-11 17:49:26 -03:00
Roberto Ierusalimschy de0f51a02c wrong type being assigned (not detected because of obj2gco macro) 2010-05-11 17:48:36 -03:00
Roberto Ierusalimschy 0567221848 udata in 'tobefnz' list be have old bit on (it will be cleared
when udata is moved to 'allgc' list)
2010-05-10 15:24:36 -03:00
Roberto Ierusalimschy 1c1a98e872 corrected some places where an old object could end up in front
of a new one + minimal documentation about this problem
2010-05-10 15:23:45 -03:00
Roberto Ierusalimschy c006f085d9 new macro 'resetoldbit' 2010-05-10 13:46:49 -03:00
Roberto Ierusalimschy a48e330f37 macros 'lua_number2int' and 'lua_number2uint' for Visual Studio
corrected and tested
2010-05-10 13:38:58 -03:00
Roberto Ierusalimschy dcc070683c avoid reserving LUA_RIDX_LAST slots in any table used by reference
system. Store free list in a field indexed by a unique name,
instead of using a numerical index.
2010-05-10 12:25:02 -03:00
Roberto Ierusalimschy 2d81cfa4e1 corrected definition of 'lua_register' (there is no LUA_ENVIRONINDEX
anymore)
2010-05-10 10:50:20 -03:00
Roberto Ierusalimschy 0bccf03d7e slightly better definition for 'changenvalue' 2010-05-07 15:44:46 -03:00
Roberto Ierusalimschy ad2b5decc8 'lua_assert' can be empty when assertions are off 2010-05-07 15:44:12 -03:00
Roberto Ierusalimschy 32c1764b5d slightly better definition for 'isgray' 2010-05-07 15:43:51 -03:00
Roberto Ierusalimschy de97177744 avoid 'else assert' (which may result in an empty else) 2010-05-07 15:43:24 -03:00
Roberto Ierusalimschy fa2ddb070a details (to avoid too long strings in assertions) 2010-05-07 15:23:17 -03:00
Roberto Ierusalimschy 0fac33da9e bug: incremental sweep was not cleaning old bits (as it stopped in the
first old object) + bug: moving udata to 'udgc' list might put old
object in front a new one + some new macros + generational mode may
be in 'pause' state (it just skips 'markroot')
2010-05-07 15:19:36 -03:00
Roberto Ierusalimschy 8e1bdda66a stupid bug when calling 'luaC_changemode' (in function lua_gc) 2010-05-07 15:10:01 -03:00
Roberto Ierusalimschy 9c1347e647 more tests in 'lua_checkmemory' + more information in function
'gccolor'
2010-05-07 15:09:23 -03:00
Roberto Ierusalimschy b373a40133 new macro 'isgenerational' + new macro 'isold' + better deffinition
for 'isdead', compatible with the code used by 'sweeplist'
2010-05-07 15:08:05 -03:00
Roberto Ierusalimschy 25951e0ea5 some cleaning in 'sweeplist' (threads do not need to be traversed
if they are going to be collected + use of bit masks to unify
differences in generational and incremental modes)
2010-05-06 15:18:07 -03:00
Roberto Ierusalimschy a4f20e3c8b comments 2010-05-06 15:17:22 -03:00
Roberto Ierusalimschy 8c583c61a3 more tests in 'lua_checkmemory' 2010-05-06 15:16:57 -03:00
Roberto Ierusalimschy d2ea5b00b7 new function 'luaC_changemode' +
bug: objects entering the 'allgc' list must have their OLDBIT cleared
(upvalues being cleared) + bug: in 'checkSizes', KGC_EMERGENCY is
stored in 'gckind' field, not in 'gcstate' + current white changes when
entering sweep phase (so there are dead objects only in that phase)
2010-05-05 15:58:36 -03:00
Roberto Ierusalimschy d77898597e new function 'luaC_changemode' 2010-05-05 15:53:41 -03:00
Roberto Ierusalimschy 237f755dca typos in comments 2010-05-05 15:49:56 -03:00
Roberto Ierusalimschy 7444b5a1d5 better documentation of GC costs 2010-05-05 10:39:58 -03:00
Roberto Ierusalimschy e7ce7e1850 changes in patch to monitor garbage collection 2010-05-04 15:10:02 -03:00
Roberto Ierusalimschy 3e662cec89 full GC must run finalizers only after finishing everything else
(including a return to generational mode if needed)
2010-05-04 15:09:06 -03:00
Roberto Ierusalimschy fde866e303 details (comments) 2010-05-04 14:25:19 -03:00
Roberto Ierusalimschy 2d7a81a204 missing parentheses in declaration 2010-05-04 14:21:08 -03:00
Roberto Ierusalimschy 658ea8752b no need to handle '\0' differently from other control chars in
format '%q'
2010-05-04 14:20:33 -03:00
Roberto Ierusalimschy aa73403ba4 no need of a KGC_FORCED collection kind; it has the same behavior of
a normal collection
2010-05-03 14:39:48 -03:00
Roberto Ierusalimschy 0c27de2e7b no more 'finalize' phase in GC; finalizers are called along the
entire cycle
2010-05-03 14:33:39 -03:00
Roberto Ierusalimschy d25f7f9d78 items in 'tobefnz' are kept black (as before recent change) and changed
to white only when needed (being moved to 'allgc' when not keeping
invariant).
2010-05-03 08:55:40 -03:00
Roberto Ierusalimschy 85555646e3 invariant must be kept in atomic 'phase' too 2010-05-03 08:24:30 -03:00
Roberto Ierusalimschy 4d871ee973 "gray lists" only need to be valid when 'keepinvariant' is true 2010-04-30 15:37:14 -03:00
Roberto Ierusalimschy b9e1dec2cb added comment explaining a bit about the invariants of the collector 2010-04-30 15:36:45 -03:00
Roberto Ierusalimschy dc2b8a0073 detail 2010-04-30 15:36:22 -03:00
Roberto Ierusalimschy 9a9fe42deb wrong comment 2010-04-30 15:17:24 -03:00
Roberto Ierusalimschy 0062db1e06 default PAUSE should be 200 (differences may be corrected in
internal multiplers)
+ check for unbilt stack equal the one used by lgc.c
2010-04-30 11:22:23 -03:00
Roberto Ierusalimschy 23001d8607 nasty GC bug: upvalue must be turned white when not keeping invariant,
but barrier was not being called when uv->v were already white.
2010-04-29 18:43:36 -03:00
Roberto Ierusalimschy 5d79c6684b removed commented-out debugging code 2010-04-29 18:42:33 -03:00
Roberto Ierusalimschy 3410dcd375 new way to control GC speed 2010-04-29 14:35:10 -03:00
Roberto Ierusalimschy 5a7a0c72d8 'luaC_linkupval' embedded into call site 2010-04-29 14:34:35 -03:00
Roberto Ierusalimschy ee7478e884 improved 'lua_checkmemory', with better control over gray objects 2010-04-29 14:33:51 -03:00
Roberto Ierusalimschy aaa5d7adab 'luaC_linkupval' moved into 'lfunc.c' code + new way to control GC speed 2010-04-29 14:32:40 -03:00
Roberto Ierusalimschy 3eb1788bb4 new way to control GC speed (keeping a 'debt' counter) 2010-04-29 14:31:31 -03:00
Roberto Ierusalimschy 00114a95b2 lots of new comments + small changes in loop controls + other small
"janitor work"
2010-04-26 14:58:00 -03:00
Roberto Ierusalimschy 4aaf0ef75c "to-be-finalized" objects marked and sweeped like all other objects 2010-04-20 17:15:30 -03:00
Roberto Ierusalimschy ed720d09f3 upvalue barriers for Lua functions must act on the upvalue itself,
not on its closure
2010-04-20 17:14:50 -03:00
Roberto Ierusalimschy 376e939ef6 missing parentheses around 'luaL_pushresultsize' declaration 2010-04-19 15:52:15 -03:00
Roberto Ierusalimschy 9d28e2b3e5 bug with io.read(op, "*n") 2010-04-19 15:04:58 -03:00
Roberto Ierusalimschy 49ca1f7083 allows thread switches (when/if there are thread switches) in the same
places that finalizers can run (so they should be safe...)
2010-04-19 14:58:46 -03:00
Roberto Ierusalimschy 4db6f20770 ensure that 'luai_userstatethread' is always called (even if
'stack_init' throws a memory error)
2010-04-19 14:40:13 -03:00
Roberto Ierusalimschy cca71912e6 'gcinfo' was deprecated in version 5.0. 2010-04-19 14:02:02 -03:00
Roberto Ierusalimschy 8003e9544d 'string.format' may get buffer as an argument when there are
missing arguments and format string is too long
2010-04-19 13:39:25 -03:00
Roberto Ierusalimschy 973d81efb3 complete control over number of each kind of object allocated 2010-04-19 13:38:25 -03:00
Roberto Ierusalimschy 26d4a73962 with light C functions, 'pairs' does not need to keep 'next' as an
upvalue.
2010-04-19 13:36:06 -03:00
Roberto Ierusalimschy 99a39f6f4a tells the allocation function that the first block is a thread 2010-04-19 13:34:46 -03:00
Roberto Ierusalimschy 1bb407e494 in lua_gc/step, 'luaC_step' changes GCthreshold, so there was little
control over the real step size.
2010-04-19 13:33:19 -03:00
Roberto Ierusalimschy 53f9499f7f "light C function" is a better name than "C-function pointer" 2010-04-18 10:22:48 -03:00
Roberto Ierusalimschy 575befc394 comparsion tag methods follow the same rule as other binary TMs 2010-04-18 10:15:11 -03:00
Roberto Ierusalimschy e7ffb1b501 macro LUA_USE_LONGJMP allows choosing longjmp when compiling Lua as
C++ code
2010-04-18 09:41:35 -03:00
Roberto Ierusalimschy c066ac10a9 better line numbers for function calls and unary/binary operators +
null statement + no more "ambiguous syntax" restriction
2010-04-17 09:46:32 -03:00
Roberto Ierusalimschy 1e6940f291 'gcstate' now also runs collector until given state + small changes
in 'testC' to test 'lua_topointer' and 'lua_tocfunction'
2010-04-16 14:42:49 -03:00
Roberto Ierusalimschy d8d81ba891 new escape sequence '\*' + several comments + moving options from
switch default into cases (as now locale is fixed)
2010-04-16 09:31:07 -03:00
Roberto Ierusalimschy cf22133b69 no need to avoid calling ctype functions as now they are implemented
by us (no inefficiencies due to accessing locale information)
2010-04-15 16:44:43 -03:00
Roberto Ierusalimschy b7be05ad27 invalid instructions "cannot" happen 2010-04-15 16:43:43 -03:00
Roberto Ierusalimschy afdb19ac82 no more 'ccall' nor 'cpcall' functions. (With light C functions they
are obsolete.)
2010-04-14 12:14:21 -03:00
Roberto Ierusalimschy 7dfa4cd655 first implementation of light C functions 2010-04-14 12:13:48 -03:00
Roberto Ierusalimschy fc6203ee43 BUG: 'string.format' may get buffer when there are missing arguments 2010-04-12 13:13:02 -03:00
Roberto Ierusalimschy b2dd246b7a better control in 'totalmem' over choosing counters 2010-04-12 13:07:39 -03:00
Roberto Ierusalimschy d20ff60615 new macro LUA_NUMTAGS 2010-04-12 13:07:29 -03:00
Roberto Ierusalimschy d41b467320 check memory allows strings to live in the main GC list (it should
work ok).
2010-04-12 09:42:07 -03:00
Roberto Ierusalimschy 4541243355 patterns now accept '\0' as a regular character 2010-04-12 09:00:50 -03:00
Roberto Ierusalimschy 9100f7479a new implementation for Generic Buffer manipulation (using userdata as
temporary buffer space)
2010-04-09 13:14:46 -03:00
Roberto Ierusalimschy 055104f5b6 keep memory-error message in the global state, so that its use
does not depend on Lua internalizing strings to avoid a string
creation on memory errors
2010-04-08 14:16:46 -03:00
Roberto Ierusalimschy 28aa733c15 macro 'eqstr' was being used to compare non-string entities 2010-04-08 14:06:33 -03:00
Roberto Ierusalimschy 6abde1b05a no need to keep "_ENV" name in global state (can be kept in lex state) 2010-04-05 13:35:37 -03:00
Roberto Ierusalimschy d394d5536a new macro 'eqstr' 2010-04-05 13:26:37 -03:00
Roberto Ierusalimschy a2f98314a3 'lua_pushstring' now uses 'luaS_new' 2010-04-05 11:21:38 -03:00
Roberto Ierusalimschy a09c8d7beb cannot sweep main thread in sweepstring phase 2010-04-05 11:15:35 -03:00
Roberto Ierusalimschy f80ff7a336 'luaS_new' changed from macro to function 2010-04-03 17:24:18 -03:00
Roberto Ierusalimschy a08fc34ee4 avoid using 'luaS_new' when can use 'luaS_newlstr' 2010-04-02 12:39:07 -03:00
Roberto Ierusalimschy d00d2eaf51 small changes in 'luaO_pushvfstring' 2010-04-02 12:30:27 -03:00
Roberto Ierusalimschy 11126422d9 option to return GC to normal (incremental, non generational) mode 2010-04-02 12:19:19 -03:00
Roberto Ierusalimschy e54668b696 added proper code to trace garbage collection 2010-04-02 11:37:41 -03:00
Roberto Ierusalimschy 9eb832de54 work related to hooks moved from 'luaV_execute' to 'traceexec' 2010-03-29 17:45:49 -03:00
Roberto Ierusalimschy 82a1f5d354 comments 2010-03-29 14:44:31 -03:00
Roberto Ierusalimschy a8d3aa14fd global table now is only kept in the registry 2010-03-29 14:43:14 -03:00
Roberto Ierusalimschy 064e406f67 no more fenvs! 2010-03-26 17:58:11 -03:00
Roberto Ierusalimschy 5c87f61e6b major collections in generational mode 2010-03-25 16:37:23 -03:00
Roberto Ierusalimschy 3aa9598177 'mainthread' is not inserted in the 'allgc' list anymore, but swept
separately.
2010-03-25 10:06:36 -03:00
Roberto Ierusalimschy 64d39ed1b6 generational mode no longer sweep old objects 2010-03-24 12:51:10 -03:00
Roberto Ierusalimschy 4433dbb5f5 userdata with finalizers are kept in a separated list ('udgc'), instead
of at the end of 'rootgc' (which was renamed to 'allgc', as it is not
"root" in the usual meaning for collectors)
2010-03-24 10:07:01 -03:00
Roberto Ierusalimschy 5cb128ea54 BUG: emergency collector might resize 'strt' (string table) when
creating a new string
+ atomic and markroot steps has some cost
+ full collection must leave collector in proper state when mode
is generational
2010-03-23 17:16:06 -03:00
Roberto Ierusalimschy 74123e9686 draft version of a generational mode for garbage collection. (Not well
tested; no major collections; ...)
2010-03-22 15:28:03 -03:00
Roberto Ierusalimschy 9c196bebad detail (wrong comment about LUAI_GCPAUSE) 2010-03-22 14:45:55 -03:00
Roberto Ierusalimschy 28b2566c97 'lua_assert' not visible from libraries 2010-03-22 14:28:31 -03:00
Roberto Ierusalimschy caf74dd731 'cpcall' renamed to 'ccall' as it does not do a protected call 2010-03-19 18:04:17 -03:00
Roberto Ierusalimschy 62840c5fad 'ipairs' is deprecated 2010-03-19 12:52:48 -03:00
Roberto Ierusalimschy 5ca7cdd709 for compatibility only: 'module' changes the first upvalue of
calling function to affect its environment
2010-03-19 12:02:34 -03:00
Roberto Ierusalimschy 1514e49d43 avoid using function environments in C libraries (as it probably will
be deprecated)
2010-03-17 18:37:37 -03:00
Roberto Ierusalimschy 22ef84b6c8 '_ENV' name permanently stored in global state for easier access 2010-03-13 12:55:42 -03:00
Roberto Ierusalimschy 63a2b62468 must include 'string.h' because a macro uses 'strlen' 2010-03-13 12:55:01 -03:00
Roberto Ierusalimschy 489253d753 better definitions for lua_[gs]etglobal + less uses of ENVIRONINDEX 2010-03-13 00:57:46 -03:00
Roberto Ierusalimschy 25c557ec63 first version of _ENV; no more global variables 2010-03-12 16:14:06 -03:00
Roberto Ierusalimschy f292760f12 small optimization in luaL_addlstring (avoid adding chars one by one)
(suggested by Chuck Coffing)
2010-03-12 15:59:32 -03:00
Roberto Ierusalimschy 1124cb1247 first step towards _ENV: all chunks have an puvalues _ENV with the
global table
2010-03-08 13:55:52 -03:00
Roberto Ierusalimschy c295147874 when finding a 'name' for a function, handle the case when the function
is a for iterator
2010-03-05 11:01:29 -03:00
Roberto Ierusalimschy e560ac4862 when searching for a variable name, look existing upvalues before
goingg to upper levels
2010-03-04 15:12:57 -03:00
Roberto Ierusalimschy 915a9a912c just in case, better to flush error messages 2010-03-03 15:53:02 -03:00
Roberto Ierusalimschy ae0a5e2142 new option '*L' for io.read + options for io.lines 2010-03-03 15:48:57 -03:00
Roberto Ierusalimschy 347f0c33d1 avoid 'continue' unless necessary 2010-02-27 18:16:24 -03:00
Roberto Ierusalimschy 622e448710 removed useless test (argv[i] cannot be NULL when i<argc) 2010-02-27 18:15:36 -03:00
Roberto Ierusalimschy 0fe2576a39 new instructions to optimize indexing on upvalues 2010-02-26 17:40:29 -03:00
Roberto Ierusalimschy d08d237a49 detail: in loadfile read function, no need to return NULL on EOF;
size ==0 is enough to signal EOF.
2010-02-18 17:37:57 -02:00
Roberto Ierusalimschy 64a7ec987c avoid using 'ungetc' in loadfile 2010-02-18 17:32:41 -02:00
Roberto Ierusalimschy 4274738e81 new macro 'luai_writestringerror' 2010-02-18 17:18:41 -02:00
Roberto Ierusalimschy 0d7d559dcc no need to flush either stderr or \n-terminated outputs 2010-02-11 15:12:27 -02:00
Roberto Ierusalimschy af512ad6da use of 'conventional' names for shift and rotate operations +
right/left versions for them
2010-02-11 13:55:29 -02:00
Roberto Ierusalimschy d27108ccd5 removed support for '#fist-line comment' on binary files (as binary
files do not have lines...)
2010-02-11 13:52:50 -02:00
Roberto Ierusalimschy a838b3b496 better usage messages, showing entire offending argument 2010-02-09 09:58:57 -02:00
Roberto Ierusalimschy 4c54cd3a10 when yielding, original 'func' value must be kept and restored so
that 'poscall' puts results in the right slot.
2010-02-09 09:56:29 -02:00
Roberto Ierusalimschy c8ff7de7f0 field 'oldtop' renamed to 'extra', as it can be used for other
purposes
2010-02-09 09:55:37 -02:00
Roberto Ierusalimschy 3bae8e047c typo (thanks to Gavin) 2010-02-05 17:09:09 -02:00
Roberto Ierusalimschy 4f5f2fe367 new function 'luaL_cpcall' 2010-01-21 14:49:21 -02:00
Roberto Ierusalimschy 01586d539e typo in comment 2010-01-21 14:31:24 -02:00
Roberto Ierusalimschy c8ab34ab7a better messages for invalid options 2010-01-21 14:31:06 -02:00
Roberto Ierusalimschy 36ab1ee10c __unm metamethod gets nil as its 2nd parameter 2010-01-15 14:23:58 -02:00
Roberto Ierusalimschy 193ce46970 table.pack was locking last result, avoiding its collection 2010-01-13 17:59:10 -02:00
Roberto Ierusalimschy b678f246a4 HINSTANCE -> HMODULE (they are the same thing, but the MS documentation
uses the latter) + LoadLibrary -> LoadLibraryEx with optional arguments,
to allow the option LOAD_WITH_ALTERED_SEARCH_PATH
2010-01-13 14:30:27 -02:00
Roberto Ierusalimschy f270e7f044 warnings that are not compatible with C++ separated from other warning
options
2010-01-13 14:19:54 -02:00
Roberto Ierusalimschy 070d3743a7 "no value" added to array luaT_typenames + occurrences of "userdata"
in that array unified in a single address
2010-01-13 14:18:25 -02:00
Roberto Ierusalimschy 0c7de97d47 correct error message when yielding from outside a coroutine 2010-01-13 14:17:32 -02:00
Roberto Ierusalimschy 900b7d4514 on 64-bit machines, an address may not fit into a 'long', so it
is better to convert from pointer to void to pointer to function
directly, even if ANSI C does not like it.
2010-01-13 14:09:05 -02:00
Roberto Ierusalimschy 91f0b20a0e missing standard defines 2010-01-12 17:40:02 -02:00
Roberto Ierusalimschy e4b4623abc 'searchpath' changes dots into directory separators 2010-01-11 15:55:25 -02:00
Roberto Ierusalimschy cef96b73e1 added casts from int to enumerations to follow C++ rules 2010-01-11 15:38:30 -02:00
Roberto Ierusalimschy 427e01eb63 removed useless initialization 2010-01-11 15:37:59 -02:00
Roberto Ierusalimschy d320c908d0 conversion from pointer to void to pointer to function seems more
"correct" if done through an integral type (because conversions
between pointers and numbers are allowed, only "implementation
defined").
2010-01-11 15:34:59 -02:00
Roberto Ierusalimschy 8bfc696676 missing 'external' in variable declaration 2010-01-11 15:33:09 -02:00
Roberto Ierusalimschy 97a35e70af pathes corrected to 5.2 2010-01-11 15:15:30 -02:00
Roberto Ierusalimschy 03b556b963 corrected copyright notice to 2010 2010-01-11 15:15:11 -02:00
Roberto Ierusalimschy 572b94bbcb include of 'windows.h' moved to where it is needed 2010-01-11 15:11:24 -02:00
Roberto Ierusalimschy 692209fa8d Dynamic C functions should be created with the global table as their
initial environments
2010-01-11 15:06:31 -02:00
Roberto Ierusalimschy 953d499ea2 changed macro lua_number2int for Windows (added brackets; some recent
compilers complain about the old format) + added missing definition
for 'lua_number2int' in Windows case.
2010-01-11 14:35:20 -02:00
Roberto Ierusalimschy a541ada194 "-"-trick in C packages now accept name-v13... 2010-01-11 14:10:47 -02:00
Roberto Ierusalimschy 55d3138397 removed old prototype for 'luaI_openlib' (which does not exist anymore) 2010-01-11 14:00:45 -02:00
Roberto Ierusalimschy e74e56f2b1 better may to force recompilation when makefile changes 2010-01-08 18:05:36 -02:00
Roberto Ierusalimschy 1ebf109c53 'setobj' must assing fields one by one, to allow trick of using
pad space in table keys
2010-01-08 18:00:20 -02:00
Roberto Ierusalimschy f75be1cb28 removed parentheses around some function names in their definitions 2010-01-08 13:16:56 -02:00
Roberto Ierusalimschy 16d2ad88fe some changes in compatibility macros: added LUA_COMPAT_ALL + compatibility
macros from lua.h and lauxlib.h moved to luaconf.h
2010-01-06 13:15:04 -02:00
Roberto Ierusalimschy f3a6815000 compatibility code removed or moved to luaconf.h 2010-01-06 13:14:15 -02:00
Roberto Ierusalimschy 19f8c87375 compatibility code moved to luaconf.h 2010-01-06 13:08:00 -02:00
Roberto Ierusalimschy 5bcfe0c700 new debug info 'isvararg' and 'nparams' 2010-01-06 12:42:35 -02:00
Roberto Ierusalimschy 8cd395564c no need to use two different defines (LUA_DL_DLOPEN and LUA_USE_DLOPEN) 2010-01-06 12:35:17 -02:00
Roberto Ierusalimschy 389c890ed3 again changing macro to function to save a few bytes 2010-01-06 09:48:02 -02:00
Roberto Ierusalimschy e3866afa97 macro 'luaY_checklimit' changed into a function (and renamed 'checklimit').
It makes no sense to trade space for time in the parser.
2010-01-05 16:46:58 -02:00
Roberto Ierusalimschy 25189b420d field 'nups' in struct 'lua_Debug' changed from 'int' to 'unsigned
char' to save some space (even C functions cannot have more than
maxchar upvalues).
2010-01-05 16:33:26 -02:00
Roberto Ierusalimschy cec25167d1 new api_check that 'pcallk' cannot be called inside hooks 2010-01-04 16:17:51 -02:00
Roberto Ierusalimschy 1fd4c482a0 reorganization of switch in function 'match' (details) 2010-01-04 14:37:19 -02:00
Roberto Ierusalimschy 35e729fa6d comments + small details 2010-01-04 14:36:39 -02:00
Roberto Ierusalimschy 0dc09cb42e 'unpack' moved to table library (and therefore "renamed" to
'table.unpack'.
2009-12-28 14:30:31 -02:00
Roberto Ierusalimschy cc1cbd19a0 'lua_cpcall' is deprecated + other small changes in 'pmain' (comments
and reordering to check arguments before running any Lua code)
2009-12-22 14:47:12 -02:00
Roberto Ierusalimschy cb3f95d516 'lua_cpcall' is deprecated 2009-12-22 14:47:00 -02:00
Roberto Ierusalimschy f84b575cfa no more pseudoindex LUA_GLOBALSINDEX; global table now accessible
through registry
2009-12-22 13:32:50 -02:00
Roberto Ierusalimschy 3cb343efd6 code for error message for 'setn' removed 2009-12-18 14:53:12 -02:00
Roberto Ierusalimschy ec0fc1a13b missing parentheses around 'lua_version' + moving typdef's before
the extra include
2009-12-18 13:32:36 -02:00
Roberto Ierusalimschy c3a6f3fa1c 'lua_objlen' replaced by 'lua_rawlen', 'lua_len', and 'luaL_len' 2009-12-17 14:20:01 -02:00
Roberto Ierusalimschy 0bbdddc86b allocator function receives the tag of object being allocated in 'osize'
when 'ptr' is NULL.
2009-12-17 13:46:44 -02:00
Roberto Ierusalimschy b3b8dfaaea yet more options moved from luaconf.h into internal files 2009-12-17 11:08:51 -02:00
Roberto Ierusalimschy adc6a4865b macro name change: LUA_INIT->LUA_INIT_VAR 2009-12-17 11:07:41 -02:00
Roberto Ierusalimschy 2108754e46 macro name change: LUA_PATH->LUA_PATH_VAR, LUA_CPATH->LUA_CPATH_VAR,
LUA_PATHSEP->LUA_PATH_SEP, LUA_EXECDIR->LUA_EXEC_DIR
2009-12-17 11:06:47 -02:00
Roberto Ierusalimschy 46f1429936 more options moved from luaconf.h into internal files 2009-12-17 10:50:20 -02:00
Roberto Ierusalimschy e0f9d1c8f5 removed export of function only for coco 2009-12-17 10:28:57 -02:00
Roberto Ierusalimschy de6fc75d63 several configuration options that do not change often moved out of
luaconf.h and into more internal files
2009-12-17 10:26:09 -02:00
Roberto Ierusalimschy 2af0d3b459 allocator function receives the tag of object being allocated in 'osize'
when 'ptr' is NULL.
2009-12-16 14:42:58 -02:00
Roberto Ierusalimschy 9fbe0690fb base-level C use global table as its environment 2009-12-15 09:25:36 -02:00
Roberto Ierusalimschy a25b8ff69c detail ('lua_tolstring' instead of lua_objlen) 2009-12-15 09:25:16 -02:00
Roberto Ierusalimschy 15b823ce4f cleaner way to add extra space in a lua state. 2009-12-14 13:27:30 -02:00
Roberto Ierusalimschy 8da245bfd2 better to keep GC state numbers sequential, to optimize switch in
'singlestep'
2009-12-11 19:31:14 -02:00
Roberto Ierusalimschy a2a2abcba4 new function 'luaC_runtilstate' to advance GC until a "valid" state 2009-12-11 17:14:59 -02:00
Roberto Ierusalimschy 2e51792596 avoid using deprecated macros lua_[gs]etglobal 2009-12-11 11:40:44 -02:00
Roberto Ierusalimschy 3a9ae612a4 macro 'ngcotouv' is the same as 'gco2uv', so it was removed 2009-12-11 11:39:34 -02:00
Roberto Ierusalimschy 9db693a57c detail (comment) 2009-12-10 17:00:33 -02:00
Roberto Ierusalimschy 1375435e4a several new features in testC to allow better testing of lua_resume
at the C API level
2009-12-10 16:21:28 -02:00
Roberto Ierusalimschy 2bb19ccf08 reordering of some functions + cleaner way to code lua_resume/resume +
small bug in lua_resume (in case of calling errors lua_resume should
remove only new arguments from the stack and push error message).
2009-12-10 16:20:07 -02:00
Roberto Ierusalimschy 64d5df7772 detail (lua_resume should empty coroutine stack even if they do not
fit into caller stack)
2009-12-10 16:17:37 -02:00
Roberto Ierusalimschy 2643da67c6 error messages from 'lua_resume' must be generated in protected mode,
to avoid raising memory errors
2009-12-08 16:59:24 -02:00
Roberto Ierusalimschy ed117bb42a lua_checkstack does not raise memory errors (instead it signals them) 2009-12-08 14:15:43 -02:00
Roberto Ierusalimschy a4472490bc new 'table.pack' function 2009-12-07 13:50:27 -02:00
Roberto Ierusalimschy 86312e1a7d lua_objlen calls __len metamethod on tables (if present) 2009-12-07 13:49:47 -02:00
Roberto Ierusalimschy df1dc3f1f5 strings in C scripts may be delimited by quotes + new functionality to
set C scripts as C hooks
2009-12-01 14:49:48 -02:00
Roberto Ierusalimschy 513d0258d9 details 2009-12-01 14:31:04 -02:00
Roberto Ierusalimschy cfa8bc3ca4 continuations may be upvalues too 2009-11-27 13:39:31 -02:00
Roberto Ierusalimschy a654e82f5c coroutines may have C bodies 2009-11-27 13:38:51 -02:00
Roberto Ierusalimschy 3e41afcec5 extra api checks for number of returns of C functions and for lua_yield 2009-11-27 13:37:59 -02:00
Roberto Ierusalimschy 3acf5ec5a1 update of file dependencies (gcc -MM) 2009-11-27 12:39:31 -02:00
Roberto Ierusalimschy 93695db903 'table.maxn' deprecated 2009-11-26 15:35:13 -02:00
Roberto Ierusalimschy 9107dd115c no more compatibility code for 'string.gfind' 2009-11-26 14:49:28 -02:00
Roberto Ierusalimschy dc4c459546 a few new warnings 2009-11-26 14:36:55 -02:00
Roberto Ierusalimschy 19a6c38745 detail in 'currentpc' (only needs to work for Lua functions) 2009-11-26 13:34:15 -02:00
Roberto Ierusalimschy 3c4d970a7b comment typos 2009-11-26 09:39:20 -02:00
Roberto Ierusalimschy b0f2b288a6 new scheme for debug info about tail calls: no more 'fake' stack entries,
but stack entry knows whether it was tail called
2009-11-25 13:27:51 -02:00
Roberto Ierusalimschy 2b25489b47 'notail' -> 'noextrachars' ('notail' may confuse with tail calls) 2009-11-24 16:05:12 -02:00
Roberto Ierusalimschy a6f465f558 new mark LUAMOD_API for all luaopen_* functions 2009-11-24 10:05:44 -02:00
Roberto Ierusalimschy 9a41506b8f 'os.exit' should close state only when second argument is true 2009-11-23 16:20:38 -02:00
Roberto Ierusalimschy 9a6d9ea57a GC may get stuck during a parser and avoids proper resizing of the
string table, making its lists grow too much and degrading performance.
2009-11-23 12:59:30 -02:00
Roberto Ierusalimschy 062e809e54 new macros 'LUAI_DDEC'/'LUAI_DDEF' to better control declarations and
definitions of non-static variables
2009-11-19 17:06:52 -02:00
Roberto Ierusalimschy b4c1824824 'luaV_arith' must be marked 'LUAI_FUNC' (as all non-static functions) 2009-11-19 17:04:58 -02:00
Roberto Ierusalimschy 2e5ef6a9fb new macro 'isdummy' 2009-11-19 15:54:07 -02:00
Roberto Ierusalimschy 1dea393058 small corrections for 'luaall.c' 2009-11-19 14:26:52 -02:00
Roberto Ierusalimschy 45dec34597 comments 2009-11-19 14:26:29 -02:00
Roberto Ierusalimschy b40a38a8ac remove declaration of removed function 2009-11-19 14:24:41 -02:00
Roberto Ierusalimschy ac899a6307 'debug.joinupvalue' -> 'debug.upvaluejoin' 2009-11-18 13:50:18 -02:00
Roberto Ierusalimschy ce444bff33 (huge) simplification of GC management 2009-11-18 11:13:47 -02:00
Roberto Ierusalimschy 2d5931ebc8 ensure that reader function cannot yield during parsing 2009-11-17 14:46:44 -02:00
Roberto Ierusalimschy 35fa276099 parser/scanner keep GC running 2009-11-17 14:33:38 -02:00
Roberto Ierusalimschy b51d76ce8d when doing hard memory tests, perform a full GC at every possible step 2009-11-17 09:56:03 -02:00
Roberto Ierusalimschy 95020afb63 'module' returns the new module (to be used with lexical environments) 2009-11-16 13:51:19 -02:00
Roberto Ierusalimschy c5050b1c41 functions 'getfenv' and 'setfenv' are deprecated 2009-11-16 13:51:03 -02:00
Roberto Ierusalimschy b9063a08f5 new function 'loadin' 2009-11-13 15:01:40 -02:00
Roberto Ierusalimschy 7fe405739c renaming: 'lua_upvaladdr' -> 'lua_upvalueid',
'lua_upvaljoin' -> 'lua_upvaluejoin'
2009-11-09 17:10:48 -02:00
Roberto Ierusalimschy 1ce819333d new option 'isrunning' for 'lua_gc' (and 'collectgarbage') 2009-11-09 16:55:17 -02:00
Roberto Ierusalimschy 88eb901f81 registry and global table may be changed through the API without a
write barrier, so GC should visit them in the atomic phase.
2009-11-09 16:29:21 -02:00
Roberto Ierusalimschy 2583bac3d3 several small changes to simplify changing TValue if needed 2009-11-06 15:09:27 -02:00
Roberto Ierusalimschy 63a3b1a1eb macro 'checkvalref' redefined as function (to avoid too long macros) 2009-11-06 15:08:43 -02:00
Roberto Ierusalimschy fbf866a1a5 macro 'gkey' returns a "real" TValue* 2009-11-06 15:07:48 -02:00
Roberto Ierusalimschy 49a67c6d3f new macro 'NILCONSTANT' to initialize nil constants 2009-11-06 15:07:12 -02:00
Roberto Ierusalimschy a921d81033 avoid using 'ttype' when there is an explicit test + macro 'checkdeadkey'
to avoid repetitions
2009-11-06 15:06:19 -02:00
Roberto Ierusalimschy 155dd01163 avoid using 'ttype' when there is an explicit test 2009-11-06 15:05:34 -02:00
Roberto Ierusalimschy 599789a907 better to enclose macros in 'if' bodies with brackets 2009-11-06 15:03:37 -02:00
Roberto Ierusalimschy 9756f56354 better control over accesses to TValue fields 2009-11-05 15:43:54 -02:00
Roberto Ierusalimschy b7d5f18d71 api functions to manipulate upvalues do not need to check their
arguments (the caller must check them before calling)
2009-11-05 15:26:00 -02:00
Roberto Ierusalimschy 5598b2bc55 new functions to identify and join upvalues 2009-11-05 14:48:31 -02:00
Roberto Ierusalimschy 77077b39d5 comment explaining OP_VARARG was wrong (and corresponding code was not
very clear)
2009-10-28 10:20:07 -02:00
Roberto Ierusalimschy 5bc91c6405 no more one environment per thread: all threads share a single global
environment
2009-10-23 17:12:19 -02:00
Roberto Ierusalimschy f5073de0a7 'ipairs' goes until length of array instead of stopping at the first nil 2009-10-23 10:50:25 -02:00
Roberto Ierusalimschy f6ed285cf2 new hash for doubles based on frexp, to avoid low-level tricks 2009-10-23 10:31:12 -02:00
Roberto Ierusalimschy 1448e736f0 better documentation for constructor syntax 2009-10-14 13:43:11 -03:00
Roberto Ierusalimschy 6e415e9387 local function definition does not need to correct debug information 2009-10-13 16:35:42 -03:00
Roberto Ierusalimschy b114c99a60 two small bugs: 'debug.getinfo' did not consider negative indices as out
of range + 'debug.[gs]etlocal' crash on tail calls
2009-10-13 16:07:40 -03:00
Roberto Ierusalimschy 916587508c parser keeps list of active local variables in a single dynamic array,
therefore saving C stack space
2009-10-11 17:02:19 -03:00
Roberto Ierusalimschy a5382b763c new function lua_copy 2009-10-05 13:44:33 -03:00
Roberto Ierusalimschy ba21aa8b2b 'cpcall' must ensure correct environment for called function 2009-09-30 17:49:47 -03:00
Roberto Ierusalimschy d119cf3035 a few more instructions to testC (func2udata and getfield) 2009-09-30 17:49:25 -03:00
Roberto Ierusalimschy 0ac3d07ea6 first implementation of lexical environments 2009-09-30 12:38:37 -03:00
Roberto Ierusalimschy 5938212748 information about upvalues (where they come from) kept in Proto structure,
instead of sequence of pseudo-opcodes after OP_CLOSURE
2009-09-28 13:32:50 -03:00
Roberto Ierusalimschy 1829911d7c some operations may shrink g->totalbytes so g->estimate must be
more flexible
2009-09-28 10:50:34 -03:00
Roberto Ierusalimschy bed2cb725a initialize g->estimate (just in case) 2009-09-28 10:50:19 -03:00
Roberto Ierusalimschy ab75bd23ee handle extended opcodes (with OP_EXTRAARG) when checking metamethod
calls
2009-09-28 09:37:17 -03:00
Roberto Ierusalimschy cee94df6e0 function list in luaL_register may be NULL for an empty list 2009-09-28 09:36:40 -03:00
Roberto Ierusalimschy fcc46467fa limit of constants per function changed to 2^26 using extra arguments
to opcodes LOADK, GETGLOBAL, and SETGLOBAL
2009-09-23 17:33:05 -03:00
Roberto Ierusalimschy f8e354e240 detail (space between function name and its parameter list) 2009-09-23 17:14:00 -03:00
Roberto Ierusalimschy a650378822 'cpcall' reimplemented as a predefined value in the registry 2009-09-21 09:09:52 -03:00
Roberto Ierusalimschy 99182c6872 references must start after predefined values in the registry 2009-09-18 15:58:45 -03:00
Roberto Ierusalimschy 67cae2854c 'lua_mainthread' replaced by new preregistered value LUA_RIDX_MAINTHREAD 2009-09-17 15:04:21 -03:00
Roberto Ierusalimschy 0e45ffb8e4 first implementation of 'lua_yieldk' (yield with continuation) 2009-09-14 11:30:39 -03:00
Roberto Ierusalimschy 071e54ae0b extra facilities to testC: comments + commands print, callk and yield +
Cfunc with extra upvalues
2009-09-09 17:44:10 -03:00
Roberto Ierusalimschy a68494fb32 'debug.[gs]etupvalue' should be able to access C upvalues too 2009-09-09 17:32:19 -03:00
Roberto Ierusalimschy 4b44793dc5 "bug": lua_createtable with sizes changed (array <-> record) 2009-09-07 11:24:12 -03:00
Roberto Ierusalimschy 90e2a716c8 details + comments 2009-09-05 09:39:29 -03:00
Roberto Ierusalimschy d9fbbe1f23 "file:write" returns "file" in case of success 2009-09-01 16:10:48 -03:00
Roberto Ierusalimschy 4a714cebd1 API checks now have explanatory messages 2009-08-31 11:26:28 -03:00
Roberto Ierusalimschy 5b6be84106 ensures that argument 'mode' to 'io.open' matches "[rwa]%+?b?", to
avoid passing invalid modes to 'fopen'.
2009-08-28 10:51:57 -03:00
Roberto Ierusalimschy b2bb2f7f59 better machinery to test continuations in the C API 2009-08-26 14:41:26 -03:00
Roberto Ierusalimschy f096ab5421 correct way to check arguments to 'strftime' 2009-08-25 16:58:08 -03:00
Roberto Ierusalimschy 4e1ffc482a test for 'fs' being NULL at the end of 'close_func' is useless ('fs'
cannot be NULl and the new ls->fs can only be NULL when the token
is EOS, in which case anchor_token has no effect).
2009-08-10 17:41:04 -03:00
Roberto Ierusalimschy bc439e21cd avoid an unprotected call to 'lua_tostring' which theoretically may
cause a panicked exit
2009-08-10 13:23:19 -03:00
Roberto Ierusalimschy 1b4480003b "stange numbers" (-0 and NaN) also go to the constant table (as
strings with their binary representation). Therefore, constant
folding may produce these results.
2009-08-10 12:31:44 -03:00
Roberto Ierusalimschy 42167804b8 luaH_[gs]etnum renamed to luaH_[gs]etint (as they only accept integers,
not generic numbers).
2009-08-07 14:53:28 -03:00
Roberto Ierusalimschy 3135a6bbab luaH_[gs]etnum renamed to luaH_[gs]etint (as they only accept integers,
not generic numbers)
2009-08-07 13:17:41 -03:00
Roberto Ierusalimschy 95cbc402dc "But" -> "Bug" (misspelling) 2009-08-05 10:09:38 -03:00
Roberto Ierusalimschy decada8dc2 'debug.getfenv' does not check whether it has an argument 2009-08-04 15:51:19 -03:00
Roberto Ierusalimschy ee5d03b42a small bug: debug.getfenv should check whether it has an argument 2009-08-04 15:27:57 -03:00
Roberto Ierusalimschy 323f33d014 'collectgarbage"count"' returns a second argument with the count%1024. 2009-08-04 15:20:18 -03:00
Roberto Ierusalimschy 55dc7fb240 bug: stack must be cleared until its end (including extra size) +
control of stack size moved to 'ldo.c'
2009-07-16 13:26:09 -03:00
Roberto Ierusalimschy 11d7ba79f2 tail calls do not need to move whole new frame down, only its slice
up to last parameter (the rest has not been used yet)
2009-07-15 15:38:16 -03:00
Roberto Ierusalimschy bd5fa9cc8f new macro 'getproto' 2009-07-15 15:37:19 -03:00
Roberto Ierusalimschy 2658c94925 detail (comment: 'correspoding' -> 'corresponding') 2009-07-15 14:57:30 -03:00
Roberto Ierusalimschy 215885768c 'index2adr' -> 'index2addr' (correct spelling) 2009-07-15 14:57:03 -03:00
Roberto Ierusalimschy a5f68589c0 avoid using 'UNUSED' (not defined outside the kernel) 2009-07-15 14:49:48 -03:00
Roberto Ierusalimschy 28419c4383 'luaL_tolstring' uses 'lua_tolstring' instead of 'lua_tostring' and
'lua_objlen'
2009-07-15 14:47:34 -03:00
Roberto Ierusalimschy 5bff2aaf47 calls with LUA_MULTRET may leave no free slots in the stack 2009-07-15 14:35:20 -03:00
Roberto Ierusalimschy f76f4cb79d new way to control stack overflow, controling only total size of the stack 2009-07-15 14:26:14 -03:00
Roberto Ierusalimschy abb85fc059 new definition for 'luaD_checkstack' to avoid possible overflows 2009-07-08 13:06:51 -03:00
Roberto Ierusalimschy aabe3ddbf4 errors in 'resume' should be all protected 2009-07-08 13:06:07 -03:00
Roberto Ierusalimschy 0c258c8492 smart use of varargs may create functions that return too
many arguments and overflow the stack of C functions.
2009-07-02 16:57:34 -03:00
Roberto Ierusalimschy d57c9cdefc BUG: 'luaV_settable' may invalidate a reference to a table and try
to reuse it.
2009-07-01 18:10:33 -03:00
Roberto Ierusalimschy afb3f7e754 bug: 'luaV_settable' may invalidate a reference to a table and try
to reuse it.
2009-07-01 17:31:25 -03:00
Roberto Ierusalimschy 88564c3aec Standard library for bitwise operations 2009-07-01 13:17:08 -03:00
Roberto Ierusalimschy 3abe3da9fb new module 'lbitlib.c' for bitwise operations 2009-07-01 13:16:40 -03:00
Roberto Ierusalimschy eb8499c8e0 use of LUAI_UINT32 replaced by 'unsigned LUA_INT32' (one less
definition needed)
2009-07-01 13:14:15 -03:00
Roberto Ierusalimschy 47c562435b better error messages for luaL_checkversion 2009-06-19 11:21:57 -03:00
Roberto Ierusalimschy 02504d86d3 l_version may be local to 'lua_version' 2009-06-19 11:21:23 -03:00
Roberto Ierusalimschy 4a818f068a 'checkversion' implemented in the auxiliary library 2009-06-18 15:59:58 -03:00
Roberto Ierusalimschy 1d6ebce296 new function 'lua_version' (so that 'checkversion' can be implemented
in the auxiliary library)
2009-06-18 15:59:18 -03:00
Roberto Ierusalimschy bc3e02a1b7 default paths have dot option as the last one (to improve security) 2009-06-18 15:19:36 -03:00
Roberto Ierusalimschy f4eed60ca9 better treatment of integer formats in string.format 2009-06-18 13:51:03 -03:00
Roberto Ierusalimschy c1de1fdac6 small optimization in 'lua_arith' (avoids overhead in the common case
of both arguments being numbers)
2009-06-18 13:36:40 -03:00
Roberto Ierusalimschy a36c8e1718 new macro 'changenvalue' 2009-06-18 13:36:40 -03:00
Roberto Ierusalimschy d7872dcf91 small optimization (reorder of BinOpr enum to unify some cases
in switches)
2009-06-18 13:35:05 -03:00
Roberto Ierusalimschy 14115170bc lua_objlen should not work for numbers (according to the manual) 2009-06-17 15:38:54 -03:00
Roberto Ierusalimschy ec52149485 'lua_lessthan' replaced by more generic 'lua_compare' 2009-06-17 14:53:50 -03:00
Roberto Ierusalimschy 6980cb1aa7 new functions 'lua_arith' and 'lua_compare' 2009-06-17 14:53:14 -03:00
Roberto Ierusalimschy 59a59fafc6 exports luaV_arith to be used by lua_arith 2009-06-17 14:51:07 -03:00
Roberto Ierusalimschy 2bdd194f43 exports luaV_arith to be used by lua_arith + uses 'luaO_arith' to
perform basic arith. operations
2009-06-17 14:50:09 -03:00
Roberto Ierusalimschy 96fa34ec32 constant folding uses 'luaO_arith' to perform basic operations 2009-06-17 14:49:09 -03:00
Roberto Ierusalimschy 6a024df440 new function 'luaO_arith' to perform basic arithmetic operations 2009-06-17 14:48:34 -03:00
Roberto Ierusalimschy 77fd93188e 'lessequal' renamed 'luaV_lessequal' and exported to be used by
'lua_compare'
2009-06-17 13:17:14 -03:00
Roberto Ierusalimschy a21c89ddc8 new API function 'lua_mainthread' 2009-06-15 16:51:31 -03:00
Roberto Ierusalimschy 49b88b1c39 patch for wrong code generation for some particular boolean expressions 2009-06-15 11:12:59 -03:00
Roberto Ierusalimschy 3db5f60547 BUG: "(((1 or false) and true) or false)" gives wrong result 2009-06-15 10:52:08 -03:00
Roberto Ierusalimschy 2258ec6bc9 'getline' renamed to 'getfuncline' (to avoid problems with POSIX) 2009-06-10 13:57:53 -03:00
Roberto Ierusalimschy 2598138ece new function 'luaK_codek' (detail) 2009-06-10 13:52:03 -03:00
Roberto Ierusalimschy 4a67e48611 new macro 'condmovestack' instead of 'condhardstacktests' 2009-06-08 16:35:59 -03:00
Roberto Ierusalimschy 5cdec7d124 added "\n" at the end of 'package.config' (so that the string
is a sequence of complete lines)
2009-06-04 16:34:24 -03:00
Roberto Ierusalimschy 9423e22aa3 no more L->base + ci->base only for Lua functions (C functions may use
'func')
2009-06-01 16:09:26 -03:00
Roberto Ierusalimschy 57f8414de1 small bug in 'luaV_concat' (L->top was left incorrect in some cases) 2009-05-27 14:11:27 -03:00
Roberto Ierusalimschy 139d562861 type of 'luai_ctype_' array changed to unsigned (safer for bitwise
operations)
2009-05-27 13:51:15 -03:00
Roberto Ierusalimschy eea6d10866 details (use ci->base instead of L->base when possible) 2009-05-22 12:19:54 -03:00
Roberto Ierusalimschy 019ebcb85f errors in finalizers are propagated with code LUA_ERRGCMM (ERRor in
__gc MetaMethod)
2009-05-21 17:06:11 -03:00
Roberto Ierusalimschy 889284ebd0 hexadecimal escape sequences in strings + better error messages for
bad decimal escape sequences
2009-05-18 14:28:04 -03:00
Roberto Ierusalimschy 6956331093 new macro 'zungetc' 2009-05-18 14:26:25 -03:00
Roberto Ierusalimschy 92479f1a8b new property 'lisupper' (needed to compute values for hexa digits) 2009-05-18 14:15:14 -03:00
Roberto Ierusalimschy e67dc3a227 'symbexec' merged with 'getobjname' (as only use for symbolic execution
now is to find a "good" name for an object)
2009-05-04 15:26:21 -03:00
Roberto Ierusalimschy 0cc3add9f8 variable renaming: 'lualibs' -> 'loadedlibs'; 'luareqlibs' ->
'preloadedlibs'
2009-05-01 10:46:35 -03:00
Roberto Ierusalimschy 71c2eeff98 comments 2009-05-01 10:37:11 -03:00
Roberto Ierusalimschy d7bc346d7a no more code checking 2009-04-30 14:42:21 -03:00
Roberto Ierusalimschy 673c456cba resize string hash table only when new size is smaller than current one 2009-04-29 14:09:41 -03:00
Roberto Ierusalimschy ea44570883 hash table for strings is rehashed in place 2009-04-29 14:09:41 -03:00
Roberto Ierusalimschy e091a254df new way to GC stacks: the entire stack must be correct all the times;
the 'dead' part of a stack (after the top) must have only nil's, so
that 'top' may go up without cleaning the stack.
2009-04-28 16:04:36 -03:00
Roberto Ierusalimschy 58c3aa8b5f malicious zero-length string in binary code may segfault Lua +
wrong code generation for some particular boolean expressions
2009-04-27 17:11:11 -03:00
Roberto Ierusalimschy c1f78ff3d3 unused arguments removed 2009-04-27 15:58:31 -03:00
Roberto Ierusalimschy e5249b9fb5 'exit' changed to 'abort' in case of panic (+ some extra comments)
'abort' seems more in line with panic ("abnormal termination")
2009-04-26 18:55:35 -03:00
Roberto Ierusalimschy d3037d97ec several small improvements based on 'ci' being fixed now (including
erasing savedpc from lua_State)
2009-04-17 19:00:01 -03:00
Roberto Ierusalimschy c6b442bd36 'luaM_freearray' does not need array type as argument 2009-04-17 11:40:13 -03:00
Roberto Ierusalimschy 4f88418170 'CallInfo' stack implemented as double-linked list instead of an array 2009-04-17 11:28:06 -03:00
Roberto Ierusalimschy 311e9f3ceb 'nresults' is saved in CallInfo from the caller, not the called 2009-04-15 13:53:39 -03:00
Roberto Ierusalimschy 8775f25830 new function 'T.makeCfunc' (for later use) 2009-04-14 16:10:17 -03:00
Roberto Ierusalimschy 70a63fa5ad first implementation of yieldable 'pcall' 2009-04-08 15:04:33 -03:00
Roberto Ierusalimschy fffbaede75 detail 2009-04-03 12:58:03 -03:00
Roberto Ierusalimschy ae9ad6c694 added comment explaining why the 'feof' test when loading a file 2009-04-02 16:54:06 -03:00
Roberto Ierusalimschy 83d2dbb15d Lua will abort anyway, so 'panic' does not need to. 2009-03-31 14:25:08 -03:00
Roberto Ierusalimschy 4e43741943 in 'lua_call', avoid preparing a continuation when thread cannot yield. 2009-03-30 15:39:20 -03:00
Roberto Ierusalimschy a274596ecc avoid making 'lastfree' an invalid pointer 2009-03-30 15:38:24 -03:00
Roberto Ierusalimschy 7e9bc41fe7 'loadlib(lib, "*")' loads 'lib' with global names exported to all 2009-03-26 19:25:05 -03:00
Roberto Ierusalimschy b1e1c15ced small bug: EOZ is a valid character to be tested 2009-03-26 15:53:52 -03:00
Roberto Ierusalimschy 3dbf305408 no more support for old-style varargs 2009-03-26 09:57:01 -03:00
Roberto Ierusalimschy 6d0ae11c57 'context' added to suspendable calls 2009-03-23 11:26:12 -03:00
Roberto Ierusalimschy 3ca739b418 'math.random' uses lua_Number to manage its arguments (there is no
reason to lose range).
2009-03-17 14:55:39 -03:00
Roberto Ierusalimschy 9e613b8583 missing argument to 'assert' raises "assertion failed" error 2009-03-16 13:30:50 -03:00
Roberto Ierusalimschy 9428ec42d0 new optional argument to 'load', to control allowed modes (binary or
textual chunks)
2009-03-13 12:50:03 -03:00
Roberto Ierusalimschy 6ffcf21367 ctype 'lalpha' includes '_' (as '_' behaves as a letter from the
point of view of Lua)
2009-03-11 10:27:32 -03:00
Roberto Ierusalimschy 6427c61e7c added macro 'lisxdigit' (just in case :) 2009-03-10 14:42:33 -03:00
Roberto Ierusalimschy ba484b9eb1 yielding across lua_call (first version) 2009-03-10 14:14:37 -03:00
Roberto Ierusalimschy f9d015523e better notes about some opcodes (comments only) 2009-03-09 12:27:56 -03:00
Roberto Ierusalimschy 1817dfc301 initial separation, in CallInfo, of what is relevant only to Lua
functions or only to C functions
2009-03-04 10:32:29 -03:00
Roberto Ierusalimschy 7837e34e56 new states have a reasonable panic function +
testC may run code on different threads +
rename of some testC operations ('rawcall'->'call', 'call'->'pcall')
2009-03-03 15:52:36 -03:00
Roberto Ierusalimschy 910310d3ba if thread has no error handling, try main thread handler before panicking 2009-03-03 15:51:24 -03:00
Roberto Ierusalimschy facfcd497f detail 2009-03-02 13:34:23 -03:00
Roberto Ierusalimschy b403317325 error functions search global space for a name for a function when
no other name is available
2009-02-27 15:18:19 -03:00
Roberto Ierusalimschy 9bf05e7364 code section 'Traceback' moved to the beginning of the file 2009-02-27 15:17:13 -03:00
Roberto Ierusalimschy e39e758a73 closing a "popen" file returns the process exit status 2009-02-20 10:50:27 -03:00
Roberto Ierusalimschy 5438d77221 global array of ctypes renamed to 'luai_ctype_' (extern names must
use a "lua" prefix...)
2009-02-20 10:11:15 -03:00
Roberto Ierusalimschy 6905ae900b Lua now uses "homemade" lctype (instead of ctype.h from ANSI C) 2009-02-19 14:33:51 -03:00
Roberto Ierusalimschy ada82930fd "homemade" version of ctype.h 2009-02-19 14:18:25 -03:00
Roberto Ierusalimschy f36e319658 'fputs' changed to 'luai_writestring' + use of 'lua_checkversion' 2009-02-19 14:15:35 -03:00
Roberto Ierusalimschy 0cea28a785 better error messages for 'lua_checkversion' 2009-02-19 14:15:13 -03:00
Roberto Ierusalimschy d2ebdc045b new macro 'lua_checkversion' to check whether core and application are
compatible
2009-02-18 14:20:56 -03:00
Roberto Ierusalimschy 81ede6bfce using light userdata to represent "remote" states 2009-02-18 11:52:51 -03:00
Roberto Ierusalimschy 2b579b4b83 panic mode does not reset stack (so that panic function can gather
debug information from it)
2009-02-18 11:52:03 -03:00
Roberto Ierusalimschy a1d0e1a11a 'log10' is deprecated now 2009-02-18 10:17:10 -03:00
Roberto Ierusalimschy 8975739839 better precision for log(x, 10) 2009-02-18 10:06:05 -03:00
Roberto Ierusalimschy d07abcc6c7 finalizers always called protected 2009-02-17 16:47:58 -03:00
Roberto Ierusalimschy 189378142a buffer creation ensures buffer space plus MINSTACK in the stack 2009-02-17 11:31:16 -03:00
Roberto Ierusalimschy 82749b765e 'db_errorfb' changed to 'db_traceback' for consistency 2009-02-17 10:21:28 -03:00
Roberto Ierusalimschy 2b590aea40 no more '__len' metamethod for strings 2009-02-16 17:09:28 -03:00
Roberto Ierusalimschy 547e47649f 'luaL_typeerror' spelled right 2009-02-13 17:39:34 -02:00
Roberto Ierusalimschy 41dd32e18e comment (should not use 'go trhough' when simply using multiple labels) 2009-02-11 16:25:20 -02:00
Roberto Ierusalimschy 5d3cc5def8 'writestring' changed into a configurable macro 2009-02-07 10:23:15 -02:00
Roberto Ierusalimschy 53db607963 avoid using 'fputs' in 'print' to avoid problems with embedded zeros 2009-02-06 16:38:47 -02:00
Roberto Ierusalimschy cbf0c7a103 check for invalid use of '%' in replacement string in 'string.gsub' 2009-02-03 17:39:19 -02:00
Roberto Ierusalimschy 4c399c5dfb detail (MAXSRC changed to LUA_IDSIZE) 2008-12-26 09:55:57 -02:00
Roberto Ierusalimschy b472098493 concat TM can yield 2008-11-06 10:43:51 -02:00
Roberto Ierusalimschy 84b3daebbd generic for coded as two dedicated instructions to simplify resumption 2008-10-30 13:39:30 -02:00
Roberto Ierusalimschy f6978173e0 yields accross metamethods and for iterators (except for __concat) 2008-10-28 14:53:16 -02:00
Roberto Ierusalimschy e02483dbc0 whole build depends on 'makefile' itself + better format for warning
options
2008-10-28 14:52:00 -02:00
Roberto Ierusalimschy 9e58e0df8f some cleaning 2008-10-28 10:55:00 -02:00
Roberto Ierusalimschy 690efef3de detail (added 'UNUSED' to unused argument) 2008-10-28 10:54:25 -02:00
Roberto Ierusalimschy b9e92c8b0d updating header dependencies 2008-10-03 13:40:56 -03:00
Roberto Ierusalimschy 4376c9bc5f more specific test to avoid calling luaF_close when function returns 2008-09-09 10:53:02 -03:00
Roberto Ierusalimschy f94cd2201c better control of call status through CallInfo 2008-08-26 10:27:42 -03:00
Roberto Ierusalimschy fdbb243ff9 first steps towards yielding through longjump 2008-08-13 14:02:42 -03:00
Roberto Ierusalimschy c1565c16ed small bug: lua_resume returning LUA_YIELD is not an error 2008-08-13 14:02:12 -03:00
Roberto Ierusalimschy 394646891c new field 'status' in CallInfo structure 2008-08-13 14:01:33 -03:00
Roberto Ierusalimschy d69aa51088 added missing parentheses around function names 2008-08-13 11:08:49 -03:00
Roberto Ierusalimschy afe849c9b4 change in error message 2008-08-06 10:38:32 -03:00
Roberto Ierusalimschy ccd678ea3e 'module' may change the environment of a C function +
internal macro 'svalue' is wrong
2008-08-06 10:32:45 -03:00
Roberto Ierusalimschy bb92ef23cb bug: string at the end of TString must consider the entire TString
entity, not only its 'tsv' part
2008-08-05 16:26:23 -03:00
Roberto Ierusalimschy bb48f456d9 bug: 'module' now checks that is caller is a Lua function 2008-08-05 16:25:42 -03:00
Roberto Ierusalimschy df802dc74b larger alignment requirement helps to uncover some kinds of bugs 2008-08-05 16:24:46 -03:00
Roberto Ierusalimschy e23da9edee GC step does not unblock collector (when it is blocked by "stop") 2008-08-01 14:01:16 -03:00
Roberto Ierusalimschy 4db2cddeee LUA_COMPAT -> LUA_COMPAT_API (more specific) 2008-07-18 16:58:10 -03:00
Roberto Ierusalimschy f9dec5fc84 do not use compatibility macros in Lua 2008-07-11 14:51:01 -03:00
Roberto Ierusalimschy 6b8725b0ee new macro LUA_COMPAT to control some compatibility macros 2008-07-11 14:50:31 -03:00
Roberto Ierusalimschy 6955666290 'string.byte' gets confused with some out-of-range negative indices +
user-requested GC step may loop forever
2008-07-11 14:27:41 -03:00
Roberto Ierusalimschy 5298392c5a bug: GC step could loop forever under very particular circumstances 2008-07-04 15:27:11 -03:00
Roberto Ierusalimschy 1ceec74370 useless test removed (pointed by lint) 2008-07-03 11:25:05 -03:00
Roberto Ierusalimschy 2a84c29bc3 comment about exported function not used by Lua 2008-07-03 11:24:36 -03:00
Roberto Ierusalimschy 4d8a1103d3 useless #define removed (pointed by lint) 2008-07-03 11:24:11 -03:00
Roberto Ierusalimschy 202de59254 useless #include removed (pointed by lint) 2008-07-03 11:23:35 -03:00
Roberto Ierusalimschy f858a155c2 identation error (pointed by lint) 2008-07-03 11:21:41 -03:00
Roberto Ierusalimschy 9e7de9473c message from -v option goes to stdout, as it is not an error message 2008-06-26 16:47:51 -03:00
Roberto Ierusalimschy 0c8f5fc2fd simplification in the handling of finalizers: no more 'tmudata' list +
no more GCSsweeptmu collector's state
2008-06-26 16:42:45 -03:00
Roberto Ierusalimschy 1527d8f00d GC called after errors now are called after showing error message (to
avoid problems when there are other errors during GC itself)
2008-06-26 16:40:12 -03:00
Roberto Ierusalimschy 8efaf8af81 added a comment about warnings for __attribute__(visibility) in some
elf targets
2008-06-25 12:27:12 -03:00
Roberto Ierusalimschy c3525610fe bug: when closing the state, 'luaC_separateudata' might mark
userdata in the wrong phase of collection, therefore avoiding
their traversal
2008-06-23 19:07:44 -03:00
Roberto Ierusalimschy 7ba62e2985 code reorganization (only changed comments and order of functions) 2008-06-23 13:51:28 -03:00
Roberto Ierusalimschy 8fd28611d5 outdated comment 2008-06-23 13:51:08 -03:00
Roberto Ierusalimschy 93869acb2c "test trick" seems more useful with pointers instead of integers 2008-06-23 13:50:34 -03:00
Roberto Ierusalimschy 480a1da34a when error is 'bad self' original message probably makes no sense, so
it is better not to show it.
2008-06-13 15:45:35 -03:00
Roberto Ierusalimschy 59e2973335 removed static variable lua_state (not used) 2008-06-13 14:07:10 -03:00
Roberto Ierusalimschy 5d09be4832 by default, 'os.exit' closes current state 2008-06-13 13:59:00 -03:00
Roberto Ierusalimschy 860e285f31 'luaL_gsub' moved into 'testC' (all auxlib should be tested through 'testC') 2008-06-13 11:15:59 -03:00
Roberto Ierusalimschy eb8ac6e2a0 'luaL_testudata' does not leave garbage on the stack in case of failure 2008-06-12 11:37:27 -03:00
Roberto Ierusalimschy b1203e036d 'posrelat' avoids problems with -(-2^31) 2008-06-12 11:21:18 -03:00
Roberto Ierusalimschy 92a0d4c67f extra options in 'testC' for newmetatable and testudata 2008-06-12 11:20:49 -03:00
Roberto Ierusalimschy 5fa55df2ca updated years in some comments/strings 2008-05-09 13:51:44 -03:00
Roberto Ierusalimschy a3af42de8e patch for "blow stack" bug 2008-05-08 13:55:08 -03:00
Roberto Ierusalimschy 198be23f36 added structure for local-variable information to allow extra
checkings if needed
2008-05-08 12:44:51 -03:00
Roberto Ierusalimschy 24359ae294 'string.find' cannot find things after subject's end 2008-04-14 12:54:59 -03:00
Roberto Ierusalimschy 6c84722afa make default GC behavior a little more agressive
(to avoid falling behind memory consumption)
2008-04-07 15:58:42 -03:00
Roberto Ierusalimschy facb0519a0 two bugs: invalid boolean values in constant table + too deep recursion
when reading nested functions
2008-04-07 15:44:23 -03:00
Roberto Ierusalimschy ffdca3522e 'table.sort' detects invalid order function before calling it
for nil elements
2008-04-07 15:43:00 -03:00
Roberto Ierusalimschy 4d7469b610 avoid constant folding for -0 (to avoid it colapsing to 0) 2008-04-07 15:41:47 -03:00
Roberto Ierusalimschy 2b84e36b93 patches for some bugs 2008-04-04 22:31:59 -03:00
Roberto Ierusalimschy 85bda9eef5 bugs: precheck must use check (instead of assert) and ensures that
code size is at least 1
2008-04-02 16:14:16 -03:00
Roberto Ierusalimschy a4d3080fe3 SETLIST extra argument now is an "instruction" (OP_EXTRAARG) 2008-04-02 14:38:54 -03:00
Roberto Ierusalimschy 5627d51e05 corrected error message ("too many constants" -> "too many functions") 2008-04-02 14:19:22 -03:00
Roberto Ierusalimschy e64b0cada8 several bugs related to precompiled code 2008-04-01 16:17:48 -03:00
Roberto Ierusalimschy 7316d61a66 'coroutine.running' should work for the main thread too 2008-02-25 11:33:57 -03:00
Roberto Ierusalimschy e2b366c760 userdata with finalizers are kept in a separated list 2008-02-19 15:55:09 -03:00
Roberto Ierusalimschy fa19baab7f proxies must be created with a __gc field in their metatables to work
properly with new semantics for finalizers
2008-02-19 15:54:09 -03:00
Roberto Ierusalimschy 2f8351fe48 turn off optimizations when testing 2008-02-15 15:44:34 -02:00
Roberto Ierusalimschy 32d42bdcdc bugs: lua_checkstack may have arithmetic overflow for large 'size' +
unpack with maximum indices may crash due to arithmetic overflow
2008-02-14 14:51:57 -02:00
Roberto Ierusalimschy 843d53aabb 'table.concat' may get confused with too large limits 2008-02-14 14:03:27 -02:00
Roberto Ierusalimschy 5ac3386888 bug: unpack with maximum indices may crash due to arithmetic overflow 2008-02-14 14:03:09 -02:00
Roberto Ierusalimschy 6d182faab6 bug: lua_checkstack may have arithmetic overflow for large 'size' 2008-02-14 14:02:58 -02:00
Roberto Ierusalimschy f86f4116c8 micro-optimization: avoid one API call in 'read_chars' 2008-02-12 15:05:36 -02:00
Roberto Ierusalimschy 7f69f0efb0 remove of useless test in 'read_chars' (if n == 0 then the resulting
string cannot be empty).
2008-02-12 14:51:03 -02:00
Roberto Ierusalimschy f6cab9666c corrected name of 'Patrick Donnelly' 2008-02-12 14:42:46 -02:00
Roberto Ierusalimschy 3deb38814d added assertions checking maximum number of upvalues 2008-02-12 11:34:12 -02:00
Roberto Ierusalimschy 3b5b14a085 LUAI_MAXCSTACK must be smaller than -LUA_REGISTRYINDEX +
coroutine.resume pushes element without ensuring stack size
2008-02-11 17:18:21 -02:00
Roberto Ierusalimschy aec671c126 maximum C stack should reserve some values for pseudo-indices 2008-02-11 17:17:19 -02:00
Roberto Ierusalimschy dd92af69db bug: pseudo-indices should be linked to maximum C stack size 2008-02-11 17:16:02 -02:00
Roberto Ierusalimschy 015e973899 bug: auxresume should reserve stack space for boolean result 2008-02-11 17:14:52 -02:00
Roberto Ierusalimschy 163f58dac5 in 'testC', booleans should be represented by booean values 2008-02-11 17:04:16 -02:00
Roberto Ierusalimschy dcee7d2fe0 new instructions 'newtable' and 'checkstack' in 'testC' 2008-02-11 16:04:26 -02:00
Roberto Ierusalimschy 5f0a2f6248 more options for 'kinds' of Garbage Collection + more agressive
shrinking of stacks and string hash
2008-02-11 13:46:03 -02:00
Roberto Ierusalimschy a73930228a more options for 'kinds' of Garbage Collection 2008-02-11 13:45:30 -02:00
Roberto Ierusalimschy a76fa25199 'ceillog2' now is exported (other modules may need it) 2008-01-30 16:05:23 -02:00
Roberto Ierusalimschy dd3519ab89 comment (LUA_GLOBALSINDEX does not need write barrier in lua_replace) 2008-01-25 11:42:12 -02:00
Roberto Ierusalimschy 3a515df086 debug.sethook/gethook may overflow the thread's stack 2008-01-21 12:41:19 -02:00
Roberto Ierusalimschy 74897bc52f bug: debug.sethook/gethook may overflow thread's stack 2008-01-21 11:37:08 -02:00
Roberto Ierusalimschy e7c989baf1 avoid calling "tail return" hooks if the hook itself turns off the event 2008-01-18 20:36:50 -02:00
Roberto Ierusalimschy 7a3c8314ac small bug (see http://lua-users.org/lists/lua-l/2007-08/msg00350.html) 2008-01-18 15:14:47 -02:00
Roberto Ierusalimschy 6f8257ec5f it seems useless trying to avoid this warning... 2008-01-18 13:37:10 -02:00
Roberto Ierusalimschy 87b0191753 better definition for LUAI_MAXCSTACK 2008-01-17 14:24:38 -02:00
Roberto Ierusalimschy 56c17ba4c7 detail 2008-01-17 14:24:30 -02:00
Roberto Ierusalimschy daddc57abd luaL_tostring -> luaL_tolstring (more generic) 2008-01-03 15:07:59 -02:00
Roberto Ierusalimschy f9cdd09191 larger limit for MAXCSTACK (plus removing of some useless definitions) 2008-01-02 14:36:19 -02:00
Roberto Ierusalimschy 47b4858357 detail ('name' of baselib is "_G") 2008-01-02 14:16:28 -02:00
Roberto Ierusalimschy b8d23d6e07 option to use Sun compiler (on lhf account) 2007-12-27 10:59:43 -02:00
Roberto Ierusalimschy fdecdd0cec stand-alone interpreter shows incorrect error message when the
'message' is a coroutine (already fixed in 5.2)
2007-12-27 10:58:29 -02:00
Roberto Ierusalimschy fabdaa37b6 'lua_pushfstring' raises an error if called with invalid format 2007-12-19 15:24:38 -02:00
Roberto Ierusalimschy bc82b4d78a new function 'package.searchpath' 2007-12-12 12:36:12 -02:00
Roberto Ierusalimschy dae850e0ee details 2007-12-08 09:54:32 -02:00
Roberto Ierusalimschy abcc124df0 BUG: lua_setfenv may crash if called over an invalid object 2007-11-28 16:27:38 -02:00
Roberto Ierusalimschy b4164a9aa7 details 2007-11-28 16:25:17 -02:00
Roberto Ierusalimschy 9f0d62ad9f BUG: table.remove removes last element of a table when given
an out-of-bound index
2007-11-26 14:57:33 -02:00
Roberto Ierusalimschy 64ecf24210 detail 2007-11-26 14:56:11 -02:00
Roberto Ierusalimschy 658e7caf92 use prefix in extern names, even those in test files 2007-11-12 14:28:45 -02:00
Roberto Ierusalimschy 788506dd58 detail 2007-11-12 12:10:09 -02:00
Roberto Ierusalimschy 62790ab15d detail 2007-11-09 16:55:07 -02:00
Roberto Ierusalimschy ad60b3ead7 avoid the use of "exotic" libc functions 2007-11-09 16:54:25 -02:00
Roberto Ierusalimschy 5e8dd55574 first implementation of ephemerons 2007-10-31 13:41:19 -02:00
Roberto Ierusalimschy 0e961ad47a some changes toward ephemerons 2007-10-29 14:51:20 -02:00
Roberto Ierusalimschy c06cc60946 BUG: 'gsub' may go wild when wrongly called without its third
> argument and with a large subject.
2007-10-29 13:51:10 -02:00
Roberto Ierusalimschy 2fa476655f detail 2007-10-25 17:31:05 -02:00
Roberto Ierusalimschy 7a78495f31 avoid problems with 'ptrdiff_t' 2007-10-25 17:30:36 -02:00
Roberto Ierusalimschy 3138afbe2e parser should not call 'luaX_lexerror' 2007-10-25 14:45:47 -02:00
Roberto Ierusalimschy 4eef0aaad1 detail 2007-10-18 09:01:52 -02:00
Roberto Ierusalimschy ab09732986 new metamethods for '__pairs' and '__ipairs' 2007-10-17 15:26:39 -02:00
Roberto Ierusalimschy b7fa64565a 27 is not a prime number :( 2007-09-30 10:09:43 -03:00
Roberto Ierusalimschy 2622ed2528 better way to handle redefinitions of 'localeconv' 2007-09-14 10:27:04 -03:00
Roberto Ierusalimschy 9cb0607f6f avoid warnings about exit; return 2007-09-14 10:26:28 -03:00
Roberto Ierusalimschy 8998032f66 detail 2007-09-14 10:26:03 -03:00
Roberto Ierusalimschy 80b4753539 better error message for 'concat' 2007-09-12 17:53:24 -03:00
Roberto Ierusalimschy fe0838cd1c tables and strings respect __len metamethod 2007-09-10 14:59:32 -03:00
Roberto Ierusalimschy 8acaa2ce07 An error in a module loaded through the '-l' option
shows no traceback.
2007-09-05 14:18:27 -03:00
Roberto Ierusalimschy c676f13e1a stand-alone error-message details 2007-09-05 14:17:39 -03:00
Roberto Ierusalimschy 9b47cee8b2 better to flush all files before starting new process with popen 2007-08-30 13:13:13 -03:00
Roberto Ierusalimschy 47e666c090 no need for ctype.h 2007-08-10 09:56:02 -03:00
Roberto Ierusalimschy 3059579253 detail 2007-08-09 17:29:15 -03:00
Roberto Ierusalimschy 72c2f75648 detail (LUA_COPYRIGHT includes release number) 2007-08-07 13:53:40 -03:00
Roberto Ierusalimschy ec68ed66ed detail 2007-08-01 09:17:29 -03:00
Roberto Ierusalimschy f6a81dbe97 BUG: too many variables in an assignment may cause a C stack overflow 2007-07-31 16:39:52 -03:00
Roberto Ierusalimschy 3904a66ab0 'debug' library must be required before being used 2007-06-22 13:59:11 -03:00
Roberto Ierusalimschy ffc5f78229 detail 2007-06-22 12:39:34 -03:00
Roberto Ierusalimschy 3f78748ef3 traceback function moved to auxlib 2007-06-22 12:33:54 -03:00
Roberto Ierusalimschy d26bfb5ae4 "spacial" reorganization to keep related functions in groups 2007-06-21 11:09:59 -03:00
Roberto Ierusalimschy 8d3dd04137 clearing some old compatibility code 2007-06-21 10:52:27 -03:00
Roberto Ierusalimschy 791d8d8585 detail 2007-06-21 10:50:53 -03:00
Roberto Ierusalimschy e85515958b clearing some old compatibility code 2007-06-21 10:48:04 -03:00
Roberto Ierusalimschy dc59444cd1 strong collision for very small numbers used as table keys 2007-06-19 17:23:29 -03:00
Roberto Ierusalimschy 6c042e17b1 avoid boolean equality (tricky for some compilers) 2007-06-19 16:48:15 -03:00
Roberto Ierusalimschy 18a583306b patch may be a little simpler 2007-05-29 16:05:25 -03:00
Roberto Ierusalimschy fc8d077612 bug: wrong error message in some concatenations 2007-05-29 15:59:59 -03:00
Roberto Ierusalimschy e64fcb9d94 bug: recursive coroutines may overflow C stack 2007-05-25 14:13:47 -03:00
Roberto Ierusalimschy 6c0a9a272e assignment of nil to parameter may be optimized away
__concat metamethod converts numbers to strings
loadlib.c should not access Lua internals
code generated for "-nil", "-true", and "-false" is wrong
Count hook may be called without being set
2007-05-16 12:39:08 -03:00
Roberto Ierusalimschy 01fa1bc114 luaL_testudata (a luaL_checkudata that does not raise errors) is
very needed.
2007-05-15 15:46:12 -03:00
Roberto Ierusalimschy aa003eba8e details 2007-05-11 14:28:56 -03:00
Roberto Ierusalimschy becf19feef better names for metamethods in debug information 2007-05-09 12:49:36 -03:00
Roberto Ierusalimschy 81fc3c4f45 bug: code generated for "-nil", "-true", and "-false" is wrong 2007-05-04 15:41:49 -03:00
Roberto Ierusalimschy e7fb0d8a6f 'os.date' checks arguments before passing them to 'strftime' 2007-05-03 17:49:29 -03:00
Roberto Ierusalimschy 4eb49163c6 error handler in 'lua.c' tries '__tostring' metamethod if error
message is not a string
2007-04-26 17:39:38 -03:00
Roberto Ierusalimschy 79cb336d74 does not allow standard files to be closed 2007-04-19 17:22:32 -03:00
Roberto Ierusalimschy 38063345ae several details 2007-04-19 17:21:53 -03:00
Roberto Ierusalimschy ae00b3a76f another way to normalize -0 that avoids problems with very small
numbers (adding 1 turns them all into 1)
2007-04-18 16:24:35 -03:00
Roberto Ierusalimschy 619be354c8 lua_pushstring/pushlstring return string 2007-04-17 10:19:53 -03:00
Roberto Ierusalimschy 94d40f3980 luaO_log2 can be private to ltable.c 2007-04-10 09:18:17 -03:00
Roberto Ierusalimschy 585b81f91e remove of a non-used test function 2007-04-10 09:17:52 -03:00
Roberto Ierusalimschy 5f4f0d4a63 no more optimization to avoid LOADNIL at function start 2007-03-27 11:11:38 -03:00
Roberto Ierusalimschy 8e36e1fe49 details (randomseed calls rand once to dischard first value) 2007-03-27 09:37:00 -03:00
Roberto Ierusalimschy 97505caa64 detail 2007-03-26 15:35:34 -03:00
Roberto Ierusalimschy df50c84ee0 BUG: loadlib should not use Lua internals (lobject.h) 2007-03-26 12:57:35 -03:00
Roberto Ierusalimschy 1a455acc81 two small bugs: some metamethods do not accept callable non-function
objects + __concat converts numbers to strings before calling metamethod
2007-03-26 12:56:23 -03:00
Roberto Ierusalimschy 60bc151ed7 patch for last bug 2007-03-09 15:51:32 -03:00
Roberto Ierusalimschy 3b19bd4d57 bug: wrong code when constant is coded after it should be 2007-03-09 15:50:56 -03:00
Roberto Ierusalimschy 08f902cf49 better documentation for auxiliary functions (that should be called only
through specific macros).
2007-02-09 11:04:52 -02:00
Roberto Ierusalimschy d3c304e92e BUG: setfenv accepts invalid argument 2007-02-09 10:40:21 -02:00
Roberto Ierusalimschy 3bf0292cd5 two new bugs + one new patch 2007-02-09 10:39:52 -02:00
Roberto Ierusalimschy a7861d9d66 new year... 2007-02-07 15:54:52 -02:00
Roberto Ierusalimschy d62a21b9d3 when formatting with '%q', all control characters are coded
as \nnn.
2007-02-07 15:53:08 -02:00
Roberto Ierusalimschy cf86576a83 new function luaL_tostring 2007-02-07 15:51:21 -02:00
Roberto Ierusalimschy 92dc64e121 more regularity in the use of quotes in error messages 2007-02-07 15:49:18 -02:00
Roberto Ierusalimschy 593bfc9668 should not manipulate NULL pointers (even without accessing them) 2007-02-07 15:48:52 -02:00
Roberto Ierusalimschy 850c60e81b detail for windows 2007-02-07 15:46:20 -02:00
Roberto Ierusalimschy 3d480b04a5 more specific ident labels 2007-02-07 12:28:00 -02:00
Roberto Ierusalimschy c36e2265d9 detail (tab->space) 2006-11-30 09:25:40 -02:00
Roberto Ierusalimschy a68df3898d detail 2006-11-22 09:43:47 -02:00
Roberto Ierusalimschy 4d7cfff6df comments 2006-11-22 09:02:03 -02:00
Roberto Ierusalimschy be822a5f1c xpcall now may get arguments to function to be called 2006-10-24 16:46:12 -03:00
Roberto Ierusalimschy 9f5a052c27 error message 2006-10-24 10:31:48 -03:00
Roberto Ierusalimschy fc875334fd detail 2006-10-20 16:30:53 -03:00
Roberto Ierusalimschy 80a267b130 avoid $URL for ident; it is reserved in subversion 2006-10-17 17:00:07 -03:00
Roberto Ierusalimschy 3182ac69a7 towards 5.2 + detail in authors + avoiding reverse plicks 2006-10-17 16:59:04 -03:00
Roberto Ierusalimschy dead3858b8 detail 2006-10-16 11:38:38 -03:00
Roberto Ierusalimschy afa0d0ac0d new constant LUA_OK 2006-10-10 14:40:17 -03:00
Roberto Ierusalimschy 742b8be0c1 detail 2006-10-10 14:39:00 -03:00
Roberto Ierusalimschy 285f926140 avoid using index 0 for free list of references (because it is not
as efficient as index 1...)
2006-09-25 12:35:00 -03:00
Roberto Ierusalimschy 3c8865cf66 detail 2006-09-22 17:24:38 -03:00
Roberto Ierusalimschy 569a326931 small optimization for ""..x 2006-09-19 11:06:45 -03:00
Roberto Ierusalimschy d1ef7e0ec6 avoid local "pc" in interpreter loop (tricky optimization with no real gain) 2006-09-19 10:57:50 -03:00
Roberto Ierusalimschy d513c3c66b bug: os.date throws error when result is the empty string 2006-09-19 10:57:08 -03:00
Roberto Ierusalimschy 93d3c8450c bug: string.format("%") reads past the string 2006-09-18 13:33:14 -03:00
Roberto Ierusalimschy 8667f29c3b behavior of 'strchr(x, 0)' is ill defined. 2006-09-18 13:06:41 -03:00
Roberto Ierusalimschy d22526ec30 'lua_strlen' is for compatibility only 2006-09-18 11:03:18 -03:00
Roberto Ierusalimschy bd869c7b31 details 2006-09-14 15:42:28 -03:00
Roberto Ierusalimschy d5a23dde90 little better error messages for internal arrays overflows 2006-09-14 09:59:06 -03:00
Roberto Ierusalimschy a7c9e45c64 avoid trailing white spaces 2006-09-11 11:07:24 -03:00
Roberto Ierusalimschy cedd2092eb 'coroutine.running' should return nil (instead of nothing) for main thread 2006-09-11 11:07:24 -03:00
Roberto Ierusalimschy c473818017 avoid "too complex" conditional expression (some compilers get confused...) 2006-09-11 09:44:56 -03:00
Roberto Ierusalimschy 6087e67771 no more compatibility option for long strings 2006-08-30 10:19:58 -03:00
Roberto Ierusalimschy 93bf618504 BUG: there is only one C stack, so nCcalls must be global 2006-08-15 16:59:20 -03:00
Roberto Ierusalimschy dfe2f1eeff macros luai_num* take a state L (when available) as argument, to allow
them to generate errors (and other facilities)
2006-08-07 16:14:30 -03:00
Roberto Ierusalimschy ca7e5b5cb6 wrong message error in some cases involving closures 2006-08-07 16:04:06 -03:00
Roberto Ierusalimschy 5019b2dd20 math.log now accepts an optional base 2006-08-07 16:01:56 -03:00
Roberto Ierusalimschy 33e7bc88f8 comment 2006-08-04 10:34:37 -03:00
Roberto Ierusalimschy fa0c03aaa6 details 2006-07-14 13:22:24 -03:00
Roberto Ierusalimschy 3fa47c5dc1 bugs now are against 5.1.1 2006-07-13 11:37:36 -03:00
Roberto Ierusalimschy 0782416a74 bug: wrong limit for list constructors 2006-07-12 16:02:50 -03:00
Roberto Ierusalimschy 3ca9af51a4 emergency garbage collector (core forces a GC when allocation fails) 2006-07-11 12:53:29 -03:00
Roberto Ierusalimschy c7b89dd280 small bug: should not use string after popping it 2006-07-03 17:16:49 -03:00
Roberto Ierusalimschy 74832b2a10 detail 2006-06-23 13:09:15 -03:00
Roberto Ierusalimschy ee41bc03ab details 2006-06-22 13:12:59 -03:00
61 changed files with 3063 additions and 231 deletions
+2867
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lapi.c,v 2.171 2013/03/16 21:10:18 roberto Exp $
** $Id: lapi.c,v 2.170 2012/12/05 19:49:55 roberto Exp roberto $
** Lua API
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lapi.h,v 2.7 2009/11/27 15:37:59 roberto Exp $
** $Id: lapi.h,v 2.6 2009/08/31 14:26:28 roberto Exp roberto $
** Auxiliary functions from Lua API
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lauxlib.c,v 1.248 2013/03/21 13:54:57 roberto Exp $
** $Id: lauxlib.c,v 1.247 2012/10/19 15:55:01 roberto Exp roberto $
** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lauxlib.h,v 1.120 2011/11/29 15:55:08 roberto Exp $
** $Id: lauxlib.h,v 1.119 2011/11/14 17:10:24 roberto Exp roberto $
** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lbaselib.c,v 1.276 2013/02/21 13:44:53 roberto Exp $
** $Id: lbaselib.c,v 1.275 2012/12/03 20:18:02 roberto Exp roberto $
** Basic library
** See Copyright Notice in lua.h
*/
+2 -3
View File
@@ -1,5 +1,5 @@
/*
** $Id: lbitlib.c,v 1.18.1.1 2013/04/12 18:48:47 roberto Exp roberto $
** $Id: lbitlib.c,v 1.17 2013/02/21 13:44:53 roberto Exp roberto $
** Standard library for bitwise operations
** See Copyright Notice in lua.h
*/
@@ -129,8 +129,7 @@ static int b_rot (lua_State *L, int i) {
b_uint r = luaL_checkunsigned(L, 1);
i &= (LUA_NBITS - 1); /* i = i % NBITS */
r = trim(r);
if (i != 0) /* avoid undefined shift of LUA_NBITS when i == 0 */
r = (r << i) | (r >> (LUA_NBITS - i));
r = (r << i) | (r >> (LUA_NBITS - i));
lua_pushunsigned(L, trim(r));
return 1;
}
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lcode.c,v 2.62 2012/08/16 17:34:28 roberto Exp $
** $Id: lcode.c,v 2.61 2012/08/14 18:12:34 roberto Exp roberto $
** Code generator for Lua
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lcode.h,v 1.58 2011/08/30 16:26:41 roberto Exp $
** $Id: lcode.h,v 1.57 2011/04/07 18:14:12 roberto Exp roberto $
** Code generator for Lua
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lcorolib.c,v 1.5 2013/02/21 13:44:53 roberto Exp $
** $Id: lcorolib.c,v 1.4 2012/04/27 18:59:04 roberto Exp roberto $
** Coroutine Library
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lctype.c,v 1.11 2011/10/03 16:19:23 roberto Exp $
** $Id: lctype.c,v 1.10 2011/06/24 12:25:33 roberto Exp roberto $
** 'ctype' functions for Lua
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lctype.h,v 1.12 2011/07/15 12:50:29 roberto Exp $
** $Id: lctype.h,v 1.11 2011/06/27 18:22:46 roberto Exp roberto $
** 'ctype' functions for Lua
** See Copyright Notice in lua.h
*/
+1 -11
View File
@@ -1,5 +1,5 @@
/*
** $Id: ldblib.c,v 1.132.1.1 2013/04/12 18:48:47 roberto Exp roberto $
** $Id: ldblib.c,v 1.131 2011/10/24 14:54:05 roberto Exp roberto $
** Interface from Lua to its debug API
** See Copyright Notice in lua.h
*/
@@ -21,11 +21,6 @@
#define HOOKKEY "_HKEY"
static void checkstack (lua_State *L, lua_State *L1, int n) {
if (L != L1 && !lua_checkstack(L1, n))
luaL_error(L, "stack overflow");
}
static int db_getregistry (lua_State *L) {
lua_pushvalue(L, LUA_REGISTRYINDEX);
@@ -119,7 +114,6 @@ static int db_getinfo (lua_State *L) {
int arg;
lua_State *L1 = getthread(L, &arg);
const char *options = luaL_optstring(L, arg+2, "flnStu");
checkstack(L, L1, 3);
if (lua_isnumber(L, arg+1)) {
if (!lua_getstack(L1, (int)lua_tointeger(L, arg+1), &ar)) {
lua_pushnil(L); /* level out of range */
@@ -179,7 +173,6 @@ static int db_getlocal (lua_State *L) {
else { /* stack-level argument */
if (!lua_getstack(L1, luaL_checkint(L, arg+1), &ar)) /* out of range? */
return luaL_argerror(L, arg+1, "level out of range");
checkstack(L, L1, 1);
name = lua_getlocal(L1, &ar, nvar);
if (name) {
lua_xmove(L1, L, 1); /* push local value */
@@ -203,7 +196,6 @@ static int db_setlocal (lua_State *L) {
return luaL_argerror(L, arg+1, "level out of range");
luaL_checkany(L, arg+3);
lua_settop(L, arg+3);
checkstack(L, L1, 1);
lua_xmove(L, L1, 1);
lua_pushstring(L, lua_setlocal(L1, &ar, luaL_checkint(L, arg+2)));
return 1;
@@ -321,7 +313,6 @@ static int db_sethook (lua_State *L) {
lua_pushvalue(L, -1);
lua_setmetatable(L, -2); /* setmetatable(hooktable) = hooktable */
}
checkstack(L, L1, 1);
lua_pushthread(L1); lua_xmove(L1, L, 1);
lua_pushvalue(L, arg+1);
lua_rawset(L, -3); /* set new hook */
@@ -340,7 +331,6 @@ static int db_gethook (lua_State *L) {
lua_pushliteral(L, "external hook");
else {
gethooktable(L);
checkstack(L, L1, 1);
lua_pushthread(L1); lua_xmove(L1, L, 1);
lua_rawget(L, -2); /* get hook */
lua_remove(L, -2); /* remove hook table */
+10 -40
View File
@@ -1,5 +1,5 @@
/*
** $Id: ldebug.c,v 2.90.1.3 2013/05/16 16:04:15 roberto Exp roberto $
** $Id: ldebug.c,v 2.89 2012/01/20 22:05:50 roberto Exp roberto $
** Debug Interface
** See Copyright Notice in lua.h
*/
@@ -47,16 +47,6 @@ static int currentline (CallInfo *ci) {
}
static void swapextra (lua_State *L) {
if (L->status == LUA_YIELD) {
CallInfo *ci = L->ci; /* get function that yielded */
StkId temp = ci->func; /* exchange its 'func' and 'extra' values */
ci->func = restorestack(L, ci->extra);
ci->extra = savestack(L, temp);
}
}
/*
** this function can be called asynchronous (e.g. during a signal)
*/
@@ -154,7 +144,6 @@ static const char *findlocal (lua_State *L, CallInfo *ci, int n,
LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n) {
const char *name;
lua_lock(L);
swapextra(L);
if (ar == NULL) { /* information about non-active function? */
if (!isLfunction(L->top - 1)) /* not a Lua function? */
name = NULL;
@@ -169,7 +158,6 @@ LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n) {
api_incr_top(L);
}
}
swapextra(L);
lua_unlock(L);
return name;
}
@@ -177,14 +165,11 @@ LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n) {
LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n) {
StkId pos = 0; /* to avoid warnings */
const char *name;
const char *name = findlocal(L, ar->i_ci, n, &pos);
lua_lock(L);
swapextra(L);
name = findlocal(L, ar->i_ci, n, &pos);
if (name)
setobjs2s(L, pos, L->top - 1);
L->top--; /* pop value */
swapextra(L);
lua_unlock(L);
return name;
}
@@ -284,7 +269,6 @@ LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar) {
CallInfo *ci;
StkId func;
lua_lock(L);
swapextra(L);
if (*what == '>') {
ci = NULL;
func = L->top - 1;
@@ -303,7 +287,6 @@ LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar) {
setobjs2s(L, L->top, func);
api_incr_top(L);
}
swapextra(L);
if (strchr(what, 'L'))
collectvalidlines(L, cl);
lua_unlock(L);
@@ -344,20 +327,12 @@ static void kname (Proto *p, int pc, int c, const char **name) {
}
static int filterpc (int pc, int jmptarget) {
if (pc < jmptarget) /* is code conditional (inside a jump)? */
return -1; /* cannot know who sets that register */
else return pc; /* current position sets that register */
}
/*
** try to find last instruction before 'lastpc' that modified register 'reg'
*/
static int findsetreg (Proto *p, int lastpc, int reg) {
int pc;
int setreg = -1; /* keep last instruction that changed 'reg' */
int jmptarget = 0; /* any code before this address is conditional */
for (pc = 0; pc < lastpc; pc++) {
Instruction i = p->code[pc];
OpCode op = GET_OPCODE(i);
@@ -366,38 +341,33 @@ static int findsetreg (Proto *p, int lastpc, int reg) {
case OP_LOADNIL: {
int b = GETARG_B(i);
if (a <= reg && reg <= a + b) /* set registers from 'a' to 'a+b' */
setreg = filterpc(pc, jmptarget);
setreg = pc;
break;
}
case OP_TFORCALL: {
if (reg >= a + 2) /* affect all regs above its base */
setreg = filterpc(pc, jmptarget);
if (reg >= a + 2) setreg = pc; /* affect all regs above its base */
break;
}
case OP_CALL:
case OP_TAILCALL: {
if (reg >= a) /* affect all registers above base */
setreg = filterpc(pc, jmptarget);
if (reg >= a) setreg = pc; /* affect all registers above base */
break;
}
case OP_JMP: {
int b = GETARG_sBx(i);
int dest = pc + 1 + b;
/* jump is forward and do not skip `lastpc'? */
if (pc < dest && dest <= lastpc) {
if (dest > jmptarget)
jmptarget = dest; /* update 'jmptarget' */
}
if (pc < dest && dest <= lastpc)
pc += b; /* do the jump */
break;
}
case OP_TEST: {
if (reg == a) /* jumped code can change 'a' */
setreg = filterpc(pc, jmptarget);
if (reg == a) setreg = pc; /* jumped code can change 'a' */
break;
}
default:
if (testAMode(op) && reg == a) /* any instruction that set A */
setreg = filterpc(pc, jmptarget);
setreg = pc;
break;
}
}
@@ -548,7 +518,7 @@ l_noret luaG_typeerror (lua_State *L, const TValue *o, const char *op) {
l_noret luaG_concaterror (lua_State *L, StkId p1, StkId p2) {
if (ttisstring(p1) || ttisnumber(p1)) p1 = p2;
lua_assert(!ttisstring(p1) && !ttisnumber(p1));
lua_assert(!ttisstring(p1) && !ttisnumber(p2));
luaG_typeerror(L, p1, "concatenate");
}
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: ldebug.h,v 2.7 2011/10/07 20:45:19 roberto Exp $
** $Id: ldebug.h,v 2.6 2011/06/02 19:31:40 roberto Exp roberto $
** Auxiliary functions from Debug Interface module
** See Copyright Notice in lua.h
*/
+5 -13
View File
@@ -1,5 +1,5 @@
/*
** $Id: ldo.c,v 2.108.1.2 2013/04/19 21:03:23 roberto Exp roberto $
** $Id: ldo.c,v 2.107 2012/08/28 18:30:45 roberto Exp roberto $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
@@ -260,7 +260,6 @@ static StkId adjust_varargs (lua_State *L, Proto *p, int actual) {
StkId base, fixed;
lua_assert(actual >= nfixargs);
/* move fixed parameters to final position */
luaD_checkstack(L, p->maxstacksize); /* check again for new 'base' */
fixed = L->top - actual; /* first fixed argument */
base = L->top; /* final position of first argument */
for (i=0; i<nfixargs; i++) {
@@ -325,18 +324,12 @@ int luaD_precall (lua_State *L, StkId func, int nresults) {
case LUA_TLCL: { /* Lua function: prepare its call */
StkId base;
Proto *p = clLvalue(func)->p;
n = cast_int(L->top - func) - 1; /* number of real arguments */
luaD_checkstack(L, p->maxstacksize);
func = restorestack(L, funcr);
n = cast_int(L->top - func) - 1; /* number of real arguments */
for (; n < p->numparams; n++)
setnilvalue(L->top++); /* complete missing arguments */
if (!p->is_vararg) {
func = restorestack(L, funcr);
base = func + 1;
}
else {
base = adjust_varargs(L, p, n);
func = restorestack(L, funcr); /* previous call can change stack */
}
base = (!p->is_vararg) ? func + 1 : adjust_varargs(L, p, n);
ci = next_ci(L); /* now 'enter' new function */
ci->nresults = nresults;
ci->func = func;
@@ -534,7 +527,6 @@ static void resume (lua_State *L, void *ud) {
LUA_API int lua_resume (lua_State *L, lua_State *from, int nargs) {
int status;
int oldnny = L->nny; /* save 'nny' */
lua_lock(L);
luai_userstateresume(L, nargs);
L->nCcalls = (from) ? from->nCcalls + 1 : 1;
@@ -556,7 +548,7 @@ LUA_API int lua_resume (lua_State *L, lua_State *from, int nargs) {
}
lua_assert(status == L->status);
}
L->nny = oldnny; /* restore 'nny' */
L->nny = 1; /* do not allow yields */
L->nCcalls--;
lua_assert(L->nCcalls == ((from) ? from->nCcalls : 0));
lua_unlock(L);
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: ldo.h,v 2.20 2011/11/29 15:55:08 roberto Exp $
** $Id: ldo.h,v 2.19 2011/10/07 20:45:19 roberto Exp roberto $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: ldump.c,v 2.17 2012/01/23 23:02:10 roberto Exp $
** $Id: ldump.c,v 2.16 2011/11/24 13:25:41 roberto Exp roberto $
** save precompiled Lua chunks
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lfunc.c,v 2.30 2012/10/03 12:36:46 roberto Exp $
** $Id: lfunc.c,v 2.29 2012/05/08 13:53:33 roberto Exp roberto $
** Auxiliary functions to manipulate prototypes and closures
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lfunc.h,v 2.8 2012/05/08 13:53:33 roberto Exp $
** $Id: lfunc.h,v 2.7 2012/01/20 22:05:50 roberto Exp roberto $
** Auxiliary functions to manipulate prototypes and closures
** See Copyright Notice in lua.h
*/
+4 -11
View File
@@ -1,5 +1,5 @@
/*
** $Id: lgc.c,v 2.140.1.2 2013/04/26 18:22:05 roberto Exp roberto $
** $Id: lgc.c,v 2.139 2013/03/15 18:33:36 roberto Exp roberto $
** Garbage Collector
** See Copyright Notice in lua.h
*/
@@ -403,7 +403,7 @@ static int traverseephemeron (global_State *g, Table *h) {
reallymarkobject(g, gcvalue(gval(n))); /* mark it now */
}
}
if (g->gcstate != GCSatomic || prop)
if (prop)
linktable(h, &g->ephemeron); /* have to propagate again */
else if (hasclears) /* does table have white keys? */
linktable(h, &g->allweak); /* may have to clean white keys */
@@ -493,24 +493,17 @@ static lu_mem traverseLclosure (global_State *g, LClosure *cl) {
static lu_mem traversestack (global_State *g, lua_State *th) {
int n = 0;
StkId o = th->stack;
if (o == NULL)
return 1; /* stack not completely built yet */
for (; o < th->top; o++) /* mark live elements in the stack */
for (; o < th->top; o++)
markvalue(g, o);
if (g->gcstate == GCSatomic) { /* final traversal? */
StkId lim = th->stack + th->stacksize; /* real end of stack */
for (; o < lim; o++) /* clear not-marked stack slice */
setnilvalue(o);
}
else { /* count call infos to compute size */
CallInfo *ci;
for (ci = &th->base_ci; ci != th->ci; ci = ci->next)
n++;
}
return sizeof(lua_State) + sizeof(TValue) * th->stacksize +
sizeof(CallInfo) * n;
return sizeof(lua_State) + sizeof(TValue) * th->stacksize;
}
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lgc.h,v 2.58 2012/09/11 12:53:08 roberto Exp $
** $Id: lgc.h,v 2.57 2012/07/04 15:52:38 roberto Exp roberto $
** Garbage Collector
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: linit.c,v 1.32 2011/04/08 19:17:36 roberto Exp $
** $Id: linit.c,v 1.31 2011/01/26 16:30:02 roberto Exp roberto $
** Initialization of libraries for lua.c and other clients
** See Copyright Notice in lua.h
*/
+11 -12
View File
@@ -1,17 +1,17 @@
/*
** $Id: liolib.c,v 2.112 2013/04/11 18:34:06 roberto Exp $
** $Id: liolib.c,v 2.110 2013/03/20 19:40:07 roberto Exp roberto $
** Standard I/O (and system) library
** See Copyright Notice in lua.h
*/
/*
** POSIX idiosyncrasy!
** This definition must come before the inclusion of 'stdio.h'; it
** should not affect non-POSIX systems
*/
#if !defined(_FILE_OFFSET_BITS)
#define _LARGEFILE_SOURCE 1
#define _FILE_OFFSET_BITS 64
#define _FILE_OFFSET_BITS 64
#endif
@@ -80,37 +80,36 @@
/*
** {======================================================
** lua_fseek: configuration for longer offsets
** lua_fseek/lua_ftell: configuration for longer offsets
** =======================================================
*/
#if !defined(lua_fseek) && !defined(LUA_ANSI) /* { */
#if !defined(lua_fseek) /* { */
#if defined(LUA_USE_POSIX) /* { */
#if defined(LUA_USE_POSIX)
#define l_fseek(f,o,w) fseeko(f,o,w)
#define l_ftell(f) ftello(f)
#define l_seeknum off_t
#elif defined(LUA_WIN) && !defined(_CRTIMP_TYPEINFO) \
&& defined(_MSC_VER) && (_MSC_VER >= 1400) /* }{ */
&& defined(_MSC_VER) && (_MSC_VER >= 1400)
/* Windows (but not DDK) and Visual C++ 2005 or higher */
#define l_fseek(f,o,w) _fseeki64(f,o,w)
#define l_ftell(f) _ftelli64(f)
#define l_seeknum __int64
#endif /* } */
#else
#endif /* } */
#if !defined(l_fseek) /* default definitions */
#define l_fseek(f,o,w) fseek(f,o,w)
#define l_ftell(f) ftell(f)
#define l_seeknum long
#endif
#endif /* } */
/* }====================================================== */
+2 -5
View File
@@ -1,5 +1,5 @@
/*
** $Id: llex.c,v 2.63.1.2 2013/08/30 15:49:41 roberto Exp roberto $
** $Id: llex.c,v 2.62 2012/12/05 19:57:00 roberto Exp roberto $
** Lexical Analyzer
** See Copyright Notice in lua.h
*/
@@ -133,9 +133,6 @@ TString *luaX_newstring (LexState *ls, const char *str, size_t l) {
setbvalue(o, 1); /* t[string] = true */
luaC_checkGC(L);
}
else { /* string already present */
ts = rawtsvalue(keyfromval(o)); /* re-use value previously stored */
}
L->top--; /* remove string from stack */
return ts;
}
@@ -152,7 +149,7 @@ static void inclinenumber (LexState *ls) {
if (currIsNewline(ls) && ls->current != old)
next(ls); /* skip `\n\r' or `\r\n' */
if (++ls->linenumber >= MAX_INT)
lexerror(ls, "chunk has too many lines", 0);
luaX_syntaxerror(ls, "chunk has too many lines");
}
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: llex.h,v 1.72 2011/11/30 12:43:51 roberto Exp $
** $Id: llex.h,v 1.71 2011/06/20 16:52:48 roberto Exp roberto $
** Lexical Analyzer
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: llimits.h,v 1.103 2013/02/20 14:08:56 roberto Exp $
** $Id: llimits.h,v 1.102 2013/01/29 16:00:40 roberto Exp roberto $
** Limits, basic types, and some other `installation-dependent' definitions
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lmathlib.c,v 1.83 2013/03/07 18:21:32 roberto Exp $
** $Id: lmathlib.c,v 1.82 2013/01/29 16:00:40 roberto Exp roberto $
** Standard mathematical library
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lmem.c,v 1.84 2012/05/23 15:41:53 roberto Exp $
** $Id: lmem.c,v 1.83 2011/11/30 12:42:49 roberto Exp roberto $
** Interface to Memory Manager
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lmem.h,v 1.40 2013/02/20 14:08:21 roberto Exp $
** $Id: lmem.h,v 1.39 2012/11/14 17:21:34 roberto Exp roberto $
** Interface to Memory Manager
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: loadlib.c,v 1.111 2012/05/30 12:33:44 roberto Exp $
** $Id: loadlib.c,v 1.110 2012/04/26 19:38:52 roberto Exp roberto $
** Dynamic library loader for Lua
** See Copyright Notice in lua.h
**
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lobject.c,v 2.58 2013/02/20 14:08:56 roberto Exp $
** $Id: lobject.c,v 2.57 2013/01/29 16:00:40 roberto Exp roberto $
** Some generic functions over Lua objects
** See Copyright Notice in lua.h
*/
+3 -3
View File
@@ -1,5 +1,5 @@
/*
** $Id: lobject.h,v 2.71.1.1 2013/04/12 18:48:47 roberto Exp roberto $
** $Id: lobject.h,v 2.70 2012/05/11 14:10:50 roberto Exp roberto $
** Type definitions for Lua objects
** See Copyright Notice in lua.h
*/
@@ -561,12 +561,12 @@ typedef struct Table {
CommonHeader;
lu_byte flags; /* 1<<p means tagmethod(p) is not present */
lu_byte lsizenode; /* log2 of size of `node' array */
int sizearray; /* size of `array' array */
struct Table *metatable;
TValue *array; /* array part */
Node *node;
Node *lastfree; /* any free position is before this position */
struct Table *metatable;
GCObject *gclist;
int sizearray; /* size of `array' array */
} Table;
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lopcodes.c,v 1.49 2012/05/14 13:34:18 roberto Exp $
** $Id: lopcodes.c,v 1.48 2011/04/19 16:22:13 roberto Exp roberto $
** Opcodes for Lua virtual machine
** See Copyright Notice in lua.h
*/
+2 -2
View File
@@ -1,5 +1,5 @@
/*
** $Id: lopcodes.h,v 1.142.1.1 2013/04/12 18:48:47 roberto Exp roberto $
** $Id: lopcodes.h,v 1.141 2011/04/19 16:22:13 roberto Exp roberto $
** Opcodes for Lua virtual machine
** See Copyright Notice in lua.h
*/
@@ -196,7 +196,7 @@ OP_LEN,/* A B R(A) := length of R(B) */
OP_CONCAT,/* A B C R(A) := R(B).. ... ..R(C) */
OP_JMP,/* A sBx pc+=sBx; if (A) close all upvalues >= R(A - 1) */
OP_JMP,/* A sBx pc+=sBx; if (A) close all upvalues >= R(A) + 1 */
OP_EQ,/* A B C if ((RK(B) == RK(C)) ~= A) then pc++ */
OP_LT,/* A B C if ((RK(B) < RK(C)) ~= A) then pc++ */
OP_LE,/* A B C if ((RK(B) <= RK(C)) ~= A) then pc++ */
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: loslib.c,v 1.40 2012/10/19 15:54:02 roberto Exp $
** $Id: loslib.c,v 1.39 2012/05/23 15:37:09 roberto Exp roberto $
** Standard Operating System library
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lparser.c,v 2.130 2013/02/06 13:37:39 roberto Exp $
** $Id: lparser.c,v 2.129 2012/08/06 13:36:34 roberto Exp roberto $
** Lua Parser
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lparser.h,v 1.70 2012/05/08 13:53:33 roberto Exp $
** $Id: lparser.h,v 1.69 2011/07/27 18:09:01 roberto Exp roberto $
** Lua Parser
** See Copyright Notice in lua.h
*/
+5 -6
View File
@@ -1,5 +1,5 @@
/*
** $Id: lstate.c,v 2.99.1.1 2013/04/12 18:48:47 roberto Exp roberto $
** $Id: lstate.c,v 2.98 2012/05/30 12:33:44 roberto Exp roberto $
** Global State
** See Copyright Notice in lua.h
*/
@@ -192,8 +192,6 @@ static void f_luaopen (lua_State *L, void *ud) {
g->memerrmsg = luaS_newliteral(L, MEMERRMSG);
luaS_fix(g->memerrmsg); /* it should never be collected */
g->gcrunning = 1; /* allow gc */
g->version = lua_version(NULL);
luai_userstateopen(L);
}
@@ -224,8 +222,6 @@ static void close_state (lua_State *L) {
global_State *g = G(L);
luaF_close(L, L->stack); /* close all upvalues for this thread */
luaC_freeallobjects(L); /* collect all objects */
if (g->version) /* closing a fully built state? */
luai_userstateclose(L);
luaM_freearray(L, G(L)->strt.hash, G(L)->strt.size);
luaZ_freebuffer(L, &g->buff);
freestack(L);
@@ -291,7 +287,7 @@ LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
setnilvalue(&g->l_registry);
luaZ_initbuffer(L, &g->buff);
g->panic = NULL;
g->version = NULL;
g->version = lua_version(NULL);
g->gcstate = GCSpause;
g->allgc = NULL;
g->finobj = NULL;
@@ -310,6 +306,8 @@ LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
close_state(L);
L = NULL;
}
else
luai_userstateopen(L);
return L;
}
@@ -317,6 +315,7 @@ LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
LUA_API void lua_close (lua_State *L) {
L = G(L)->mainthread; /* only the main thread can be closed */
lua_lock(L);
luai_userstateclose(L);
close_state(L);
}
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lstate.h,v 2.82 2012/07/02 13:37:04 roberto Exp $
** $Id: lstate.h,v 2.81 2012/06/08 15:14:04 roberto Exp roberto $
** Global State
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lstring.c,v 2.26 2013/01/08 13:50:10 roberto Exp $
** $Id: lstring.c,v 2.25 2012/10/02 17:41:50 roberto Exp roberto $
** String table (keeps all strings handled by Lua)
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lstring.h,v 1.49 2012/02/01 21:57:15 roberto Exp $
** $Id: lstring.h,v 1.48 2012/01/25 21:05:40 roberto Exp roberto $
** String table (keep all strings handled by Lua)
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lstrlib.c,v 1.178 2012/08/14 18:12:34 roberto Exp $
** $Id: lstrlib.c,v 1.177 2012/07/31 17:48:42 roberto Exp roberto $
** Standard library for string operations and pattern-matching
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: ltable.c,v 2.72 2012/09/11 19:37:16 roberto Exp $
** $Id: ltable.c,v 2.71 2012/05/23 15:37:09 roberto Exp roberto $
** Lua tables (hash)
** See Copyright Notice in lua.h
*/
+1 -5
View File
@@ -1,5 +1,5 @@
/*
** $Id: ltable.h,v 2.16.1.1 2013/04/12 18:48:47 roberto Exp roberto $
** $Id: ltable.h,v 2.15 2011/08/09 20:58:29 roberto Exp roberto $
** Lua tables (hash)
** See Copyright Notice in lua.h
*/
@@ -17,10 +17,6 @@
#define invalidateTMcache(t) ((t)->flags = 0)
/* returns the key, given the value of a table entry */
#define keyfromval(v) \
(gkey(cast(Node *, cast(char *, (v)) - offsetof(Node, i_val))))
LUAI_FUNC const TValue *luaH_getint (Table *t, int key);
LUAI_FUNC void luaH_setint (lua_State *L, Table *t, int key, TValue *value);
+4 -6
View File
@@ -1,11 +1,10 @@
/*
** $Id: ltablib.c,v 1.65.1.1 2013/04/12 18:48:47 roberto Exp roberto $
** $Id: ltablib.c,v 1.64 2013/02/06 18:29:03 roberto Exp roberto $
** Library for Table Manipulation
** See Copyright Notice in lua.h
*/
#include <limits.h>
#include <stddef.h>
#define ltablib_c
@@ -135,14 +134,13 @@ static int pack (lua_State *L) {
static int unpack (lua_State *L) {
int i, e;
unsigned int n;
int i, e, n;
luaL_checktype(L, 1, LUA_TTABLE);
i = luaL_optint(L, 2, 1);
e = luaL_opt(L, luaL_checkint, 3, luaL_len(L, 1));
if (i > e) return 0; /* empty range */
n = (unsigned int)e - (unsigned int)i; /* number of elements minus 1 */
if (n > (INT_MAX - 10) || !lua_checkstack(L, ++n))
n = e - i + 1; /* number of elements */
if (n <= 0 || !lua_checkstack(L, n)) /* n <= 0 means arith. overflow */
return luaL_error(L, "too many results to unpack");
lua_rawgeti(L, 1, i); /* push arg[i] (avoiding overflow problems) */
while (i++ < e) /* push arg[i + 1...e] */
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: ltests.c,v 2.135 2013/03/16 21:10:18 roberto Exp $
** $Id: ltests.c,v 2.134 2012/10/03 12:36:46 roberto Exp roberto $
** Internal Module for Debugging of the Lua Implementation
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: ltests.h,v 2.33 2010/07/28 15:51:59 roberto Exp $
** $Id: ltests.h,v 2.32 2010/04/19 17:40:13 roberto Exp roberto $
** Internal Header for Debugging of the Lua Implementation
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: ltm.c,v 2.14 2011/06/02 19:31:40 roberto Exp $
** $Id: ltm.c,v 2.13 2011/02/28 17:32:10 roberto Exp roberto $
** Tag methods
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: ltm.h,v 2.11 2011/02/28 17:32:10 roberto Exp $
** $Id: ltm.h,v 2.10 2010/04/13 20:48:12 roberto Exp roberto $
** Tag methods
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lua.c,v 1.206 2012/09/29 20:07:06 roberto Exp $
** $Id: lua.c,v 1.205 2012/05/23 15:37:09 roberto Exp roberto $
** Lua stand-alone interpreter
** See Copyright Notice in lua.h
*/
+4 -4
View File
@@ -1,5 +1,5 @@
/*
** $Id: lua.h,v 1.285.1.3 2014/05/07 14:15:55 roberto Exp roberto $
** $Id: lua.h,v 1.284 2013/02/19 18:39:04 roberto Exp roberto $
** Lua - A Scripting Language
** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
** See Copyright Notice at the end of this file
@@ -19,11 +19,11 @@
#define LUA_VERSION_MAJOR "5"
#define LUA_VERSION_MINOR "2"
#define LUA_VERSION_NUM 502
#define LUA_VERSION_RELEASE "4"
#define LUA_VERSION_RELEASE "2"
#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE
#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2015 Lua.org, PUC-Rio"
#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2013 Lua.org, PUC-Rio"
#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
@@ -418,7 +418,7 @@ struct lua_Debug {
/******************************************************************************
* Copyright (C) 1994-2015 Lua.org, PUC-Rio.
* Copyright (C) 1994-2013 Lua.org, PUC-Rio.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
+3 -3
View File
@@ -1,5 +1,5 @@
/*
** $Id: luaconf.h,v 1.176.1.1 2013/04/12 18:48:47 roberto Exp roberto $
** $Id: luaconf.h,v 1.175 2013/01/29 16:00:40 roberto Exp roberto $
** Configuration file for Lua
** See Copyright Notice in lua.h
*/
@@ -326,7 +326,7 @@
/*
@@ LUA_INT32 is a signed integer with exactly 32 bits.
@@ LUA_INT32 is an signed integer with exactly 32 bits.
@@ LUAI_UMEM is an unsigned integer big enough to count the total
@* memory used by Lua.
@@ LUAI_MEM is a signed integer big enough to count the total memory
@@ -350,7 +350,7 @@
/*
@@ LUAI_MAXSTACK limits the size of the Lua stack.
** CHANGE it if you need a different limit. This limit is arbitrary;
** its only purpose is to stop Lua from consuming unlimited stack
** its only purpose is to stop Lua to consume unlimited stack
** space (and to reserve some numbers for pseudo-indices).
*/
#if LUAI_BITSINT >= 32
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lualib.h,v 1.43 2011/12/08 12:11:37 roberto Exp $
** $Id: lualib.h,v 1.42 2011/05/25 14:12:28 roberto Exp roberto $
** Lua standard libraries
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lundump.c,v 2.22 2012/05/08 13:53:33 roberto Exp $
** $Id: lundump.c,v 2.21 2012/03/19 22:58:09 roberto Exp roberto $
** load precompiled Lua chunks
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lundump.h,v 1.39 2012/05/08 13:53:33 roberto Exp $
** $Id: lundump.h,v 1.38 2011/05/17 12:42:43 roberto Exp roberto $
** load precompiled Lua chunks
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lvm.c,v 2.155 2013/03/16 21:10:18 roberto Exp $
** $Id: lvm.c,v 2.154 2012/08/16 17:34:28 roberto Exp roberto $
** Lua virtual machine
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lvm.h,v 2.18 2013/01/08 14:06:55 roberto Exp $
** $Id: lvm.h,v 2.17 2011/05/31 18:27:56 roberto Exp roberto $
** Lua virtual machine
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lzio.c,v 1.35 2012/05/14 13:34:18 roberto Exp $
** $Id: lzio.c,v 1.34 2011/07/15 12:35:32 roberto Exp roberto $
** Buffered streams
** See Copyright Notice in lua.h
*/
+1 -1
View File
@@ -1,5 +1,5 @@
/*
** $Id: lzio.h,v 1.26 2011/07/15 12:48:03 roberto Exp $
** $Id: lzio.h,v 1.25 2011/07/15 12:35:32 roberto Exp roberto $
** Buffered streams
** See Copyright Notice in lua.h
*/
+94 -62
View File
@@ -4,36 +4,62 @@
# == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT =======================
CWARNS= -pedantic -Waggregate-return -Wcast-align \
-Wmissing-prototypes -Wpointer-arith -Wshadow \
-Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings
# -Wcast-qual
CWARNSC=-pedantic -Wextra \
-Waggregate-return \
-Wcast-align \
-Wdisabled-optimization \
-Wpointer-arith \
-Wshadow \
-Wsign-compare \
-Wundef \
-Wwrite-strings \
-Wredundant-decls \
-Wdisabled-optimization \
-Wstrict-aliasing \
# the next warnings generate to much noise, so they are disabled
# -Wsign-conversion \
# -Wconversion \
# -Wlogical-op \
# -Wstrict-overflow=2 \
# -Wformat=2 \
# -Wcast-qual \
# -DEXTERNMEMCHECK -DHARDSTACKTESTS
# The next warnings are not valid for C++
CWARNS= $(CWARNSC) \
-Wdeclaration-after-statement \
-Wmissing-prototypes \
-Wnested-externs \
-Wstrict-prototypes \
-Wc++-compat \
-Wold-style-definition \
# -DEXTERNMEMCHECK -DHARDSTACKTESTS -DHARDMEMTESTS -DTRACEMEM='"tempmem"'
# -g -DLUA_USER_H='"ltests.h"'
# -fomit-frame-pointer #-pg -malign-double
TESTS= -g -DLUA_USER_H='"ltests.h"'
# -DLUA_USE_CTYPE -DLUA_USE_APICHECK
TESTS= -DLUA_USER_H='"ltests.h"'
LOCAL = $(TESTS) $(CWARNS)
# -mtune=native -fomit-frame-pointer
LOCAL = $(TESTS) $(CWARNS) -g
CC= gcc
CFLAGS= -Wall $(MYCFLAGS) -O2
AR= ar rcu
RANLIB= ranlib
RM= rm -f
MYCFLAGS= $(LOCAL)
MYLDFLAGS=
MYLIBS=
# enable Linux goodies
MYCFLAGS= $(LOCAL) -DLUA_USE_LINUX
MYLDFLAGS= -Wl,-E
MYCFLAGS= $(LOCAL) -DLUA_USE_LINUX -DLUA_COMPAT_ALL
MYLDFLAGS= $(LOCAL) -Wl,-E
MYLIBS= -ldl -lreadline -lhistory -lncurses
CC= gcc
CFLAGS= -Wall -O2 $(MYCFLAGS)
# CC= ~lhf/sunstudio12/bin/cc
# CFLAGS= -xO5 -v -Xc -native -xstrconst
AR= ar rcu
RANLIB= ranlib
RM= rm -f
# == END OF USER SETTINGS. NO NEED TO CHANGE ANYTHING BELOW THIS LINE =========
@@ -41,18 +67,18 @@ MYLIBS= -ldl -lreadline -lhistory -lncurses
LIBS = -lm
CORE_T= liblua.a
CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \
lundump.o lvm.o lzio.o ltests.o
CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \
lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \
ltm.o lundump.o lvm.o lzio.o ltests.o
AUX_O= lauxlib.o
LIB_O= lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o \
loadlib.o linit.o
lbitlib.o loadlib.o lcorolib.o linit.o
LUA_T= lua
LUA_O= lua.o
LUAC_T= luac
LUAC_O= luac.o print.o
# LUAC_T= luac
# LUAC_O= luac.o print.o
ALL_T= $(CORE_T) $(LUA_T) $(LUAC_T)
ALL_O= $(CORE_O) $(LUA_O) $(LUAC_O) $(AUX_O) $(LIB_O)
@@ -92,64 +118,70 @@ echo:
@echo "MYLIBS = $(MYLIBS)"
@echo "DL = $(DL)"
# DO NOT DELETE
$(ALL_O): makefile
lapi.o: lapi.c lua.h luaconf.h lapi.h lobject.h llimits.h ldebug.h \
lstate.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h \
lundump.h lvm.h
# DO NOT DELETE
# automatically made with 'gcc -MM'
lapi.o: lapi.c lua.h luaconf.h lapi.h llimits.h lstate.h lobject.h ltm.h \
lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h lstring.h ltable.h lundump.h \
lvm.h
lauxlib.o: lauxlib.c lua.h luaconf.h lauxlib.h
lbaselib.o: lbaselib.c lua.h luaconf.h lauxlib.h lualib.h
lbitlib.o: lbitlib.c lua.h luaconf.h lauxlib.h lualib.h
lcode.o: lcode.c lua.h luaconf.h lcode.h llex.h lobject.h llimits.h \
lzio.h lmem.h lopcodes.h lparser.h ltable.h ldebug.h lstate.h ltm.h \
ldo.h lgc.h
lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h lgc.h \
lstring.h ltable.h
lcorolib.o: lcorolib.c lua.h luaconf.h lauxlib.h lualib.h
lctype.o: lctype.c lctype.h lua.h luaconf.h llimits.h
ldblib.o: ldblib.c lua.h luaconf.h lauxlib.h lualib.h
ldebug.o: ldebug.c lua.h luaconf.h lapi.h lobject.h llimits.h lcode.h \
llex.h lzio.h lmem.h lopcodes.h lparser.h ltable.h ldebug.h lstate.h \
ltm.h ldo.h lfunc.h lstring.h lgc.h lvm.h
ldo.o: ldo.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \
lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lparser.h ltable.h \
lstring.h lundump.h lvm.h
ldump.o: ldump.c lua.h luaconf.h lobject.h llimits.h lopcodes.h lstate.h \
ltm.h lzio.h lmem.h lundump.h
lfunc.o: lfunc.c lua.h luaconf.h lfunc.h lobject.h llimits.h lgc.h lmem.h \
lstate.h ltm.h lzio.h
ldebug.o: ldebug.c lua.h luaconf.h lapi.h llimits.h lstate.h lobject.h \
ltm.h lzio.h lmem.h lcode.h llex.h lopcodes.h lparser.h ldebug.h ldo.h \
lfunc.h lstring.h lgc.h ltable.h lvm.h
ldo.o: ldo.c lua.h luaconf.h lapi.h llimits.h lstate.h lobject.h ltm.h \
lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h lopcodes.h lparser.h \
lstring.h ltable.h lundump.h lvm.h
ldump.o: ldump.c lua.h luaconf.h lobject.h llimits.h lstate.h ltm.h \
lzio.h lmem.h lundump.h
lfunc.o: lfunc.c lua.h luaconf.h lfunc.h lobject.h llimits.h lgc.h \
lstate.h ltm.h lzio.h lmem.h
lgc.o: lgc.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \
lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h
lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h
linit.o: linit.c lua.h luaconf.h lualib.h lauxlib.h
liolib.o: liolib.c lua.h luaconf.h lauxlib.h lualib.h
llex.o: llex.c lua.h luaconf.h ldo.h lobject.h llimits.h lstate.h ltm.h \
lzio.h lmem.h llex.h lparser.h ltable.h lstring.h lgc.h
llex.o: llex.c lua.h luaconf.h lctype.h llimits.h ldo.h lobject.h \
lstate.h ltm.h lzio.h lmem.h llex.h lparser.h lstring.h lgc.h ltable.h
lmathlib.o: lmathlib.c lua.h luaconf.h lauxlib.h lualib.h
lmem.o: lmem.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \
ltm.h lzio.h lmem.h ldo.h
ltm.h lzio.h lmem.h ldo.h lgc.h
loadlib.o: loadlib.c lua.h luaconf.h lauxlib.h lualib.h
lobject.o: lobject.c lua.h luaconf.h ldo.h lobject.h llimits.h lstate.h \
ltm.h lzio.h lmem.h lstring.h lgc.h lvm.h
lopcodes.o: lopcodes.c lua.h luaconf.h lobject.h llimits.h lopcodes.h
lobject.o: lobject.c lua.h luaconf.h lctype.h llimits.h ldebug.h lstate.h \
lobject.h ltm.h lzio.h lmem.h ldo.h lstring.h lgc.h lvm.h
lopcodes.o: lopcodes.c lopcodes.h llimits.h lua.h luaconf.h
loslib.o: loslib.c lua.h luaconf.h lauxlib.h lualib.h
lparser.o: lparser.c lua.h luaconf.h lcode.h llex.h lobject.h llimits.h \
lzio.h lmem.h lopcodes.h lparser.h ltable.h ldebug.h lstate.h ltm.h \
ldo.h lfunc.h lstring.h lgc.h
lstate.o: lstate.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \
ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h llex.h lstring.h ltable.h
lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h lfunc.h \
lstring.h lgc.h ltable.h
lstate.o: lstate.c lua.h luaconf.h lapi.h llimits.h lstate.h lobject.h \
ltm.h lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h llex.h lstring.h \
ltable.h
lstring.o: lstring.c lua.h luaconf.h lmem.h llimits.h lobject.h lstate.h \
ltm.h lzio.h lstring.h lgc.h
ltm.h lzio.h lstring.h lgc.h
lstrlib.o: lstrlib.c lua.h luaconf.h lauxlib.h lualib.h
ltable.o: ltable.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \
ltm.h lzio.h lmem.h ldo.h lgc.h ltable.h
ltm.h lzio.h lmem.h ldo.h lgc.h lstring.h ltable.h
ltablib.o: ltablib.c lua.h luaconf.h lauxlib.h lualib.h
ltests.o: ltests.c lua.h luaconf.h lapi.h lobject.h llimits.h lauxlib.h \
lcode.h llex.h lzio.h lmem.h lopcodes.h lparser.h ltable.h ldebug.h \
lstate.h ltm.h ldo.h lfunc.h lstring.h lgc.h lualib.h
ltests.o: ltests.c lua.h luaconf.h lapi.h llimits.h lstate.h lobject.h \
ltm.h lzio.h lmem.h lauxlib.h lcode.h llex.h lopcodes.h lparser.h \
lctype.h ldebug.h ldo.h lfunc.h lstring.h lgc.h ltable.h lualib.h
ltm.o: ltm.c lua.h luaconf.h lobject.h llimits.h lstate.h ltm.h lzio.h \
lmem.h lstring.h lgc.h ltable.h
lmem.h lstring.h lgc.h ltable.h
lua.o: lua.c lua.h luaconf.h lauxlib.h lualib.h
lundump.o: lundump.c lua.h luaconf.h ldebug.h lstate.h lobject.h \
llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lopcodes.h lstring.h lgc.h \
lundump.h
llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lstring.h lgc.h lundump.h
lvm.o: lvm.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \
lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h ltable.h lvm.h
lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h ltable.h lvm.h
lzio.o: lzio.c lua.h luaconf.h llimits.h lmem.h lstate.h lobject.h ltm.h \
lzio.h
lzio.h
# (end of Makefile)