aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2019-05-23Optimize is_function/{1,2} callsBjörn Gustavsson
Remove is_function/1,2 tests if that are known to never fail.
2019-05-23Optimize expression comparing a boolean to 'false'Björn Gustavsson
2019-05-23Implement '==' optimization in beam_ssa_typeBjörn Gustavsson
`=:=` is faster than `==`, so when they would return the same result, we want to replace `==` with `=:=`. There is currently such an optimization in sys_core_fold, but the optimimization will be more effective if done in beam_ssa_type because beam_ssa_type has better type information.
2019-05-23Merge pull request #2212 from andrenth/file-open-directoriesJohn Högberg
file: allow open/2 to work on directories OTP-15835
2019-05-23Merge branch 'maint'Björn Gustavsson
* maint: Eliminate compiler crash when compiling complex receive statements
2019-05-23Merge branch 'bjorn/compiler/fix-receive-patch/ERL-950/OTP-15832' into maintBjörn Gustavsson
* bjorn/compiler/fix-receive-patch/ERL-950/OTP-15832: Eliminate compiler crash when compiling complex receive statements
2019-05-22Merge branch 'maint'Micael Karlberg
2019-05-22Merge branch 'bmk/snmp/20190522/random_to_rand/OTP-15331' into maintMicael Karlberg
2019-05-22Merge branch 'maint'Micael Karlberg
2019-05-22Merge branch 'bmk/snmp/20190522/get_stacktrace/OTP-15332' into maintMicael Karlberg
2019-05-22Merge branch 'maint'Sverker Eriksson
2019-05-22Merge branch 'sverker/stdlib/binary-referenced_byte_size-doc' into maintSverker Eriksson
PR-2245 ERL-914 * sverker/stdlib/binary-referenced_byte_size-doc: stdlib: Improve example for binary:referenced_byte_size/1
2019-05-22[snmp] Replaced usage of random with randMicael Karlberg
Use of the deprecated module random has been replaced by the module rand. OTP-15331
2019-05-22[snmp] Remove use of the deprecated get_stacktrace functionMicael Karlberg
Removed the use of the deprecated erlang:stacktrace() function. Instead make use of the 'catch Class:Error:Stacktrace' feature. OTP-15332
2019-05-22Merge branch 'maint'Björn Gustavsson
* maint: Fix non-terminating compilation Fix compiler crash when funs were matched
2019-05-22Merge branch 'bjorn/compiler/fix-freeze/ERL-948/OTP-15828' into maintBjörn Gustavsson
* bjorn/compiler/fix-freeze/ERL-948/OTP-15828: Fix non-terminating compilation
2019-05-22Merge pull request #2236 from bjorng/bjorn/compiler/fix-fun-duplicationBjörn Gustavsson
Fix compiler crash when funs were matched OTP-15833
2019-05-22Merge branch 'maint'Hans Nilsson
* maint: crypto: Re-enable aes_ctr for openssl cryptolib < 1.0.1 use correct module name for standard_error
2019-05-22Merge branch 'hans/crypto/enable_aes_ctr/OTP-15829' into maintHans Nilsson
* hans/crypto/enable_aes_ctr/OTP-15829: crypto: Re-enable aes_ctr for openssl cryptolib < 1.0.1
2019-05-22Merge pull request #2243 from bjorng/bjorn/compiler/fix-redundant-testsBjörn Gustavsson
Improve optimization of redundant tests
2019-05-22Merge pull request #2242 from bjorng/bjorn/add-swap-instructionBjörn Gustavsson
Make the swap instruction known to the compiler
2019-05-22Merge pull request #2237 from bjorng/bjorn/compiler/eliminate-beam_exceptBjörn Gustavsson
Eliminate the beam_except pass
2019-05-22Make the swap instruction known to the compilerBjörn Gustavsson
BEAM has had a `swap` instruction for several releases, but it was not known to the compiler. The loader would translate a sequence of three `move` instructions to the `swap` instructions, but only when it was possible to determine that it would be safe. By making `swap` known to the compiler, it can be applied in more situations since it is easier for the compiler than for the loader to ensure that the usage is safe, and the loader shenanigans can be eliminated.
2019-05-22crypto: Re-enable aes_ctr for openssl cryptolib < 1.0.1Hans Nilsson
It was accidently disabled in the crypto:supports/0 and /1. It worked however in the encrypt/decrypt functions.
2019-05-21Eliminate compiler crash when compiling complex receive statementsBjörn Gustavsson
Certain complex receive statements would result in an internal compiler failure. That would happen when the compiler would fail to find the common exit block following a receive. See the added test case for an example. https://bugs.erlang.org/browse/ERL-950
2019-05-21Merge branch 'velimir/kernel/fix-module-name' into maintHans Bolinder
* velimir/kernel/fix-module-name: use correct module name for standard_error
2019-05-21Fix test case `gen_tcp_api_SUITE:t_connect_timeout`Kjell Winblad
This commit makes the test case `t_connect_timeout` in the test suite gen_tcp_api_SUITE more reliable by searching for unused IP addresses in a larger range of IP addresses.
2019-05-21Make the `cpu_sup_SUITE:util_values` test case more reliableKjell Winblad
Previously, the `util_values` test case in the test suite `cpu_sup_SUITE` tested the `cpu_sup:util()` by checking if a process that spins in a loop cause the CPU utilization measured with `cpu_sup:util()` to increase. This was unreliable on test machines that ran other tasks at the same time. This commit tries to make the test case more reliable by skipping the test case if it is detected that the system is doing other work that use a lot of CPU time and starting 100 spinning processes instead of only 1.
2019-05-20stdlib: Improve example for binary:referenced_byte_size/1Sverker Eriksson
2019-05-20Merge branch 'maint-22' into maintIngela Anderton Andin
* maint-22: Updated OTP version Prepare release # Conflicts: # make/otp_version_tickets
2019-05-20Improve optimization of redundant testsBjörn Gustavsson
The `beam_ssa_dead` pass is supposed to eliminate tests that are determined to be redundant based on the outcome of a previous test. For example, in the following example that repeats a guard test, the second clause can never be executed: foo(A) when A >= 42 -> one; foo(A) when A >= 42 -> two; foo(_) -> three. `beam_ssa_dead` should have eliminated the second clause, but didn't: {test,is_ge,{f,5},[{x,0},{integer,42}]}. {move,{atom,one},{x,0}}. return. {label,5}. {test,is_ge,{f,6},[{x,0},{integer,42}]}. {move,{atom,two},{x,0}}. return. {label,6}. {move,{atom,three},{x,0}}. return. Correct the optimization of four different combinations of relational operations that were too conservate. To ensure the correctness of the optimization, also add an exahaustive test of all combinations of relational operations with one variable and one literal. (Also remove the weak and now redundant coverage tests in `beam_ssa_SUITE`.) With this correction, the following code will be generated for the example: {test,is_ge,{f,5},[{x,0},{integer,42}]}. {move,{atom,one},{x,0}}. return. {label,5}. {move,{atom,three},{x,0}}. return. Thanks to Dániel Szoboszlay (@dszoboszlay), whose talk at Code BEAM STO 2019 made me aware of this missed opportunity for optimization.
2019-05-20Fix non-terminating compilationBjörn Gustavsson
The compiler would not terminate while compiling the following code: foo(<<N:32>>, Tuple, NewValue) -> _ = element(N, Tuple), setelement(N, Tuple, NewValue). The type analysis pass would attempt to construct a huge list when attempting analyse the type of `Tuple` after the call to `setelement/3`. https://bugs.erlang.org/browse/ERL-948
2019-05-20Merge branch 'maint-21' into maintLars Thorsen
* maint-21: Updated OTP version Prepare release # Conflicts: # OTP_VERSION # lib/xmerl/doc/src/notes.xml # lib/xmerl/vsn.mk # make/otp_version_tickets # otp_versions.table
2019-05-20Merge branch 'lars/fix-sax-parser-bug-during-check-encoding/OTP-15826' into ↵Lars Thorsen
maint * lars/fix-sax-parser-bug-during-check-encoding/OTP-15826: [xmerl] Fix parse bug when checking the character encoding
2019-05-16use correct module name for standard_errorGrigory Starinkin
2019-05-15Merge pull request #2232 from seeekr/patch-1Lukas Larsson
fix typo in gen_statem.xml
2019-05-15Prepare releaseErlang/OTP
2019-05-15Merge branch 'lars/fix-sax-parser-bug-during-check-encoding/OTP-15826' into ↵Erlang/OTP
maint-21 * lars/fix-sax-parser-bug-during-check-encoding/OTP-15826: [xmerl] Fix parse bug when checking the character encoding
2019-05-15Prepare releaseErlang/OTP
2019-05-15[xmerl] Fix parse bug when checking the character encodingLars Thorsen
The parser chrashed when an endmarker was missing when parsing attribute values during the character encoding check.
2019-05-15Merge branch 'ingela/ssl-flow-ctrl/ERL-934/OTP-15825' into maintIngela Anderton Andin
* ingela/ssl-flow-ctrl/ERL-934/OTP-15825: ssl: Refactor of OTP 22 code due to patch OTP-15823 ssl: Avoid dialyzer warning ssl: Add test cases for issue reported in ERL-938 ssl: Internal active n must back off when user does not read data ssl: Remove legacy calls to next_record Conflicts: lib/ssl/src/tls_connection.erl
2019-05-15ssl: Refactor of OTP 22 code due to patch OTP-15823Ingela Anderton Andin
2019-05-15ssl: Avoid dialyzer warningIngela Anderton Andin
Maybe we should only have specs for external APIs?! This is a how to write spec problem that we have to address later.
2019-05-15ssl: Add test cases for issue reported in ERL-938Ingela Anderton Andin
2019-05-15ssl: Internal active n must back off when user does not read dataIngela Anderton Andin
TLS connections should not buffer too much application data if they want to benefit from TCP flow control. Certain applications may want to customize the value of internal_active_n as there is a tradeoff between buffering memory and throughput. Conflicts: lib/ssl/src/tls_connection.erl
2019-05-15ssl: Remove legacy calls to next_recordIngela Anderton Andin
Conflicts: lib/ssl/src/dtls_connection.erl lib/ssl/src/ssl_connection.erl
2019-05-15Merge branch 'maint-21' into maintIngela Anderton Andin
* maint-21: Updated OTP version Prepare release # Conflicts: # OTP_VERSION # erts/doc/src/notes.xml # erts/vsn.mk # lib/ssl/doc/src/notes.xml # lib/ssl/vsn.mk # lib/tools/doc/src/notes.xml # lib/tools/vsn.mk # make/otp_version_tickets # otp_versions.table
2019-05-14ssl: Refactor of OTP 22 code due to patch OTP-15823Ingela Anderton Andin
2019-05-14file: allow open/2 to work on directoriesAndre Nathan
This is useful mainly to ensure that a new file has been persisted to disk by calling file:sync/1 or file:datasync/1 on file's parent directory.
2019-05-14Eliminate the beam_except passBjörn Gustavsson
The beam_except pass rewrites certain calls `erlang:error/{1,2}` to use specialized instructions for common exceptions such as `{badmatch,Term}`. Move this optimization to `beam_ssa_pre_codegen` and `beam_ssa_codegen`. The main reason for this change is that optimization passes operating on SSA code are easier to maintain than optimization passes working on BEAM code.