<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/hipe, branch OTP-18.2.2</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Update release notes</title>
<updated>2015-12-15T08:45:27+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2015-12-15T08:45:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=f4a0ae1736216feac5ae053610644bba2e12ed34'/>
<id>f4a0ae1736216feac5ae053610644bba2e12ed34</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update version numbers</title>
<updated>2015-12-15T08:43:08+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2015-12-15T08:43:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=4586435cd4ca0d3ad3aedd60f462aed8da589460'/>
<id>4586435cd4ca0d3ad3aedd60f462aed8da589460</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'kostis/hipe-bs-match-huge-bin' into maint</title>
<updated>2015-11-09T15:03:37+00:00</updated>
<author>
<name>Henrik Nord</name>
<email>henrik@erlang.org</email>
</author>
<published>2015-11-09T15:03:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=8e478dd409d2760ca38a7ddbc66b656b9d47f7dc'/>
<id>8e478dd409d2760ca38a7ddbc66b656b9d47f7dc</id>
<content type='text'>
* kostis/hipe-bs-match-huge-bin:
  Fix matching with huge binaries
  Compile without errors for exported variables

OTP-13092
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* kostis/hipe-bs-match-huge-bin:
  Fix matching with huge binaries
  Compile without errors for exported variables

OTP-13092
</pre>
</div>
</content>
</entry>
<entry>
<title>[hipe] Correct documentation</title>
<updated>2015-11-04T12:03:57+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2015-10-13T12:02:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=42eddf467f01e38502310a0f34770ed73ff74319'/>
<id>42eddf467f01e38502310a0f34770ed73ff74319</id>
<content type='text'>
Fix mistakes found by 'xmllint'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix mistakes found by 'xmllint'.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'lucafavatella/dialyzer-fun-literal-arity' into maint</title>
<updated>2015-10-27T11:28:03+00:00</updated>
<author>
<name>Henrik Nord</name>
<email>henrik@erlang.org</email>
</author>
<published>2015-10-27T11:28:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=990426c501e56d01d0dc0172a5335b39aafd28ec'/>
<id>990426c501e56d01d0dc0172a5335b39aafd28ec</id>
<content type='text'>
* lucafavatella/dialyzer-fun-literal-arity:
  Teach Dialyzer arity of funs with literal arity

OTP-13068
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lucafavatella/dialyzer-fun-literal-arity:
  Teach Dialyzer arity of funs with literal arity

OTP-13068
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix edge case of Size = 0 in bs_put_integer</title>
<updated>2015-10-12T05:53:20+00:00</updated>
<author>
<name>Kostis Sagonas</name>
<email>kostis@it.uu.se</email>
</author>
<published>2015-10-12T05:53:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=d94a8ef6dc136dd2eedf3c3ad4bc053ca8fdd1b0'/>
<id>d94a8ef6dc136dd2eedf3c3ad4bc053ca8fdd1b0</id>
<content type='text'>
copy_offset_int_big was assuming (Offset + Size - 1) (Tmp9 in the first
BB) would not underflow. It was also unconditionally reading and writing
the binary even when Size was zero, unlike copy_int_little, which is the
only other case of bs_put_integer that does not have a short-circuit on
Size = 0.

This was causing segfaults when constructing binaries starting with a
zero-length integer field, because a logical right shift was used to
compute an offset in bytes (which became 0x1fffffffffffffff) to read in
the binary.

Tests, taken from the emulator bs_construct_SUITE, were also added.
The complete credit for the report and the fix goes to Magnus Lång.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
copy_offset_int_big was assuming (Offset + Size - 1) (Tmp9 in the first
BB) would not underflow. It was also unconditionally reading and writing
the binary even when Size was zero, unlike copy_int_little, which is the
only other case of bs_put_integer that does not have a short-circuit on
Size = 0.

This was causing segfaults when constructing binaries starting with a
zero-length integer field, because a logical right shift was used to
compute an offset in bytes (which became 0x1fffffffffffffff) to read in
the binary.

Tests, taken from the emulator bs_construct_SUITE, were also added.
The complete credit for the report and the fix goes to Magnus Lång.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix matching with huge binaries</title>
<updated>2015-10-02T13:08:00+00:00</updated>
<author>
<name>Kostis Sagonas</name>
<email>kostis@it.uu.se</email>
</author>
<published>2015-10-02T12:50:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=5aea81c495f06d58d72b5d3dba86ed9326b1eb14'/>
<id>5aea81c495f06d58d72b5d3dba86ed9326b1eb14</id>
<content type='text'>
In certain cases of matching with very big binaries, the HiPE compiler
generated code that would fail the match, even in cases that the matching
was successful.  The problem was more quite noticeable on 32-bit platforms
where certain integer quantities would be represented as bignums.

Brief summary of changes:

 * gen_rtl({bs_skip_bits, ...}, ...) could not handle too large constants.
   Previously the constants were truncated to word size.

 * hipe_rtl_binary_match:make_size/3 erroneously assumed that the output
   of first_part/3 would not overflow when multiplied by 8, which is no
   longer true. To maintain full performance, the overflow test is only
   performed when BitsVar was a bignum. Thus, the fast path is identical
   to before.

 * hipe_rtl_binary_match:set_high/2 was assuming that only bits below
   bit 27 were ever set in arguments to bs_skip_bits, which is not only
   false when the arguments are bignums, but also on 64-bit platforms.

The commit includes a test taken from the bs_match_bin_SUITE.

Most of the credit for finding these HiPE compiler errors and for
creating appropriate fixes for them should go to Magnus Lång.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In certain cases of matching with very big binaries, the HiPE compiler
generated code that would fail the match, even in cases that the matching
was successful.  The problem was more quite noticeable on 32-bit platforms
where certain integer quantities would be represented as bignums.

Brief summary of changes:

 * gen_rtl({bs_skip_bits, ...}, ...) could not handle too large constants.
   Previously the constants were truncated to word size.

 * hipe_rtl_binary_match:make_size/3 erroneously assumed that the output
   of first_part/3 would not overflow when multiplied by 8, which is no
   longer true. To maintain full performance, the overflow test is only
   performed when BitsVar was a bignum. Thus, the fast path is identical
   to before.

 * hipe_rtl_binary_match:set_high/2 was assuming that only bits below
   bit 27 were ever set in arguments to bs_skip_bits, which is not only
   false when the arguments are bignums, but also on 64-bit platforms.

The commit includes a test taken from the bs_match_bin_SUITE.

Most of the credit for finding these HiPE compiler errors and for
creating appropriate fixes for them should go to Magnus Lång.
</pre>
</div>
</content>
</entry>
<entry>
<title>Compile without errors for exported variables</title>
<updated>2015-10-02T13:08:00+00:00</updated>
<author>
<name>Kostis Sagonas</name>
<email>kostis@it.uu.se</email>
</author>
<published>2015-10-02T10:44:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=c881813b0643138e9b1c1b1a573645460f14404e'/>
<id>c881813b0643138e9b1c1b1a573645460f14404e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Prepare release</title>
<updated>2015-09-21T15:09:23+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2015-09-21T15:09:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=6738d356a279835222b951fd213ed4cf9897eb7e'/>
<id>6738d356a279835222b951fd213ed4cf9897eb7e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update application versions</title>
<updated>2015-09-16T12:59:42+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2015-09-16T12:59:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=5e9b9dbb8edd237abde65ce7c921c5ed026f740e'/>
<id>5e9b9dbb8edd237abde65ce7c921c5ed026f740e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
