diff options
author | Magnus Lång <[email protected]> | 2015-11-20 14:38:13 +0100 |
---|---|---|
committer | Magnus Lång <[email protected]> | 2015-11-27 18:18:38 +0100 |
commit | d5a877aeb8e7845bf92469456a8246cb62cd7036 (patch) | |
tree | 5bb42391f5cf1b93ff7ab044288bd0019c4d040a /lib/hipe/icode | |
parent | 4ce3f357aca2b418dda22ce5434b080ba41ffa45 (diff) | |
download | otp-d5a877aeb8e7845bf92469456a8246cb62cd7036.tar.gz otp-d5a877aeb8e7845bf92469456a8246cb62cd7036.tar.bz2 otp-d5a877aeb8e7845bf92469456a8246cb62cd7036.zip |
hipe: Fix constructing huge binaries
Bugs were fixed in
hipe_rtl_binary_match:{first_part/3,make_size/3,set_high/1} in commit
5aea81c49, but it turns out these had been copy-pasted verbatim into
hipe_rtl_binary_construct, where they were causing further bugs. They
have now moved to hipe_rtl_binary, from where they are included by the
other two modules.
Furthermore, first_part/3 (reamed get_word_integer/3, since it loads
integers that fits into an unsigned word), and make_size/3 now accepts a
fourth argument to distinguish too large arguments (which should cause a
system_limit exception) from negative or non-integral arguments.
The use of first_part/3 (get_word_integer/3) from 5aea81c49 in
hipe_rtl_binary_construct now allows several binary construction
instructions to accept bignum sizes, as they were supposed to.
Additionally, calls to
hipe_rtl_binary_construct:check_and_untag_fixnum/3 were replaced with
get_word_integer/4 since all of them were also supposed to accept
sufficiently small bignums, but didn't, and check_and_untag_fixnum/3 was
essentially identical to first_part/3 anyway.
HiPE is now capable of passing bs_construct_SUITE completely unmodified.
Diffstat (limited to 'lib/hipe/icode')
0 files changed, 0 insertions, 0 deletions