aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/icode
diff options
context:
space:
mode:
authorMagnus Lång <[email protected]>2015-11-20 14:38:13 +0100
committerMagnus Lång <[email protected]>2015-11-27 18:18:38 +0100
commitd5a877aeb8e7845bf92469456a8246cb62cd7036 (patch)
tree5bb42391f5cf1b93ff7ab044288bd0019c4d040a /lib/hipe/icode
parent4ce3f357aca2b418dda22ce5434b080ba41ffa45 (diff)
downloadotp-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