Commit Graph

327 Commits

Author SHA1 Message Date
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 d120ec29ca bug in OP_SELF when method name goes to a register 2011-04-28 11:00:11 -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 427ee519db new instruction OP_LOADKX (to replace OP_LOADK with extra argument) 2011-04-07 15:14:12 -03: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 026a7e92be bug in some short-circuit optimizations 2011-01-31 12:28:41 -02: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 a71c5f6f53 typo in comments 2010-06-30 11:11:17 -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 25c557ec63 first version of _ENV; no more global variables 2010-03-12 16:14:06 -03:00
Roberto Ierusalimschy 0fe2576a39 new instructions to optimize indexing on upvalues 2010-02-26 17:40:29 -03:00
Roberto Ierusalimschy cef96b73e1 added casts from int to enumerations to follow C++ rules 2010-01-11 15:38:30 -02: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 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 d7872dcf91 small optimization (reorder of BinOpr enum to unify some cases
in switches)
2009-06-18 13:35:05 -03:00
Roberto Ierusalimschy 96fa34ec32 constant folding uses 'luaO_arith' to perform basic operations 2009-06-17 14:49:09 -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 2598138ece new function 'luaK_codek' (detail) 2009-06-10 13:52:03 -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 a4d3080fe3 SETLIST extra argument now is an "instruction" (OP_EXTRAARG) 2008-04-02 14:38:54 -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 5f4f0d4a63 no more optimization to avoid LOADNIL at function start 2007-03-27 11:11:38 -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 742b8be0c1 detail 2006-10-10 14:39:00 -03:00
Roberto Ierusalimschy 3c8865cf66 detail 2006-09-22 17:24:38 -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 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 ee41bc03ab details 2006-06-22 13:12:59 -03:00
Roberto Ierusalimschy 1ae0b6c0bf BUG: should copy the union, not (some of) its fields 2006-03-21 16:28:49 -03:00
Roberto Ierusalimschy c505f341d6 small changes in casts 2005-12-22 14:19:56 -02:00
Roberto Ierusalimschy db724e14e0 new macro luai_numisnan 2005-11-25 11:29:32 -02:00
Roberto Ierusalimschy 521a452f28 'mod' may also raise an error when applied to zero 2005-11-16 09:55:27 -02:00
Roberto Ierusalimschy e43e95553f more privacy 2005-11-08 17:44:31 -02:00
Roberto Ierusalimschy 8e48ebb638 no more L in numer-operator macros (some functions that use those macros
have no access to L)
2005-10-24 15:37:52 -02:00
Roberto Ierusalimschy e9b06c506f small optimization 2005-10-13 09:21:51 -03:00
Roberto Ierusalimschy e251e84e0f constant folding optimizations 2005-10-09 17:05:48 -03:00
Roberto Ierusalimschy 5dbb870815 small optimization for local declarations without initializations 2005-09-30 11:23:33 -03:00
Roberto Ierusalimschy 3b19af44b0 new method to handle tests without values (negative values) 2005-08-29 17:49:21 -03:00
Roberto Ierusalimschy 074352911f new coding for while and repeat (with new scoping for repeat) 2005-08-17 15:32:09 -03:00
Roberto Ierusalimschy 746a1d612b small bug (type error) 2005-06-07 15:53:45 -03:00
Roberto Ierusalimschy f21e9c172f details 2005-05-20 12:53:42 -03:00
Roberto Ierusalimschy 04bbd01171 new operation *t (for size of t) (may yet be removed...) 2005-03-16 13:59:21 -03:00
Roberto Ierusalimschy 370d31a559 `luac´ -> `luai' (to avoid confusion with other luac stuff) 2005-03-09 13:28:07 -03:00
Roberto Ierusalimschy f8df21bd20 `luaconf.h´ exports all its definitions always (so all of them
must have a lua/LUA prefix).
2005-03-08 17:10:05 -03:00
Roberto Ierusalimschy 8ddfe3df29 macros for all arithmetic operations over lua_Numbers 2005-01-10 16:17:39 -02:00
Roberto Ierusalimschy c78940f21a static names do not need `luaX_' prefix 2004-12-03 18:50:25 -02:00
Roberto Ierusalimschy 5ee87acd6b small optimization for boolean constants + new format for SETLIST opcode 2004-10-04 16:01:53 -03:00
Roberto Ierusalimschy 4b12eff801 small correction (less conservative write barrier for tables) 2004-08-24 17:09:11 -03:00
Roberto Ierusalimschy 31e48f26ed small bug 2004-07-16 10:30:53 -03:00
Roberto Ierusalimschy 02a2c01ccd new way to code RK values 2004-06-29 15:49:02 -03:00
Roberto Ierusalimschy 616438fe9a new way to use `vararg' parameters (with `...') 2004-05-31 15:51:50 -03:00
Roberto Ierusalimschy b4cd38ba6c new scheme for configuration through `luaconf.h' 2004-04-30 17:13:38 -03:00
Roberto Ierusalimschy 47fc57a252 `TObject' renamed to `TValue' + other name changes and better assertions
for incremental garbage collection
2003-12-10 10:13:36 -02:00
Roberto Ierusalimschy df429f163a First version of incremental GC 2003-12-09 14:56:11 -02:00
Roberto Ierusalimschy 8bc6c68021 details 2003-11-19 17:59:18 -02:00
Roberto Ierusalimschy 8332d5c8a5 parser fully reentrant(!) 2003-08-27 18:01:44 -03:00
Roberto Ierusalimschy c116dcb92b better information about instruction behavior (use of arguments) 2003-05-14 09:09:12 -03:00
Roberto Ierusalimschy 0d88545b82 warnings from several compilers (mainly typecasts when lua_Number is float) 2003-04-03 10:35:34 -03:00
Roberto Ierusalimschy e1a424e8a3 avoid the identifier `index' (clashes with BSD `index' function) 2003-02-27 09:33:07 -03:00
Roberto Ierusalimschy 73517e86b0 OP_TFORLOOP uses extra stack space 2002-12-11 10:34:22 -02:00
Roberto Ierusalimschy 27c6b4d422 each .c file defines its own name 2002-12-04 15:38:31 -02:00
Roberto Ierusalimschy 41fd639cab documentation for write barriers 2002-11-14 14:15:53 -02:00
Roberto Ierusalimschy c196348717 in case of memory allocation errors, sizecode and sizelineinfo can
be different
2002-10-16 17:40:58 -03:00
Roberto Ierusalimschy fbc23d0245 details 2002-08-21 15:56:33 -03:00
Roberto Ierusalimschy 6c283b2f4f new simetric format for ABC instructions, to avoid exchanging operands
for `commutative' operators
2002-08-20 17:03:05 -03:00
Roberto Ierusalimschy 5037196f6f new macros `ttis*' 2002-08-05 11:50:39 -03:00
Roberto Ierusalimschy 864c96f36c new fallback for equality `__eq' 2002-06-13 10:39:55 -03:00
Roberto Ierusalimschy eeab473fc8 new fallback __le (less equal), for partial order 2002-06-12 11:56:22 -03:00
Roberto Ierusalimschy cfff013586 detail 2002-06-03 14:47:18 -03:00
Roberto Ierusalimschy 46c471d7e9 new `__newindex' eventfield 2002-05-27 17:35:40 -03:00
Roberto Ierusalimschy 1c328a191a no more `global' declarations 2002-05-14 14:52:22 -03:00
Roberto Ierusalimschy b55fded18c details about jump optimization 2002-05-13 10:07:48 -03:00
Roberto Ierusalimschy 2dadc81822 cleaner implementation of code generation for jumps 2002-05-10 16:22:11 -03:00
Roberto Ierusalimschy b487975344 optimization for `while' (first version) 2002-05-10 14:02:32 -03:00
Roberto Ierusalimschy 78b40bf57d `skip' instructions must be followed by a jump 2002-05-09 11:14:34 -03:00
Roberto Ierusalimschy dea6b6da94 new function `lua_vpushstr' to replace uses of `sprintf' 2002-05-07 14:36:56 -03:00
Roberto Ierusalimschy 0dbf0c5953 new format for test intructions (handle NaN correctly) 2002-05-06 12:51:41 -03:00
Roberto Ierusalimschy 9b38a696d5 avoid names that differ only in capitalization 2002-04-24 17:07:46 -03:00
Roberto Ierusalimschy 3ee1efa7b2 some simplifications 2002-04-22 11:37:09 -03:00
Roberto Ierusalimschy f1f271ae76 details 2002-04-10 15:05:08 -03:00
Roberto Ierusalimschy 13ab5a6bb1 details 2002-04-02 17:43:08 -03:00
Roberto Ierusalimschy 801aaf37b1 simpler implementation for line information 2002-03-25 14:47:14 -03:00
Roberto Ierusalimschy 2626708b72 details 2002-03-21 17:31:43 -03:00
Roberto Ierusalimschy bd8b9c94b3 generic for (with any number of control variables) 2002-03-08 16:10:32 -03:00
Roberto Ierusalimschy 8a1a512c64 lu_byte is enough for those fields (maxstack < 256) 2002-03-05 09:42:47 -03:00
Roberto Ierusalimschy 38b0e6128d simpler implementation for `for' loops 2002-02-05 20:39:12 -02:00
Roberto Ierusalimschy 74907fb71e OP_LOADINT can be done by OP_LOADK 2002-01-25 19:50:39 -02:00
Roberto Ierusalimschy b38e594ed7 small improvements 2002-01-18 15:39:40 -02:00
Roberto Ierusalimschy 7ab7703b53 cleaner semantics for test instructions (skips) 2002-01-16 20:03:57 -02:00
Roberto Ierusalimschy f083812c02 first implementation of coroutines 2002-01-09 20:02:47 -02:00
Roberto Ierusalimschy 9aff171f3b new type `boolean' 2001-12-11 20:48:44 -02:00
Roberto Ierusalimschy 72659a0605 no more explicit support for wide-chars; too much troble... 2001-11-28 18:13:13 -02:00
Roberto Ierusalimschy abdbe883a8 first implementation of unrestricted static scoping 2001-09-07 14:39:10 -03:00
Roberto Ierusalimschy e1d072571e better syntax for type casts 2001-08-31 16:46:07 -03:00
Roberto Ierusalimschy 8c8ad5f3ff better locality of assignment of table values 2001-08-30 17:56:43 -03:00
Roberto Ierusalimschy c3d72096c4 use a table to find (and reuse) constants when parsing 2001-08-27 12:16:28 -03:00
Roberto Ierusalimschy 95988676d8 small bug when creating AsBc instructions in 16-bit machines 2001-07-24 14:19:07 -03:00
Roberto Ierusalimschy a598804a04 small bug in luaK_self (side effects) 2001-07-17 11:30:44 -03:00
Roberto Ierusalimschy 8e586c13fc cleaner way to ensure alignment for strings and userdata 2001-06-15 17:36:57 -03:00
Roberto Ierusalimschy 89c301d180 `(exp)' adjusts exp to 1 result 2001-06-12 11:36:48 -03:00
Roberto Ierusalimschy 0a1b1acdd3 details about opcode parameters 2001-06-11 11:56:42 -03:00
Roberto Ierusalimschy cbc59592ff new definition for `luaD_call' and `luaD_adjusttop' 2001-06-08 16:01:38 -03:00
Roberto Ierusalimschy 0267168675 details. 2001-06-08 09:29:27 -03:00
Roberto Ierusalimschy ba11831d35 smaller structs for udata and for strings 2001-06-07 12:01:21 -03:00
Roberto Ierusalimschy d5b83ead90 new implementation for userdatas, without `keys' 2001-06-06 15:00:19 -03:00
Roberto Ierusalimschy 762d059a13 new implementation for the Virtual Machine 2001-06-05 15:17:01 -03:00
Roberto Ierusalimschy 572a69b6af name changes 2001-04-23 13:35:45 -03:00
Roberto Ierusalimschy a68635a919 list constructors do not adjust last expression 2001-04-06 15:25:00 -03:00
Roberto Ierusalimschy dd3a63c205 new way to handle `profiles' 2001-03-26 11:31:49 -03:00
Roberto Ierusalimschy 5e870f86a2 optimization for tailcall does not seem to pay itself 2001-03-07 10:22:55 -03:00
Roberto Ierusalimschy 8399df5dcf detail 2001-02-23 17:31:37 -03:00
Roberto Ierusalimschy 39b7978329 first (big) step to support wide chars 2001-02-23 14:17:25 -03:00
Roberto Ierusalimschy 95da574dbc some compilers (wrongly) complain about that 2001-02-12 17:21:19 -02:00
Roberto Ierusalimschy 6548bf7462 warnings from Visual C 2001-02-08 09:19:10 -02:00
Roberto Ierusalimschy 7178a5e34a new way to handle top x L->top 2001-02-07 16:13:49 -02:00
Roberto Ierusalimschy 3b6f8bfbe6 simpler implementation of for loops 2001-01-29 13:26:40 -02:00
Roberto Ierusalimschy caf01b5bfa better implementation for list "for" 2001-01-29 11:14:49 -02:00
Roberto Ierusalimschy 4ac58853dc thead-specific state separated from "global" state 2001-01-19 11:20:30 -02:00
Roberto Ierusalimschy a04de4f0ad no more END opcode 2001-01-15 14:13:24 -02:00
Roberto Ierusalimschy 0183b8030c `free' gets size of the block: complete control over memory use 2000-12-28 10:55:41 -02:00
Roberto Ierusalimschy 8c49e19865 explicit control of size for growing vectors 2000-12-26 16:46:09 -02:00
Roberto Ierusalimschy 4894c27962 lua_Number defined in lua.h (1st version) 2000-12-04 16:33:40 -02:00
Roberto Ierusalimschy 01b00cc292 better control over extensions of char/short to int 2000-11-30 16:50:47 -02:00
Roberto Ierusalimschy dad808a73a new way to count `nblocks' for GC (try to count bytes). 2000-09-29 09:42:13 -03:00
Roberto Ierusalimschy 100bfec39a new implementation for `next' 2000-08-31 11:08:27 -03:00
Roberto Ierusalimschy 44eb7d91ac comments 2000-08-15 15:28:48 -03:00
Roberto Ierusalimschy 58453dc1e1 small bug in symbolic execution 2000-08-14 14:46:27 -03:00
Roberto Ierusalimschy daf09c476f still better error messages 2000-08-10 16:50:47 -03:00
Roberto Ierusalimschy e238efc536 default now is multi-state 2000-08-09 16:16:57 -03:00
Roberto Ierusalimschy 5f22f8961c better code for unary/binary operators 2000-08-09 11:49:13 -03:00
Roberto Ierusalimschy 0802a9df9e no more options for debug information: it is always on 2000-08-08 17:42:07 -03:00
Roberto Ierusalimschy f90bc248b3 new structure for line information 2000-08-08 15:26:05 -03:00
Roberto Ierusalimschy 435f587ed0 (much) better handling of memory alloction errors 2000-08-04 16:38:35 -03:00
Roberto Ierusalimschy cfba572076 remove dummy argument in LUA_ASSERT 2000-06-30 11:35:17 -03:00
Roberto Ierusalimschy 014a09c509 better error messages 2000-06-28 17:21:06 -03:00
Roberto Ierusalimschy afef009fce new version of debug system 2000-06-26 16:28:31 -03:00
Roberto Ierusalimschy b69e712713 new way to generate SETLINEs 2000-06-21 15:13:56 -03:00
Roberto Ierusalimschy f517759507 details 2000-06-21 14:05:49 -03:00
Roberto Ierusalimschy 2e1b32d873 optimizations for "while 1", "until nil", and the like 2000-06-16 14:51:40 -03:00
Roberto Ierusalimschy 1de5587184 `lua.h' is included before any other Lua header file 2000-06-12 10:52:05 -03:00
Roberto Ierusalimschy dbfb810267 cleansing of lparser.c 2000-06-05 11:56:18 -03:00
Roberto Ierusalimschy 677313da32 bug: record-constructor starting with an upvalue name gets an error 2000-05-24 15:04:17 -03:00
Roberto Ierusalimschy ef62b340e0 code cleaner for 16 bits. 2000-05-24 10:54:49 -03:00
Roberto Ierusalimschy 5c2dd7a9e0 array `luaK_opproperties' keeps delta stack and mode for each opcode 2000-05-22 15:44:46 -03:00
Roberto Ierusalimschy 93d93a0bfb first implementation of `for' over tables 2000-05-15 16:48:04 -03:00
Roberto Ierusalimschy 11a7022067 global variables are stored in a Lua table 2000-05-08 16:32:53 -03:00
Roberto Ierusalimschy c4409f69ab details 2000-04-19 10:41:37 -03:00
Roberto Ierusalimschy 71219ccc39 simpler version of `luaK_tostack' 2000-04-17 11:05:34 -03:00
Roberto Ierusalimschy c1666a13e3 better code organization 2000-04-14 14:47:24 -03:00
Roberto Ierusalimschy e7c8393682 optimization INCLOCAL is not necessary, with `for' 2000-04-13 13:51:01 -03:00
Roberto Ierusalimschy f9cf402fbd first implementation of FOR 2000-04-12 15:57:19 -03:00
Roberto Ierusalimschy 54dd5cc7fd reorganization of lcode.c 2000-04-07 16:35:20 -03:00
Roberto Ierusalimschy 031978798c more optimizations 2000-04-07 10:13:11 -03:00
Roberto Ierusalimschy d615e78e08 new optimization: jumps to jumps 2000-04-06 14:36:52 -03:00
Roberto Ierusalimschy 22329e4cdf implementation of BREAK 2000-04-05 14:51:58 -03:00
Roberto Ierusalimschy 4e7e9e8de5 new opcode INCLOCAL. 2000-04-04 17:48:44 -03:00
Roberto Ierusalimschy 213e9febc8 limits now are in `llims.n' 2000-03-24 14:26:08 -03:00
Roberto Ierusalimschy 47b4bf5964 small refactoring. 2000-03-24 09:18:30 -03:00
Roberto Ierusalimschy 374cc888f4 better(?) treatment for SETLINE 2000-03-20 16:15:37 -03:00
Roberto Ierusalimschy da7eb34cd6 optimization for "while 1" and "repeat until nil" 2000-03-17 11:46:04 -03:00
Roberto Ierusalimschy 2c8e28d75a small changes 2000-03-17 10:09:46 -03:00
Roberto Ierusalimschy 06f08f5634 small problems with limits and jumps 2000-03-16 15:03:09 -03:00
Roberto Ierusalimschy 3860c5934e details. 2000-03-15 17:50:33 -03:00
Roberto Ierusalimschy f0b697e01c details 2000-03-13 17:37:16 -03:00
Roberto Ierusalimschy 73aa465a8e some name changes 2000-03-10 15:37:44 -03:00
Roberto Ierusalimschy 3d0577f4b9 small optimizations. 2000-03-10 11:38:10 -03:00
Roberto Ierusalimschy e3cf93ddb6 first implementation of "threaded code" for boolean operations 2000-03-09 10:57:37 -03:00
Roberto Ierusalimschy 88b306f495 some optimizations 2000-03-08 21:19:22 -03:00
Roberto Ierusalimschy 563de491be a better way to control optimizations. 2000-03-04 17:18:15 -03:00
Roberto Ierusalimschy 29e0193425 details 2000-03-03 17:30:47 -03:00
Roberto Ierusalimschy d1ea38580a change of code generation design (independent functions for each opcode) 2000-03-03 15:53:17 -03:00
Roberto Ierusalimschy 3c9d999424 many details (most by lhf). 2000-03-03 11:58:26 -03:00
Roberto Ierusalimschy f7840a3e0b new algorithm to parse expressions + distribution of code between lparser
and lcode.
2000-03-03 09:33:59 -03:00
Roberto Ierusalimschy 39e1f079bd code generator (and optimizer) for Lua 2000-02-22 11:31:19 -02:00