<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/compiler, branch OTP-21.2.6</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Prepare release</title>
<updated>2019-01-15T18:35:08+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2019-01-15T18:35:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=9c005b842583f4aed77ec3a25038f0fd3623f8e9'/>
<id>9c005b842583f4aed77ec3a25038f0fd3623f8e9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove unsafe optimization for delaying creation of stackframe</title>
<updated>2019-01-07T11:55:26+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2018-12-18T11:59:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=7a01269e62f21ac3ba9858dd358716081549bea3'/>
<id>7a01269e62f21ac3ba9858dd358716081549bea3</id>
<content type='text'>
b89044a800c4 introduced an optimization that tries to delay creation
of stack frames. It turns out that this optimization is not always
safe. (See the new test case for an example.)

Since the code generator is completely rewritten in the `master`
branch for the upcoming OTP 22 release, it does not make sense trying
to mend this optimization. It is better to remove it.  Out of a sample
of about 1000 modules in OTP, about 50 of them are changed as a result
of removing this optimization.

The compiler in OTP 22 will do the same optimization in a cleaner,
safer, and more effective way.

https://bugs.erlang.org/browse/ERL-807
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
b89044a800c4 introduced an optimization that tries to delay creation
of stack frames. It turns out that this optimization is not always
safe. (See the new test case for an example.)

Since the code generator is completely rewritten in the `master`
branch for the upcoming OTP 22 release, it does not make sense trying
to mend this optimization. It is better to remove it.  Out of a sample
of about 1000 modules in OTP, about 50 of them are changed as a result
of removing this optimization.

The compiler in OTP 22 will do the same optimization in a cleaner,
safer, and more effective way.

https://bugs.erlang.org/browse/ERL-807
</pre>
</div>
</content>
</entry>
<entry>
<title>Prepare release</title>
<updated>2018-12-10T10:07:05+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2018-12-10T10:07:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=a2ca3bd78fc002dd1e6533c191e44092cc3aa949'/>
<id>a2ca3bd78fc002dd1e6533c191e44092cc3aa949</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix unsafe optimization of stack trace building</title>
<updated>2018-12-05T13:07:04+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2018-12-05T13:01:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=b3bd35ccd0004d59e478308df3bc85c351557f3c'/>
<id>b3bd35ccd0004d59e478308df3bc85c351557f3c</id>
<content type='text'>
The `sys_core_fold` pass of the compiler would optimize
away the building of the stacktrace in code such as:

    try
        ...
    catch
        C:R:Stk -&gt;
           erlang:raise(C, {R,Stk}, Stk)
    end

That optimization is unsafe and would cause a crash in a later compiler
pass.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The `sys_core_fold` pass of the compiler would optimize
away the building of the stacktrace in code such as:

    try
        ...
    catch
        C:R:Stk -&gt;
           erlang:raise(C, {R,Stk}, Stk)
    end

That optimization is unsafe and would cause a crash in a later compiler
pass.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix internal consistency failure for is_function/2</title>
<updated>2018-11-20T12:13:26+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2018-11-20T12:05:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=8be2c32fe0534d863c6ce6d7665011a162fc39ec'/>
<id>8be2c32fe0534d863c6ce6d7665011a162fc39ec</id>
<content type='text'>
There could be an internal consistency failure when using is_function/2,
because an optimization did not take into account that is_function/2 can fail.

https://bugs.erlang.org/browse/ERL-778
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There could be an internal consistency failure when using is_function/2,
because an optimization did not take into account that is_function/2 can fail.

https://bugs.erlang.org/browse/ERL-778
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'maint-21' into maint</title>
<updated>2018-11-16T11:31:50+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2018-11-16T11:31:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=5503d96504a89b1b00a78f7e7d12e79be553b215'/>
<id>5503d96504a89b1b00a78f7e7d12e79be553b215</id>
<content type='text'>
* maint-21:
  Updated OTP version
  Prepare release
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* maint-21:
  Updated OTP version
  Prepare release
</pre>
</div>
</content>
</entry>
<entry>
<title>Prepare release</title>
<updated>2018-11-15T11:26:12+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2018-11-15T11:26:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=e3c71d353e884316420eebea2d7ef802c651437b'/>
<id>e3c71d353e884316420eebea2d7ef802c651437b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix bug when beam_jump removes put_tuple instructions</title>
<updated>2018-10-31T12:18:42+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2018-10-31T12:07:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=94517048c3dad66c6c6469088d174cefcbbdb552'/>
<id>94517048c3dad66c6c6469088d174cefcbbdb552</id>
<content type='text'>
`beam_jump` could remove a `put_tuple` instruction when the
tuple would not be used, but it would leave the following
`put` instructions. Make sure they are removed.

https://bugs.erlang.org/browse/ERL-759
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`beam_jump` could remove a `put_tuple` instruction when the
tuple would not be used, but it would leave the following
`put` instructions. Make sure they are removed.

https://bugs.erlang.org/browse/ERL-759
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'john/compiler/bs_match-anno-liveness-fix/OTP-15353/ERL-753' into maint</title>
<updated>2018-10-16T08:34:03+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2018-10-16T08:34:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=41ab6463e73011969498969834b4ee84024748b0'/>
<id>41ab6463e73011969498969834b4ee84024748b0</id>
<content type='text'>
* john/compiler/bs_match-anno-liveness-fix/OTP-15353/ERL-753:
  beam_utils: Handle bs_start_match2 in anno_defs
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* john/compiler/bs_match-anno-liveness-fix/OTP-15353/ERL-753:
  beam_utils: Handle bs_start_match2 in anno_defs
</pre>
</div>
</content>
</entry>
<entry>
<title>beam_utils: Handle bs_start_match2 in anno_defs</title>
<updated>2018-10-15T11:15:13+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2018-10-15T08:30:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=59e5879164f0c11d2063e4eecb8a7052e2f4a04a'/>
<id>59e5879164f0c11d2063e4eecb8a7052e2f4a04a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
