<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/lua-github.git/lfunc.c, branch v5.4.4</title>
<subtitle>github.com: lua/lua.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/'/>
<entry>
<title>New implementation for 'tbclist'</title>
<updated>2021-03-10T13:27:19+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2021-03-10T13:27:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=81c6021fb40a254d9a586b0cb53453bba8973d80'/>
<id>81c6021fb40a254d9a586b0cb53453bba8973d80</id>
<content type='text'>
- Fixes a bug, by removing dummy nodes together with the node
itself. (The previous implementation could leave dummy nodes in frames
which otherwise had no tbc variables, and therefore would not close
variables; that could leave 'tbclist' pointing higher than 'top', which
could dangle if the stack shrank.)

- Computes MAXDELTA based on the type of delta, to ease changing its
type if needed.

- Instead of 'isdummy', uses 'delta==0' to signal dummy nodes. (Dummy
nodes always have MAXDELTA for their real delta.)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Fixes a bug, by removing dummy nodes together with the node
itself. (The previous implementation could leave dummy nodes in frames
which otherwise had no tbc variables, and therefore would not close
variables; that could leave 'tbclist' pointing higher than 'top', which
could dangle if the stack shrank.)

- Computes MAXDELTA based on the type of delta, to ease changing its
type if needed.

- Instead of 'isdummy', uses 'delta==0' to signal dummy nodes. (Dummy
nodes always have MAXDELTA for their real delta.)
</pre>
</div>
</content>
</entry>
<entry>
<title>New implementation for to-be-closed variables</title>
<updated>2021-02-09T17:00:05+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2021-02-09T17:00:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=4e47f81188d37e29027158b76271d02a781242e2'/>
<id>4e47f81188d37e29027158b76271d02a781242e2</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed some bugs around stack reallocation</title>
<updated>2021-02-05T14:00:28+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2021-02-05T14:00:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=2bfa13e520e53210b96ead88f49a9ca20c5a5d18'/>
<id>2bfa13e520e53210b96ead88f49a9ca20c5a5d18</id>
<content type='text'>
Long time without using HARDSTACKTESTS...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Long time without using HARDSTACKTESTS...
</pre>
</div>
</content>
</entry>
<entry>
<title>Simpler handling of errors when creating tbc variables</title>
<updated>2021-01-19T13:03:13+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2021-01-19T13:03:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=6ccd24eff58340c00db2877c4558a63c6b859442'/>
<id>6ccd24eff58340c00db2877c4558a63c6b859442</id>
<content type='text'>
New field 'lua_State.ptbc' keeps to-be-closed variable until its
upvalue is created, so that it can be closed in case of a
memory-allocation error.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
New field 'lua_State.ptbc' keeps to-be-closed variable until its
upvalue is created, so that it can be closed in case of a
memory-allocation error.
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow yields inside '__close' metamethods</title>
<updated>2021-01-13T16:54:10+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2021-01-13T16:54:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=b07fc10e91a5954254b47280aba287220c734a4b'/>
<id>b07fc10e91a5954254b47280aba287220c734a4b</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>No need to recheck close method before calling it</title>
<updated>2020-12-29T13:23:02+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-12-29T13:23:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=59e565d9555c07e82808d8c1db8f4f4d159b5e5c'/>
<id>59e565d9555c07e82808d8c1db8f4f4d159b5e5c</id>
<content type='text'>
A to-be-closed variable is constant and it must have a close metamethod
when it is created. A program has to go out of its way (e.g., by
changing the variable's metamethod) to invalidate that check. So,
it is not worth to test that again. If the program tampers with the
metamethod, Lua will raise a regular error when attempting to call it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A to-be-closed variable is constant and it must have a close metamethod
when it is created. A program has to go out of its way (e.g., by
changing the variable's metamethod) to invalidate that check. So,
it is not worth to test that again. If the program tampers with the
metamethod, Lua will raise a regular error when attempting to call it.
</pre>
</div>
</content>
</entry>
<entry>
<title>Cleaner handling of errors in '__close' metamethods</title>
<updated>2020-12-28T14:40:30+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-12-28T14:40:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=7af27ef59da4051914d93d8b63efac663b64765a'/>
<id>7af27ef59da4051914d93d8b63efac663b64765a</id>
<content type='text'>
Instead of protecting each individual metamethod call, protect the
entire call to 'luaF_close'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of protecting each individual metamethod call, protect the
entire call to 'luaF_close'.
</pre>
</div>
</content>
</entry>
<entry>
<title>Report last error in closing methods</title>
<updated>2020-12-22T13:54:25+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-12-22T13:54:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=0ceada8da92135717d31a3954b5b89a954f9e71a'/>
<id>0ceada8da92135717d31a3954b5b89a954f9e71a</id>
<content type='text'>
When there are multiple errors around closing methods, report the
last error instead of the original.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When there are multiple errors around closing methods, report the
last error instead of the original.
</pre>
</div>
</content>
</entry>
<entry>
<title>Upvalues removed from 'openupval' before being closed</title>
<updated>2020-12-21T18:21:45+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-12-21T18:21:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=f9d29b0c442447ebe429bcaad1e2b4bf13c5dc93'/>
<id>f9d29b0c442447ebe429bcaad1e2b4bf13c5dc93</id>
<content type='text'>
Undo commit c220b0a5d0: '__close' is not called again in case of
errors. (Upvalue is removed from the list before the call.) The
common error that justified that change was C stack overflows, which
are much rarer with the stackless implementation.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Undo commit c220b0a5d0: '__close' is not called again in case of
errors. (Upvalue is removed from the list before the call.) The
common error that justified that change was C stack overflows, which
are much rarer with the stackless implementation.
</pre>
</div>
</content>
</entry>
<entry>
<title>Details</title>
<updated>2020-10-12T15:29:09+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-10-07T14:45:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=c23cc86c542449db47bdb21e9550203309bef045'/>
<id>c23cc86c542449db47bdb21e9550203309bef045</id>
<content type='text'>
- After converting a generic GCObject to a specific type ('gco2*'),
  avoid using the original GCObject (to reduce aliasing).
- Small corrections in comments in 'lopcodes.h'
- Added tests about who calls __close metamethods
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- After converting a generic GCObject to a specific type ('gco2*'),
  avoid using the original GCObject (to reduce aliasing).
- Small corrections in comments in 'lopcodes.h'
- Added tests about who calls __close metamethods
</pre>
</div>
</content>
</entry>
</feed>
