diff options
author | Michal Muskala <[email protected]> | 2017-04-19 12:50:04 +0200 |
---|---|---|
committer | Michal Muskala <[email protected]> | 2017-04-19 18:50:47 +0200 |
commit | 0377592dc2238f561291be854d2ce859dd9a5fb1 (patch) | |
tree | 3441115836c51f27a7a53a5df88fa86ae2164421 /bootstrap/lib/stdlib | |
parent | 6124bfc9b61227a5e82f1d7273d0895e909aac6e (diff) | |
download | otp-0377592dc2238f561291be854d2ce859dd9a5fb1.tar.gz otp-0377592dc2238f561291be854d2ce859dd9a5fb1.tar.bz2 otp-0377592dc2238f561291be854d2ce859dd9a5fb1.zip |
Enhance type-driven optimisation in beam_type.erl
* kill type information only for affected registers in get_map_elements
* bs_get_utf* will produce integers of unicode range
This optimises code created by Elixir compiler, where:
<<x::utf8,_::binary>> when x in 1..10
will compile the guard to
is_integer(X) andalso X >= 1 andalso X =< 10
This allows us to eliminate the is_integer check.
* bs_get_float will produce a float
* allow to carry type information over other bs instructions killing
only the affected registers
* kill only x registers after call_fun and apply instructions
Diffstat (limited to 'bootstrap/lib/stdlib')
0 files changed, 0 insertions, 0 deletions