Roberto Ierusalimschy
b42430fd3a
'lineinfo' in prototypes saved as differences instead of absolute
...
values, so that the array can use bytes instead of ints, reducing
its size. (A new array 'abslineinfo' is used when line differences
do not fit in a byte.)
2017-06-27 08:35:31 -03:00
Roberto Ierusalimschy
73ec04fcf3
no more 'DEADKEY'. Table traversals do not need to consider dead keys;
...
if the key is dead, it cannot be given to 'next'. Instead, we now
use a 'table' tag without the collectable bit, which makes it
a unique tag good enough to reserve space.
2017-06-12 11:21:44 -03:00
Roberto Ierusalimschy
b6f87491af
in hash nodes, keys are stored in separate pieces to avoid wasting
...
space with alignments
2017-06-09 13:48:44 -03:00
Roberto Ierusalimschy
8821746841
updated GC states in function 'T.gcstate'
2017-05-31 15:54:58 -03:00
Roberto Ierusalimschy
2376eb6347
barrier for prototype's cache (with new gray list 'protogray' to keep
...
prototypes to have their caches visited again) + constant 'MAXMISS'
2017-05-04 10:32:01 -03:00
Roberto Ierusalimschy
2caecf1b3e
type 'L_Umaxalign' replaced by macro 'LUAI_MAXALIGN', which is also added
...
to the auxlib buffer
2017-04-24 15:06:12 -03:00
Roberto Ierusalimschy
69371c4b84
'KGC_NORMAL' -> 'KGC_INC' + emergency GC signalled by flag (instead
...
of mode)
2017-04-24 13:59:26 -03:00
Roberto Ierusalimschy
7ae180f8e8
corrected some checks about colors of old objects + new test function
...
'gcage'
2017-04-19 15:46:47 -03:00
Roberto Ierusalimschy
4679294796
memory check adapted to generational mode
2017-04-18 16:42:12 -03:00
Roberto Ierusalimschy
f5f3df3bd1
generational collection: new attempt (still incomplete)
2017-02-23 18:07:34 -03:00
Roberto Ierusalimschy
b2aa2ba046
using constants for "_LOADED" and "PRELOAD"
2016-12-04 18:17:24 -02:00
Roberto Ierusalimschy
7b1fba69b7
using 'lastfree == NULL' to signal that table is using the dummy
...
node for its hash part + new macro 'allocsizenode'
2016-11-07 10:38:35 -02:00
Roberto Ierusalimschy
880f82d089
'*' as a number means stack size, so that "return *" returns
...
all values in the stack.
2015-10-12 13:38:19 -03:00
Roberto Ierusalimschy
53be1451a8
new definition for macro 'checkliveness'
2015-09-08 13:55:43 -03:00
Roberto Ierusalimschy
2de3361c6c
detail
2015-07-01 14:47:12 -03:00
Roberto Ierusalimschy
cbe05b48bb
using 'lua_longassert' to avoid warnings
2015-06-18 11:25:26 -03:00
Roberto Ierusalimschy
4998e852ec
new function 'log2' to test 'luaO_ceillog2' (if needed)
2015-04-02 18:10:21 -03:00
Roberto Ierusalimschy
331632e8d8
code detail ('if' -> '?:')
2015-03-13 13:24:50 -03:00
Roberto Ierusalimschy
0cf3b6495a
'ci_func' don't need to be exported
2015-03-11 13:10:41 -03:00
Roberto Ierusalimschy
7e2015a46d
size of short strings stored in a single byte, to reduce the size
...
of struct 'TString'
2015-01-16 14:54:37 -02:00
Roberto Ierusalimschy
77e786d436
stupid bug in T.stacklevel (not in use by the tests)
2014-12-18 10:13:42 -02:00
Roberto Ierusalimschy
741ad97e92
new parameter for testC instruction 'pcall' (error handler)
2014-12-10 09:30:51 -02:00
Roberto Ierusalimschy
177807f21e
casts ('(int)' -> 'cast_int')
2014-11-29 15:38:33 -02:00
Roberto Ierusalimschy
fd179ab4b8
clearer notation for "compare" instruction
2014-11-25 12:51:33 -02:00
Roberto Ierusalimschy
5bdfefd3a5
allows calling luaL_checkstack with no message (in runC)
2014-11-14 16:15:17 -02:00
Roberto Ierusalimschy
6624ccff26
independent code for 'printstack' + test for panic function can
...
ran code there
2014-11-11 15:15:06 -02:00
Roberto Ierusalimschy
79b0d05480
new function 'T.checkpanic' (to check panic errors)
2014-11-10 15:41:36 -02:00
Roberto Ierusalimschy
b6911c177d
luaL_loadbuffer replaced by luaL_loadstring (to test luaL_loadstring)
...
+ 'rawgetp'/'rawsetp' added to C interpreter
2014-11-10 12:47:29 -02:00
Roberto Ierusalimschy
a113e1498d
when checking thread consistency, check its entire stack (always
...
the entire stack must have valid values)
2014-11-07 16:07:17 -02:00
Roberto Ierusalimschy
28fdbcf393
added include for 'lprefix.h', for stuff that must be added before
...
any other header file
2014-11-02 17:19:04 -02:00
Roberto Ierusalimschy
4542fb9f78
comments (a few extra quotes around identifiers)
2014-10-30 16:53:28 -02:00
Roberto Ierusalimschy
7314acaa80
'T.limits' reports some more useful limits
2014-10-27 15:00:02 -02:00
Roberto Ierusalimschy
bdf566a8a3
`name' in comments changed to 'name'
2014-10-25 09:50:46 -02:00
Roberto Ierusalimschy
2a21f6c894
'lua_Kcontext' -> 'lua_KContext'
2014-10-07 15:29:13 -03:00
Roberto Ierusalimschy
e14a02c24f
when thread yields, real "func" is in field 'extra', not in 'func'
2014-10-06 14:06:49 -03:00
Roberto Ierusalimschy
798660c9cd
deprecated "cast macros" ('luaL_checkint', 'luaL_optint', etc.)
2014-10-01 08:54:56 -03:00
Roberto Ierusalimschy
3a15c7ce43
size for array part of a table ('sizearray') changed from 'int' to
...
'unsigned int', which allows twice as many elements in the array part
2014-09-04 15:15:29 -03:00
Roberto Ierusalimschy
22952d8973
'T.gccolor' classify dead objects too
2014-09-01 14:58:55 -03:00
Roberto Ierusalimschy
2be88d5084
'lua_Ctx' -> 'lua_Kcontext'
2014-08-01 14:33:08 -03:00
Roberto Ierusalimschy
73ad16b5c6
no need for type 'pCallInfo'
2014-07-23 13:44:30 -03:00
Roberto Ierusalimschy
3c6d0aaa7d
'iswhite' and related macros now can work directly on any object
...
(no need to convert to 'GCObject')
2014-07-19 12:14:46 -03:00
Roberto Ierusalimschy
bb12903120
type 'Udata' refers directly to structure inside the union (union
...
used only for aligning purposes now)
2014-07-18 11:46:47 -03:00
Roberto Ierusalimschy
ca41b43f53
type 'TString' refers directly to the structure inside the union
...
(union used only for size purposes)
2014-07-18 10:36:14 -03:00
Roberto Ierusalimschy
56137d58ff
added check for conversion 'obj2gco' (and corrections for small
...
problems detected by this check)
2014-07-18 09:17:54 -03:00
Roberto Ierusalimschy
9aec500a26
no need for field 'gch' anymore
2014-07-17 14:27:49 -03:00
Roberto Ierusalimschy
1aa4f69b51
new type 'lua_Ctx' for continuation-function contexts (to allow type
...
to be configurable)
2014-07-17 10:53:37 -03:00
Roberto Ierusalimschy
c229ed597f
'requiref' checks 'package.loaded' before loading a module
2014-07-16 11:51:36 -03:00
Roberto Ierusalimschy
a77d263e86
unsigned-manipulation functions (lua_puhsunsigned, lua_tounsigned, etc.)
...
deprecated
2014-06-26 15:38:28 -03:00
Roberto Ierusalimschy
d2ab1aef31
detail (avoid too large macro)
2014-06-19 15:29:30 -03:00
Roberto Ierusalimschy
3fc25ff15b
macro 'checkobjref' accepts NULL (as all its uses checked for NULL
...
before) + user value from a userdata may not be a GC object
2014-06-17 14:13:29 -03:00
Roberto Ierusalimschy
6f6fd96e3b
new type lua_KFunction + no more 'lua_getctx'
2014-06-10 14:41:38 -03:00
Roberto Ierusalimschy
5a5a834975
new API function 'lua_rotate'
2014-05-13 16:40:28 -03:00
Roberto Ierusalimschy
a09bd59615
'T.totalmem' accepts 0 for unlimited memory
2014-05-08 16:08:46 -03:00
Roberto Ierusalimschy
5c46b7b8cf
instructions in 'runC' sorted alphabetically + new instructions
...
'tointeger'/'tounsigned'
2014-04-14 15:42:44 -03:00
Roberto Ierusalimschy
c86b9da022
userdata can have any Lua value as uservalue
2014-02-19 10:52:42 -03:00
Roberto Ierusalimschy
3f78de256e
no need to keep threads in a different GC list, now that there is the
...
'twups' list
2014-02-18 10:46:26 -03:00
Roberto Ierusalimschy
ffa96d988d
field 'op' renamed to 'open'
2014-02-15 11:12:01 -02:00
Roberto Ierusalimschy
733c58595b
no more local collection
2014-02-13 10:11:34 -02:00
Roberto Ierusalimschy
ba3586cc90
keep a single list of objects to be finalized (with local and non-local
...
objects), to ensure finalization order
2014-02-11 10:18:12 -02:00
Roberto Ierusalimschy
1ea2d20f74
first implementation of '<<', '>>', and '~' (bitwise not)
2013-12-30 18:47:58 -02:00
Roberto Ierusalimschy
c0edab0f6d
first implementation of bitwise operators '&' (band), '|' (bor),
...
and '~' (bxor)
2013-12-18 12:12:03 -02:00
Roberto Ierusalimschy
a948054a19
new order for binary operations (grouping them by type of result)
2013-12-16 17:06:52 -02:00
Roberto Ierusalimschy
4eeb1831be
new names and better order for GC states (sweep first lists that
...
can have dead objects)
2013-09-11 11:47:08 -03:00
Roberto Ierusalimschy
dd373a8f66
threads are kept in a separated GC list, linked after the main thread
2013-09-11 11:09:55 -03:00
Roberto Ierusalimschy
d8aa8dd97e
objects in list 'tobefnz' have a GC life-cycle like all others
...
(specifically they are cleaned during sweep phase)
2013-09-11 09:47:48 -03:00
Roberto Ierusalimschy
79ab21be90
more invariants added to memory check
2013-09-11 09:26:14 -03:00
Roberto Ierusalimschy
d3bbb34c24
back to open hashing for the string table (but with a different
...
'hnext' field, to strings are still collected like all other
objects)
2013-09-05 16:31:49 -03:00
Roberto Ierusalimschy
0ad15fc100
better (and correct!) control of 'maybedead'
2013-09-04 12:34:24 -03:00
Roberto Ierusalimschy
aeff4f79fa
local collection now calls finalizers
2013-09-03 12:37:10 -03:00
Roberto Ierusalimschy
1bf4faec64
new GC state to sweep 'localgc' list + small changes in sweep control
2013-08-30 16:14:26 -03:00
Roberto Ierusalimschy
90972ff136
LOCALBLACK changed to LOCALMARK and used also to control whether object
...
is in 'localgc' list + luaC_newobj by default puts object in 'localgc'
list
2013-08-27 17:04:00 -03:00
Roberto Ierusalimschy
af35c7f398
upvalues collected by reference count
2013-08-27 15:53:35 -03:00
Roberto Ierusalimschy
742b7377d3
Lua closures go to local, too
2013-08-26 09:41:10 -03:00
Roberto Ierusalimschy
33c49f7fa0
some details over new implementation of string table
2013-08-22 12:21:48 -03:00
Roberto Ierusalimschy
ae800656c9
change in string table: string table is now independent of GC lists; all
...
strings live in 'normal' GC lists
2013-08-21 16:21:16 -03:00
Roberto Ierusalimschy
8f6b80aa1d
GC bits SEPARATED and FINALIZEDBIT mixed in FINALIZEDBIT (with simpler
...
control)
2013-08-20 14:46:34 -03:00
Roberto Ierusalimschy
8e6b7ef9ab
new function 'isgclocal' + test for GC consistency of prototype's caches
2013-08-19 11:16:33 -03:00
Roberto Ierusalimschy
caceeab750
'next' field for tables changed from pointer to integer (for better
...
alignment on 64-bit machines)
2013-08-18 13:12:18 -03:00
Roberto Ierusalimschy
3991312b94
details
2013-08-16 16:02:31 -03:00
Roberto Ierusalimschy
439d74e29f
added 'local' bit (true => object is only refered by local variables)
2013-08-16 15:55:49 -03:00
Roberto Ierusalimschy
623e388bb4
double-linked list of all upvalues elliminated and changed to a
...
traversal of all non-marked threads
2013-08-07 09:18:11 -03:00
Roberto Ierusalimschy
677d90165f
no more generational collection !!!
2013-08-05 13:58:28 -03:00
Roberto Ierusalimschy
81102d3689
try to avoid warnings when converting int to pointer
2013-06-20 18:59:13 -03:00
Roberto Ierusalimschy
0ce3018109
'pushnum' pushes a "number" (float) + new C instruction 'pushint'
2013-05-07 16:01:16 -03:00
Roberto Ierusalimschy
a2f5c28a80
new operation '//' (integer division)
2013-04-26 10:08:29 -03:00
Roberto Ierusalimschy
52cb90ec75
detail
2013-04-24 16:41:48 -03:00
Roberto Ierusalimschy
75250a237c
typos in comments
2013-03-16 18:10:18 -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
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
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
43bfb60ac8
new auxiliary function 'luaI_printinst' (to print a single instruction)
2012-06-07 15:52:47 -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
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
a4b96ce9a3
first implementation of long strings
2012-01-25 19:05:40 -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
e0e406ead3
extra argument to instruction 'checkstack' (in 'testC')
2011-11-09 17:08:07 -02:00
Roberto Ierusalimschy
5645a84368
detail about 'trick' function (nil turn it off)
2011-09-24 18:11:29 -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