<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/lua-github.git/lstate.c, branch v5.4.2</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>Bug when growing a stack</title>
<updated>2020-11-08T14:52:26+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-11-08T14:52:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=d28265256110a0c5437247d443ddedc2a7aab116'/>
<id>d28265256110a0c5437247d443ddedc2a7aab116</id>
<content type='text'>
When a stack grows, its extra area can be in use, and it becomes part
of the common area. So, the extra area must be kept correct all the
times. (Bug introduced by commit 5aa36e894f5.)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a stack grows, its extra area can be in use, and it becomes part
of the common area. So, the extra area must be kept correct all the
times. (Bug introduced by commit 5aa36e894f5.)
</pre>
</div>
</content>
</entry>
<entry>
<title>Hash always use all characters in a long string</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-12T13:02:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=9a89fb1c9dfeda4640780111f9e9437f08cfad88'/>
<id>9a89fb1c9dfeda4640780111f9e9437f08cfad88</id>
<content type='text'>
Hashes for long strings are computed only when they are used as keys
in a table, not a too common case. And, in that case, it is to easy to
force collisions changing only the characters which are not part of the
hash.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Hashes for long strings are computed only when they are used as keys
in a table, not a too common case. And, in that case, it is to easy to
force collisions changing only the characters which are not part of the
hash.
</pre>
</div>
</content>
</entry>
<entry>
<title>No more field 'lua_State.stacksize'</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-06T18:50:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=5aa36e894f5a0348dfd19bd9cdcdd27ce8aa5f05'/>
<id>5aa36e894f5a0348dfd19bd9cdcdd27ce8aa5f05</id>
<content type='text'>
The stack size is derived from 'stack_last', when needed. Moreover,
the handling of stack sizes is more consistent, always excluding the
extra space except when allocating/deallocating the array.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The stack size is derived from 'stack_last', when needed. Moreover,
the handling of stack sizes is more consistent, always excluding the
extra space except when allocating/deallocating the array.
</pre>
</div>
</content>
</entry>
<entry>
<title>Correct handling of 'luaV_execute' invocations</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-09-24T16:26:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=490d42b5f89563a94994505c75e24086b0a487e6'/>
<id>490d42b5f89563a94994505c75e24086b0a487e6</id>
<content type='text'>
The previous stackless implementations marked all 'luaV_execute'
invocations as fresh. However, re-entering 'luaV_execute' when
resuming a coroutine should not be a fresh invocation. (It works
because 'unroll' called 'luaV_execute' for each call entry, but
it was slower than letting 'luaV_execute' finish all non-fresh
invocations.)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The previous stackless implementations marked all 'luaV_execute'
invocations as fresh. However, re-entering 'luaV_execute' when
resuming a coroutine should not be a fresh invocation. (It works
because 'unroll' called 'luaV_execute' for each call entry, but
it was slower than letting 'luaV_execute' finish all non-fresh
invocations.)
</pre>
</div>
</content>
</entry>
<entry>
<title>Revision of stackless implementation</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-09-23T13:18:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=287b302acb8d925178e9edb800f0a8d18c7d35f6'/>
<id>287b302acb8d925178e9edb800f0a8d18c7d35f6</id>
<content type='text'>
- more organized handling of 'nCcalls'
- comments
- deprecation of 'setcstacklimit'
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- more organized handling of 'nCcalls'
- comments
- deprecation of 'setcstacklimit'
</pre>
</div>
</content>
</entry>
<entry>
<title>Back to a stackless implementation</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-09-21T13:31:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=5d8ce05b3f6fad79e37ed21c1076e47a322472c6'/>
<id>5d8ce05b3f6fad79e37ed21c1076e47a322472c6</id>
<content type='text'>
A "with stack" implementation gains too little in performance to be
worth all the noise from C-stack overflows.

This commit is almost a sketch, to test performance. There are several
pending stuff:

