aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2017-08-16Merge pull request #1528 from ↵Björn Gustavsson
bjorng/bjorn/compiler/improve-case-opt/ERL-452/OTP-14525 Generalize optimization of "one-armed" cases
2017-08-16Merge pull request #1511 from michalmuskala/sharing-fixpointBjörn Gustavsson
Run the sharing optimisation in beam_jump until fixpoint
2017-08-15Merge branch 'maint'Ingela Anderton Andin
2017-08-15Merge pull request #1532 from ↵Ingela Andin
angelhof/public_key/generate_key-rsa-inconsistency-fix public_key:generate_key/1 RSA key generation inconsistency OTP-14534
2017-08-14Apply the redundant test optimisation also in case of fall-throughMichał Muskała
Even though, it's not possible to have fall-throughs when entering the otp pass, it can produce them itself and we're running the pass until fixpoint.
2017-08-14Replace labels instead of inserting duplicates in beam_jumpMichał Muskała
This makes other optimisations more efficient since we have less labels overall.
2017-08-14Enhance elimination of useless tests in beam_jumpMichał Muskała
It can happen we have the following situation: {test,is_tuple,Fail,[R1]} {test,test_arity,Fail,[R1,N1]} {get_tuple_element,R1,N2,R2} {test,is_eq_exaqct,Fail,[R2,Atom]} {jump,Fail} Previously, the optimisation would eliminate the last is_eq_exact test, but we can do more. If the register R2 is not used in Fail, we can eliminate the get_tuple_element instruction as well as all the preceding tests. Ultimately, the whole sequence can be replaced by: {jump,Fail}
2017-08-14Merge branch 'maint'Ingela Anderton Andin
2017-08-14Merge branch 'ingela/ssl/timeout-cuddle' into maintIngela Anderton Andin
* ingela/ssl/timeout-cuddle: ssl: Longer timeouts for test cases that do many handshakes
2017-08-14Merge branch 'maint'Ingela Anderton Andin
2017-08-14Merge pull request #1527 from fenollp/gen_fsm-depre-20Ingela Andin
Correct arity an function names for compiler deprecation warnings
2017-08-13Run the sharing optimisation in beam_jump until fixpointMichał Muskała
This is especially useful after inlining a function with a case. Today the compiler would most probably be able to unify all the leafs of the case during the sharing optimisation, but it would fail to unify the pattern matching itself. Naively running the optimisation multiple times wouldn't be able to find the common code either, because it would differ in jump/fail targets of various instructions. To remedy this, after doing each sharing pass we traverse the code backwards when reversing and update all the jump targets with the new targets that were discovered during the unification pass. This allows running the optimisation until fixpoint and makes sure all sharing opportunities will be discovered. This optimisation also helps with the Elixir's `with/else` construct.
2017-08-12Introduce beam_utils:replace_labels/4Michał Muskała
2017-08-11Merge branch 'maint'Ingela Anderton Andin
2017-08-11Merge pull request #1509 from vances/issue-erl-398Ingela Andin
HTTP server truncates existing logs OTP-14530
2017-08-11Merge branch 'maint'Ingela Anderton Andin
2017-08-11Merge branch 'ingela/ssl/cert-handling' into maintIngela Anderton Andin
* ingela/ssl/cert-handling: ssl: Correct cipher suite handling ssl: Modernize DSA cert chain generation ssl: Clean ssl: Remove test of OpenSSL ssl: Use new cert generation
2017-08-10Merge branch 'maint'Björn Gustavsson
* maint: sys_core_fold: Fix unsafe optimization of non-variable apply Correct type specification in ssl:prf/5
2017-08-10Merge pull request #1526 from bjorng/bjorn/compiler/non-variable-applyBjörn Gustavsson
sys_core_fold: Fix unsafe optimization of non-variable apply OTP-14526
2017-08-10Generalize optimization of "one-armed" casesBjörn Gustavsson
A 'case' expression will force a stack frame (essentially in the same way as a function call), unless it is at the end of a function. In sys_core_fold there is an optimization that can optimize one-armed cases such as: case Expr of Pat1 -> DoSomething; Pat2 -> erlang:error(bad) end, MoreCode. Because only one arm of the 'case' can succeed, the code after the case can be move into the successful arm: case Expr of Pat1 -> DoSomething, MoreCode; Pat2 -> erlang:error(bad) end. Thus, the 'case' is at the end of the function and it will no longer need a stack frame. However, the optimization in sys_core_fold would not be applied if there were more than one failing clause such as in this code: case Expr of Pat1 -> DoSomething, MoreCode; Pat2 -> erlang:error(bad); _ -> erlang:error(case_clause) end. Generalize the optimization to handle any number of failing clauses at the end of the case. Reported-by: bugs.erlang.org/browse/ERL-452
2017-08-10Merge pull request #1507 from vances/issue-erl-442Ingela Andin
Correct type specification in ssl:prf/5
2017-08-10ssl: Longer timeouts for test cases that do many handshakesIngela Anderton Andin
2017-08-10Merge branch 'maint'Ingela Anderton Andin
2017-08-10Merge branch 'ingela/dtls/cuddle' into maintIngela Anderton Andin
* ingela/dtls/cuddle: ssl: Handle OpenSSL output correctly
2017-08-10ssl: Correct cipher suite handlingIngela Anderton Andin
This is mainly fixing the test suites so that they test the intended cipher suites, issue reported in ERL-460. Also ssl_cipher:anonymous_suites was corrected for DTLS.
2017-08-09ssl: Modernize DSA cert chain generationIngela Anderton Andin
2017-08-09Merge branch 'maint'Anders Svensson
2017-08-09Merge branch 'anders/diameter/message_cb/OTP-14486' into maintAnders Svensson
* anders/diameter/message_cb/OTP-14486: Add simple message_cb to example server Fix inappropriate message callbacks
2017-08-09Merge branch 'anders/diameter/20.0/shared_transport/OTP-14011' into maintAnders Svensson
* anders/diameter/20.0/shared_transport/OTP-14011: Don't assume nodes are eternally connected when sharing transport
2017-08-09Merge branch 'anders/diameter/transport/ERL-332' into maintAnders Svensson
* anders/diameter/transport/ERL-332: Remove irrelevant comment Add missing setopts after deferred diameter_{tcp,sctp} actions
2017-08-08gen_fsm-depre-20: fix some more redirections to unexisting functionsPierre Fenoll
2017-08-08gen_fsm-depre-20: fix gen_fsm deprecation recommendations after 20.0Pierre Fenoll
2017-08-08ssl: Handle OpenSSL output correctlyIngela Anderton Andin
Adjust to handle output from OpenSSL in a more general way, so that "unknown option" should be caught for all cases and the test case skipped if that is the case and other data form OpenSSL should be ignored.
2017-08-08ssl: CleanIngela Anderton Andin
This code was not used and we already have mixed chains ECDH_RSA tests
2017-08-08ssl: Remove test of OpenSSLIngela Anderton Andin
We are not testing OpenSSL. We want to test interoperability with OpenSSL
2017-08-08ssl: Use new cert generationIngela Anderton Andin
2017-08-07sys_core_fold: Fix unsafe optimization of non-variable applyBjörn Gustavsson
The sys_core_fold pass would do an unsafe "optimization" when an apply operation did not have a variable in the function position as in the following example: > cat test1.core module 'test1' ['test1'/2] attributes [] 'i'/1 = fun (_f) -> _f 'test1'/2 = fun (_f, _x) -> apply apply 'i'/1 (_f) (_x) end > erlc test1.core no_file: Warning: invalid function call Reported-by: Mikael Pettersson
2017-08-03Add simple message_cb to example serverAnders Svensson
2017-07-28Merge pull request #1519 from erszcz/fix-typo-listner-to-listenerRaimo Niskanen
Fix a proliferated typo in ssl
2017-07-28Merge branch 'maint'Raimo Niskanen
2017-07-28Merge pull request #1520 from NOMORECOFFEE/fix_array_spec_typoRaimo Niskanen
array: fix spec typo
2017-07-28Change version of hardcoded RSA test recordsKonstantinos Kallas
2017-07-27Merge branch 'maint'John Högberg
* maint: Updated OTP version Update release notes Update version numbers Fix doc for the 'quiet' option; it defaults to false asn1: Fix missing quotes of external encoding call Add a dedicated close function for TCP ports to prevent issues like ERL-430/448 Close TCP ports properly on send timeout erts: Add missing release note
2017-07-27Merge branch 'maint-20' into maintJohn Högberg
* maint-20: Updated OTP version Update release notes Update version numbers Fix doc for the 'quiet' option; it defaults to false asn1: Fix missing quotes of external encoding call Add a dedicated close function for TCP ports to prevent issues like ERL-430/448 Close TCP ports properly on send timeout erts: Add missing release note
2017-07-26Update release notesErlang/OTP
2017-07-26Update version numbersErlang/OTP
2017-07-26Merge branch 'sverker/asn1/missing-quotes/OTP-14519' into maint-20Erlang/OTP
* sverker/asn1/missing-quotes/OTP-14519: asn1: Fix missing quotes of external encoding call
2017-07-26Merge branch 'john/kernel/fix-disk-log-docs/OTP-14498' into maint-20Erlang/OTP
* john/kernel/fix-disk-log-docs/OTP-14498: Fix doc for the 'quiet' option; it defaults to false
2017-07-26Fix doc for the 'quiet' option; it defaults to falseJohn Högberg
2017-07-25RSAPrivateKey version is set to 'two-prime', as stated in documentation, and ↵Konstantinos Kallas
not 0