aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2019-02-13Merge pull request #2137 from bjorng/bjorn/tools/coverBjörn Gustavsson
Use the counters module to speed up cover OTP-15575
2019-02-12Update appupAnders Svensson
For OTP-15569, to be released in OTP 20.3.8.19.
2019-02-12Merge branch 'maint'Hans Bolinder
* maint: Optimize calendar:gregorian_days_to_date/1
2019-02-12Merge branch 'FNickRU/stdlib/optimize_calendar/PR-2121/OTP-15572' into maintHans Bolinder
* FNickRU/stdlib/optimize_calendar/PR-2121/OTP-15572: Optimize calendar:gregorian_days_to_date/1
2019-02-11ssl: Use sha256 in test certificates if supportedPéter Dimitrov
This commit fixes ssl_test_lib:appropriate_sha/1 that returns sha256 if it is supported by crypto. It returns sha1 otherwise. Change-Id: I0bfa4d50bbe3c788551a81d418db2cabc36a4344
2019-02-11Merge branch 'maint'Siri Hansen
2019-02-11Merge branch 'siri/observer/crash-toggle-log-view/OTP-15553' into maintSiri Hansen
* siri/observer/crash-toggle-log-view/OTP-15553: [observer] Don't crash on Log > Toggle Log View
2019-02-11beam_jump: Improve elimination of redundant movesBjörn Gustavsson
2019-02-11compiler tests: Restrict cover to run on the local nodeBjörn Gustavsson
This change saves about about a minute when running the cover-compiled compiler tests.
2019-02-11common_test: Add support for running cover:local_only/0Björn Gustavsson
2019-02-11Use the counters module to speed up coverBjörn Gustavsson
Use `counters:add/3` instead of `ets:update_counter/3` for counting the number of times a line is executed. By default, the reference to the counter array for each module will be stored in a persistent term and retrieved every time a counter is updated. This makes the compiler test suite with coverage enabled run *almost* twice as fast (on my computer, in about 6 minutes down from more than 11 minutes). To get even more speed, the new `cover:local_only/0` function can be called to put cover into a mode where the cover-compiled code can only be run on the local node. In this mode, the cover-compiled modules in a more efficient way by compiling the counter reference into the code. This shaves off about one more minute, making the compiler test suite with coverage enabled run *more than* twice as fast (in about 5 minutes on my computer).
2019-02-11ssl: Test TLS 1.3 connectivityPéter Dimitrov
Test TLS 1.3 connectivity between ssl server and openssl s_client. Change-Id: I926229d6bc9e6670ebe0190b491257876845b570
2019-02-11Merge branch 'maint'Sverker Eriksson
2019-02-11Merge branch 'siri/ct_netconfc/edit-config-list/OTP-15298' into maintSiri Hansen
* siri/ct_netconfc/edit-config-list/OTP-15298: [ct] Allow ct_netconfc:edit_config/3,4,5 to take a list of XML elements
2019-02-11Merge branch 'siri/ct_telnet/div-improvements/OTP-15229' into maintSiri Hansen
* siri/ct_telnet/div-improvements/OTP-15229: [ct] Add option {newline,string()} to ct_telnet:cmd and ct_telnet:send [ct] Improve error handling of bad regular expressions to ct_telnet
2019-02-11Merge pull request #2067 from okeuday/reltool_rel_optionsSiri Hansen
reltool: Add load_dot_erlang rel option OTP-15571
2019-02-11Merge branch 'hans/crypto/disable_blake2_libressl/OTP-15564'Hans Nilsson
* hans/crypto/disable_blake2_libressl/OTP-15564: crypto: Disable blake2 in LibreSSL (not supported)
2019-02-11Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Fix a bug affecting keyfind/keysearch/keymember
2019-02-11Merge pull request #2134 from bjorng/bjorn/compiler/propagate-noneBjörn Gustavsson
beam_ssa_type: Propagate the 'none' type from calls
2019-02-11beam_ssa_type: Propagate the 'none' type from callsBjörn Gustavsson
Consider this pseudo code: f(...) -> Val = case Expr of ... -> ... ; ... -> ... ; ... -> my_abort(something_went_wrong) end, %% Here follows code that uses Val. . . . my_abort(Reason) -> throw({error,Reason}). The first two clauses in the case will probably provide some information about the type of the variable `Var`, information that would be useful for optimizing the code that follows the case. However, the third clause would ruin everything. The call to `my_abort/1` could return anything, and thus `Val` could also have any type. 294d66a295f6 introduced module-level type analysis, which will in general keep track of the return type of a local function call. However, it does not improve the optimization for this specific function. When a function never returns, that is, when its type is `none`, it does not propagate the `none` type, but instead pretends that the return type is `any`. This commit extends the handling of functions that don't return to properly handle the `none` type. Any instructions that directly follows the function that does not return will be discarded, and the call will be rewritten to a tail-recursive call. For this specific example, it means that the type for `Val` deduced from the first two clauses will be retained and can be used for optimizing the code after the case.
2019-02-08stdlib: Add ETS docs about partially bound key traversalSverker Eriksson
2019-02-08Fix nocatch on incoming answer with faulty Experimental-Result-CodeAnders Svensson
Failure to decode the Grouped AVP results in a throw from module diameter_gen, which is caught in the normal message decode, but wasn't when only the AVP is decoded from diameter_traffic (for error checking and counter increment). The result was no handle_answer/error callback, and an error return from diameter:call/4 when the detach option was not specified.
2019-02-08dialyzer: Fix a bug affecting keyfind/keysearch/keymemberHans Bolinder
2019-02-08ssl: Fix crash when sending AlertsPéter Dimitrov
Change-Id: Ia84c71214b5379baec3455f0e416a9ea73584750
2019-02-08ssl: Fix dialyzer warningPéter Dimitrov
Change-Id: I87f2111cd557a0000cfd8ab4d50f4e58787bf104
2019-02-08ssl: Improve TLS 1.3 statemPéter Dimitrov
- Store FinishedKey in cipher_state. - Implement state 'wait_finished'. - Calculate traffic secrets in 'wait_finished' after Finished received from client and go to state 'Connection'. - Drop 'change_cipher_spec' messages (middlebox compatibility mode). - Extend tests of 1-RTT. Change-Id: Id69619ec5da053ffaaef75378678a27afeef6916
2019-02-07Merge pull request #2135 from bjorng/bjorn/compiler/optimize-dominatorsBjörn Gustavsson
Optimize ssa_opt_sink for huge functions
2019-02-06Merge branch 'maint'Rickard Green
* maint: Introduce ei_init() Fix bug in ei_accept_tmo Fix build of erl_interface on BSD
2019-02-06Merge branch 'rickard/ei-ext-maint/OTP-15442' into maintRickard Green
* rickard/ei-ext-maint/OTP-15442: Introduce ei_init() Fix bug in ei_accept_tmo Fix build of erl_interface on BSD
2019-02-06crypto: Disable blake2 in LibreSSL (not supported)Hans Nilsson
2019-02-06Merge pull request #2129 from hanssv/crypto/add_blake2_supportHans Nilsson
Add hash function BLAKE2 to crypto:hash/hmac OTP-15564
2019-02-06Optimize ssa_opt_sink for huge functionsBjörn Gustavsson
The ssa_opt_sink optimization of beam_ssa_opt could get very slow for certain huge functions. 9a190cae9bd7 partly addressed this issue by terminating the optimization early if there happened to be no get_tuple_element instructions at all in the function. This commit addresses the issue more directly by making the dominator calculation in beam_ssa:dominators/1 more efficient. The same algorithm as before is used, but it is implemented in a more efficient way based on the ideas in "A Simple, Fast Dominance Algorithm" (http://www.hipersoft.rice.edu/grads/publications/dom14.pdf). As well as being more efficient, the new implementation also gives an explicit representation of the dominator tree, which makes it possible to simplify and optimize the ssa_opt_sink optimization.
2019-02-06Merge pull request #2132 from jhogberg/john/compiler/tuple-element-typesJohn Högberg
Keep track of tuple elements in type optimization pass
2019-02-05Merge branch 'rickard/ei-ext/OTP-15442' into rickard/ei-ext-maint/OTP-15442Rickard Green
* rickard/ei-ext/OTP-15442: Introduce ei_init() Fix bug in ei_accept_tmo Fix build of erl_interface on BSD
2019-02-05Introduce ei_init()Rickard Green
You previously had to initialize ei via erl_init() which implied that you were forced to link against the erl_interface even when not using it (besides initializing ei).
2019-02-05Add blake2 datatype to crypto.xmlHans Svensson
2019-02-05Merge branch 'maint'Ingela Anderton Andin
Conflicts: lib/ssl/doc/src/ssl.xml lib/ssl/src/ssl.erl lib/ssl/src/ssl_cipher_format.erl lib/ssl/src/tls_handshake.erl
2019-02-05Merge branch 'ingela/ssl/alert-return/OTP-15423' into maintIngela Anderton Andin
* ingela/ssl/alert-return/OTP-15423: ssl: Use specs to generate type documentation ssl: Enhance error handling
2019-02-05Merge branch 'maint'Ingela Anderton Andin
2019-02-05Merge branch 'ingela/ssl/dtls-match-error/OTP-15561' into maintIngela Anderton Andin
* ingela/ssl/dtls-match-error/OTP-15561: ssl: Remove unintended match
2019-02-05ssl: Use specs to generate type documentationIngela Anderton Andin
2019-02-05beam_ssa_type: Track the types of tuple elementsJohn Högberg
Prior to 294d66a295f6c2101fe3c2da630979ad4e736c08 there wasn't much point to keeping track of tuple element types; they were only known when we had inserted or extracted values from a tuple, and in neither case was it likely that we'd extract the same values again. It makes a lot more sense to do so now that type optimizations are applied across functions; if we return a tuple it's very likely that its elements will be extracted soon after, and knowing their types lets us eliminate more type checks. Co-authored-by: Björn Gustavsson <[email protected]>
2019-02-04Fix bug in ei_accept_tmoRickard Green
2019-02-04Merge branch 'maint'Péter Dimitrov
* maint: Updated OTP version Prepare release
2019-02-04Merge branch 'maint-21' into maintPéter Dimitrov
* maint-21: Updated OTP version Prepare release
2019-02-04beam_ssa_type: Infer types based on the result of #b_switch{}John Högberg
2019-02-04beam_ssa_opt: Fix function name printing in sub-pass crash dumpJohn Högberg
2019-02-04beam_validator: Remove unreachable case clauseJohn Högberg
2019-02-04Merge pull request #2126 from bjorng/bjorn/compiler/compilation-speedBjörn Gustavsson
Reduce compilation times
2019-02-04Merge branch 'bjorn/compiler/cuddle-with-tests'Björn Gustavsson
* bjorn/compiler/cuddle-with-tests: inline_SUITE: Don't start a slave node Correct test_lib:is_cloned_mod/1 sys_core_fold_lists: Propagate annotations in expansion of lists functions Parallelize compile_SUITE:bc_options/1 Remove the optimized_guard/1 test case