- review control of C-stack overflow and error messages;
- what to do with setcstacklimit;
- review comments;
- review unroll of Lua calls.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A "with stack" implementation gains too little in performance to be
worth all the noise from C-stack overflows.

This commit is almost a sketch, to test performance. There are several
pending stuff:

- review control of C-stack overflow and error messages;
- what to do with setcstacklimit;
- review comments;
- review unroll of Lua calls.
</pre>
</div>
</content>
</entry>
<entry>
<title>Optimization in 'markold'</title>
<updated>2020-07-29T20:05:47+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-07-29T20:05:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=0dc5deca1c0182a4a3db2fcfd7bc721f27fb352b'/>
<id>0dc5deca1c0182a4a3db2fcfd7bc721f27fb352b</id>
<content type='text'>
OLD1 objects can be potentially anywhere in the 'allgc' list (up
to 'reallyold'), but frequently they are all after 'old1' (natural
evolution of survivals) or do not exist at all (when all objects die
young). So, instead of 'markold' starts looking for them always
from the start of 'allgc', the collector keeps an extra pointer,
'firstold1', that points to the first OLD1 object in the 'allgc' list,
or is NULL if there are no OLD1 objects in that list.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
OLD1 objects can be potentially anywhere in the 'allgc' list (up
to 'reallyold'), but frequently they are all after 'old1' (natural
evolution of survivals) or do not exist at all (when all objects die
young). So, instead of 'markold' starts looking for them always
from the start of 'allgc', the collector keeps an extra pointer,
'firstold1', that points to the first OLD1 object in the 'allgc' list,
or is NULL if there are no OLD1 objects in that list.
</pre>
</div>
</content>
</entry>
<entry>
<title>Details</title>
<updated>2020-07-29T14:34:08+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-07-29T14:34:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=b4c353434f28f3e9d4c45e61d42b4fd07d76cad2'/>
<id>b4c353434f28f3e9d4c45e61d42b4fd07d76cad2</id>
<content type='text'>
The fields 'old' and 'finobjold' were renamed 'old1' and 'finobjold1',
respectively, to make clearer the main ages of their elements.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The fields 'old' and 'finobjold' were renamed 'old1' and 'finobjold1',
respectively, to make clearer the main ages of their elements.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed bug: invalid 'oldpc' when returning to a function</title>
<updated>2020-07-17T14:01:05+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-07-17T14:01:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=a2195644d89812e5b157ce7bac35543e06db05e3'/>
<id>a2195644d89812e5b157ce7bac35543e06db05e3</id>
<content type='text'>
The field 'L-&gt;oldpc' is not always updated when control returns to a
function; an invalid value can seg. fault when computing 'changedline'.
(One example is an error in a finalizer; control can return to
'luaV_execute' without executing 'luaD_poscall'.) Instead of trying to
fix all possible corner cases, it seems safer to be resilient to invalid
values for 'oldpc'. Valid but wrong values at most cause an extra call
to a line hook.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The field 'L-&gt;oldpc' is not always updated when control returns to a
function; an invalid value can seg. fault when computing 'changedline'.
(One example is an error in a finalizer; control can return to
'luaV_execute' without executing 'luaD_poscall'.) Instead of trying to
fix all possible corner cases, it seems safer to be resilient to invalid
values for 'oldpc'. Valid but wrong values at most cause an extra call
to a line hook.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid any code before locks in the API</title>
<updated>2020-07-06T17:06:47+00:00</updated>
<author>
<name>Roberto Ierusalimschy</name>
<email>roberto@inf.puc-rio.br</email>
</author>
<published>2020-07-06T17:06:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/lua-github.git/commit/?id=314c6057b785cd94ac88905ccfce61724107d66b'/>
<id>314c6057b785cd94ac88905ccfce61724107d66b</id>
<content type='text'>
For consistency in the C API, avoid any initializations before
callling lua_lock.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For consistency in the C API, avoid any initializations before
callling lua_lock.
</pre>
</div>
</content>
</entry>
</feed>
