aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
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-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-10Merge pull request #1507 from vances/issue-erl-442Ingela Andin
Correct type specification in ssl:prf/5
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-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 branch 'maint'John Högberg
* maint: Updated OTP version Update release notes Update version numbers
2017-07-28Merge branch 'maint-19' into maintJohn Högberg
* maint-19: Updated OTP version Update release notes Update version numbers
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-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-26Updated OTP versionOTP-20.0.2Erlang/OTP
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 'sverker/big-bxor-bug/ERL-450/OTP-14514' into maint-20Erlang/OTP
* sverker/big-bxor-bug/ERL-450/OTP-14514: erts: Fix bug in bxor of a big negative number
2017-07-26Merge branch 'john/erts/fix-tcp-send-timeout/OTP-14509/ERL-448' into maint-20Erlang/OTP
* john/erts/fix-tcp-send-timeout/OTP-14509/ERL-448: Add a dedicated close function for TCP ports to prevent issues like ERL-430/448 Close TCP ports properly on send timeout
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-26Merge branch 'sverker/missing-relnote/OTP-14494' into maint-20Erlang/OTP
* sverker/missing-relnote/OTP-14494: erts: Add missing release note
2017-07-26Fix doc for the 'quiet' option; it defaults to falseJohn Högberg
2017-07-25Merge branch 'maint'Sverker Eriksson
2017-07-25Merge branch 'sverker/enif_whereis-bug/OTP-14523' into maintSverker Eriksson
* sverker/enif_whereis-bug: erts: Fix bug in enif_whereis_pid/port
2017-07-25Merge branch 'maint'John Högberg
2017-07-25Merge branch 'john/erts/use-lock-flags-in-lc' into maintJohn Högberg
2017-07-25Updated OTP versionOTP-19.3.6.2Erlang/OTP
2017-07-25Update release notesErlang/OTP
2017-07-25Update version numbersErlang/OTP
2017-07-25Merge branch 'sverker/big-bxor-bug/ERL-450/OTP-14514' into maint-19Erlang/OTP
* sverker/big-bxor-bug/ERL-450/OTP-14514: erts: Fix bug in bxor of a big negative number
2017-07-25Merge branch 'john/erts/fix-tcp-send-timeout/OTP-14509/ERL-448' into maint-19Erlang/OTP
* john/erts/fix-tcp-send-timeout/OTP-14509/ERL-448: Add a dedicated close function for TCP ports to prevent issues like ERL-430/448 Close TCP ports properly on send timeout