Roberto Ierusalimschy
4e47f81188
New implementation for to-be-closed variables
...
To-be-closed variables are linked in their own list, embedded into the
stack elements. (Due to alignment, this information does not change
the size of the stack elements in most architectures.) This new list
does not produce garbage and avoids memory errors when creating tbc
variables.
2021-02-09 14:00:05 -03:00
Roberto Ierusalimschy
b07fc10e91
Allow yields inside '__close' metamethods
...
Initial implementation to allow yields inside '__close' metamethods.
This current version still does not allow a '__close' metamethod
to yield when called due to an error. '__close' metamethods from
C functions also are not allowed to yield.
2021-01-13 13:54:10 -03:00
Roberto Ierusalimschy
7af27ef59d
Cleaner handling of errors in '__close' metamethods
...
Instead of protecting each individual metamethod call, protect the
entire call to 'luaF_close'.
2020-12-28 11:40:30 -03:00
Roberto Ierusalimschy
5f83fb6582
Details
2019-11-18 14:54:06 -03:00
Roberto Ierusalimschy
9e6807c3c9
Do not collect open upvalues
...
Open upvalues are kept alive together with their corresponding
stack. This change makes a simpler and safer fix to the issue in
commit 440a5ee78c
, about upvalues in the list of open upvalues
being collected while others are being created. (That previous fix
may not be correct.)
2019-07-22 09:41:10 -03:00
Roberto Ierusalimschy
440a5ee78c
Fixed bug for emergency collection in upvalue creation
...
When creating an upvalue, an emergency collection can collect the
previous upvalue where the new one would be linked. The following
code can trigger the bug, using valgrind on Lua compiled with the
-DHARDMEMTESTS option:
local x; local y
(function () return y end)();
(function () return x end)()
2019-07-19 12:13:00 -03:00
Roberto Ierusalimschy
fdc25a1ebf
New functions 'lua_resetthread' and 'coroutine.kill'
...
New functions to reset/kill a thread/coroutine, mainly (only?) to
close any pending to-be-closed variable. ('lua_resetthread' also
allows a thread to be reused...)
2018-12-13 13:07:53 -02:00
Roberto Ierusalimschy
3c7dc52909
Handling of memory errors when creating to-be-closed upvalues
2018-10-18 16:15:09 -03:00
Roberto Ierusalimschy
bd96330d03
First "complete" implementation of to-be-closed variables
...
Still missing:
- handling of memory errors when creating upvalue (must run closing
method all the same)
- interaction with coroutines
2018-10-17 10:44:42 -03:00
Roberto Ierusalimschy
f99509581e
Removed extra information from RCS keyword strings
...
Version numbers and dates (mostly wrong) from RCS keyword strings
removed from all source files; only the file name are kept.
2018-08-23 14:26:12 -03:00
Roberto Ierusalimschy
38d3bc8909
using 'offsetof' to compute the size of parts of a structure
2018-02-25 10:40:00 -03:00
Roberto Ierusalimschy
e2b15aa21d
janitor work on casts
2018-01-28 13:13:26 -02:00
Roberto Ierusalimschy
f96497397a
new type 'StackValue' for stack elements
...
(we may want to put extra info there in the future)
2017-06-29 12:06:44 -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
a3d36fe283
Upvalues collected like everything else (with mark-sweep) instead
...
of reference count (simpler and better for generational mode)
2017-04-11 15:41:09 -03:00
Roberto Ierusalimschy
cdd26700e8
definition for 'MAXUPVAL' moved for a more "private" place and its
...
value and comment corrected to reflect current implementation
2015-01-13 13:49:11 -02:00
Roberto Ierusalimschy
89b56e7d84
more precision between closure types ('LClosure' x 'CClosure')
2014-06-19 15:27:20 -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
ffa96d988d
field 'op' renamed to 'open'
2014-02-15 11:12:01 -02:00
Roberto Ierusalimschy
2e2c109daf
type of 'refcount' changed to lu_mem (to ensure there will be no
...
overflows)
2013-09-11 12:17:00 -03:00
Roberto Ierusalimschy
af35c7f398
upvalues collected by reference count
2013-08-27 15:53:35 -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
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
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
545f43065f
'luaF_newLclosure' gets prototype of new closure as argument
2010-06-04 10:06:15 -03:00
Roberto Ierusalimschy
064e406f67
no more fenvs!
2010-03-26 17:58:11 -03:00
Roberto Ierusalimschy
8718fda9b2
added LUAI_FUNC to functions not in the API
2005-04-25 16:24:10 -03:00
Roberto Ierusalimschy
7d45a5f48f
C functions and userdata also have environments
2005-02-18 10:40:02 -02:00
Roberto Ierusalimschy
334ba8132b
cleaner way to remark open upvalues
2005-01-18 15:18:09 -02: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
5ee63257f9
macros for closure sizes are global
2003-11-24 16:50:36 -02:00
Roberto Ierusalimschy
c51bcf4796
it's ok to dump functions with upvalues
2003-10-20 15:42:41 -02:00
Roberto Ierusalimschy
ab9e062928
name changes to avoid name collision between macros and variables
2003-03-18 09:50:04 -03:00
Roberto Ierusalimschy
3941af53ad
first implementation of independent global table per function
2002-06-20 17:41:46 -03:00
Roberto Ierusalimschy
413fc7334b
new implementation for lua upvalues (sugested by E.T.): simpler and solves
...
a bug for multi-stacks
2001-11-29 18:22:22 -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
15462edb0f
new definitions for closure structures
2001-10-02 13:45:03 -03:00
Roberto Ierusalimschy
abdbe883a8
first implementation of unrestricted static scoping
2001-09-07 14:39:10 -03:00
Roberto Ierusalimschy
39b7978329
first (big) step to support wide chars
2001-02-23 14:17:25 -03: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
dad808a73a
new way to count `nblocks' for GC (try to count bytes).
2000-09-29 09:42:13 -03:00
Roberto Ierusalimschy
afef009fce
new version of debug system
2000-06-26 16:28:31 -03:00
Roberto Ierusalimschy
73aa465a8e
some name changes
2000-03-10 15:37:44 -03:00
Roberto Ierusalimschy
acdb0b741e
comments.
1999-12-27 15:33:22 -02:00
Roberto Ierusalimschy
29ede6aa13
first implementation of multiple states (reentrant code).
1999-11-22 11:12:07 -02:00
Roberto Ierusalimschy
8e7451512f
some more `const's
1999-10-14 17:46:57 -02:00
Roberto Ierusalimschy
4343420d4d
simplified version of `gc' tag method (only for userdata now).
1999-10-04 15:51:04 -02:00
Roberto Ierusalimschy
c787dccd9b
"const" !!!
1999-08-16 17:52:00 -03:00
Roberto Ierusalimschy
45e533599f
optimization: closures without upvalues don't need to be closures
1997-12-15 14:17:20 -02:00
Roberto Ierusalimschy
592a3f289b
first implementation of centralized global state.
1997-11-19 15:29:23 -02:00