Roberto Ierusalimschy
|
41964648ee
|
long strings are created directly in final position when possible
(instead of using an auxiliar buffer to first create the string
and then allocate the final string and copy result there)
|
2015-09-08 12:41:05 -03:00 |
Roberto Ierusalimschy
|
2b61360d82
|
avoid overflows (detected with 'clang -ftrapv')
|
2015-07-13 10:30:03 -03:00 |
Roberto Ierusalimschy
|
a80cada914
|
new cache for interning strings
|
2015-03-04 10:31:21 -03:00 |
Roberto Ierusalimschy
|
e75c0148c3
|
comments (references to "ANSI C" changed to "ISO C", which is the
international name
|
2014-11-02 17:33:33 -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
|
57d8424146
|
extra space for new threads is initialized with a copy of the main
thread, not of the creator thread.
|
2014-07-24 13:17:56 -03:00 |
Roberto Ierusalimschy
|
baa0e23456
|
better support for extra user space associated with a Lua state
|
2014-07-24 11:00:16 -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
|
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
|
d764cc5522
|
new list 'twups' to allow traversal of upvalues from dead threads
(+ fixed some problems with cycles involving those upvalues)
|
2014-02-18 10:39:37 -03:00 |
Roberto Ierusalimschy
|
de3b1c9b53
|
better control for number of finalizers called at each GC cycle
(increases progressively)
|
2014-02-13 12:46:38 -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
|
de7cf8e63a
|
bug: should call 'luai_userstateclose' only when 'luai_userstateopen'
has been called before
|
2013-11-08 15:34:22 -02:00 |
Roberto Ierusalimschy
|
4c6dfc342b
|
CallInfo lists shrinks together with their associated stacks
|
2013-09-17 12:40:06 -03:00 |
Roberto Ierusalimschy
|
686e57cf9c
|
GC local pause configurable
|
2013-09-13 13:21:52 -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
|
1150873447
|
'luaC_newobj' does not handle special cases; only special case
now is threads, which do not use 'luaC_newobj' anymore.
|
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
|
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
|
9a871dd3db
|
tables and userdata all go to local list, too
|
2013-08-28 15:30:26 -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
|
50955e27f5
|
C functions and strings now go to the local list; first version
of the local collector
|
2013-08-23 10:34:54 -03:00 |
Roberto Ierusalimschy
|
0df6635711
|
"fixed" objects kept in a separated list (instead of being kept in
'allgc' list with a bit marking them)
|
2013-08-21 17:09:51 -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
|
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
|
c6b6024a9d
|
cast in 'luai_makeseed' now casts to needed type
|
2012-10-02 14:40:53 -03:00 |
Roberto Ierusalimschy
|
b77a90681e
|
typos in comments
|
2012-05-30 09:33:44 -03:00 |
Roberto Ierusalimschy
|
054c20cd5b
|
spaces -> tabs in #defines
|
2012-05-23 12:37:09 -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
|
f6a12948ca
|
useless parameter in macro 'luai_makeseed'
|
2012-05-11 11:06:07 -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
|
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
|
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
|
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
|
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
|
9b7a12c46d
|
finalizers (__gc) for tables
|
2010-11-26 12:32:31 -02: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
|
dc2b8a0073
|
detail
|
2010-04-30 15:36:22 -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
|
3410dcd375
|
new way to control GC speed
|
2010-04-29 14:35:10 -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
|
99a39f6f4a
|
tells the allocation function that the first block is a thread
|
2010-04-19 13:34:46 -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
|
d20ff60615
|
new macro LUA_NUMTAGS
|
2010-04-12 13:07:29 -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
|
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
|
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
|
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
|
9c196bebad
|
detail (wrong comment about LUAI_GCPAUSE)
|
2010-03-22 14:45:55 -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
|
22ef84b6c8
|
'_ENV' name permanently stored in global state for easier access
|
2010-03-13 12:55:42 -03: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
|
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
|
15b823ce4f
|
cleaner way to add extra space in a lua state.
|
2009-12-14 13:27:30 -02:00 |
Roberto Ierusalimschy
|
ce444bff33
|
(huge) simplification of GC management
|
2009-11-18 11:13:47 -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
|
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
|
bed2cb725a
|
initialize g->estimate (just in case)
|
2009-09-28 10:50:19 -03:00 |
Roberto Ierusalimschy
|
a650378822
|
'cpcall' reimplemented as a predefined value in the registry
|
2009-09-21 09:09:52 -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
|
f76f4cb79d
|
new way to control stack overflow, controling only total size of the stack
|
2009-07-15 14:26:14 -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
|
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
|
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
|
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
|
ba484b9eb1
|
yielding across lua_call (first version)
|
2009-03-10 14:14:37 -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
|
d07abcc6c7
|
finalizers always called protected
|
2009-02-17 16:47:58 -03:00 |
Roberto Ierusalimschy
|
f94cd2201c
|
better control of call status through CallInfo
|
2008-08-26 10:27:42 -03:00 |
Roberto Ierusalimschy
|
394646891c
|
new field 'status' in CallInfo structure
|
2008-08-13 14:01:33 -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
|
e2b366c760
|
userdata with finalizers are kept in a separated list
|
2008-02-19 15:55:09 -03:00 |
Roberto Ierusalimschy
|
a73930228a
|
more options for 'kinds' of Garbage Collection
|
2008-02-11 13:45:30 -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
|
afa0d0ac0d
|
new constant LUA_OK
|
2006-10-10 14:40:17 -03:00 |
Roberto Ierusalimschy
|
a7c9e45c64
|
avoid trailing white spaces
|
2006-09-11 11:07:24 -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
|
3ca9af51a4
|
emergency garbage collector (core forces a GC when allocation fails)
|
2006-07-11 12:53:29 -03:00 |
Roberto Ierusalimschy
|
c408158047
|
only destroy state after running all finalizers
|
2006-05-24 11:15:50 -03:00 |
Roberto Ierusalimschy
|
d31c04c049
|
missing macros 'luai_userstate*'
|
2005-10-06 17:46:25 -03:00 |
Roberto Ierusalimschy
|
361a9adba7
|
smaller initial tables (for programs that create many states)
|
2005-09-20 14:55:53 -03:00 |
Roberto Ierusalimschy
|
39cdbce23e
|
no more '-w' option + new way to check module existence
|
2005-08-25 12:39:16 -03:00 |
Roberto Ierusalimschy
|
eca9fa02d2
|
small improvement
|
2005-06-03 17:16:16 -03:00 |
Roberto Ierusalimschy
|
6cf85dcc90
|
metatables for all types
|
2005-05-05 12:34:03 -03:00 |