aboutsummaryrefslogtreecommitdiffstats
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-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-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-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-11Merge branch 'maint'Sverker Eriksson
2019-02-11Merge branch 'sverker/enif_select-faulty-assert' into maintSverker Eriksson
* sverker/enif_select-faulty-assert: erts: Fix faulty debug assert in enif_select
2019-02-11Merge branch 'sverker/map-from-ks-vs-bug/OTP-15567' into maintSverker Eriksson
* sverker/map-from-ks-vs-bug/OTP-15567: erts: Add test for bug in enif_make_maps_from_arrays erts: Fix bug in erts_map_from_ks_and_vs
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-11Update primary bootstrapBjörn Gustavsson
2019-02-11Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Fix a bug affecting keyfind/keysearch/keymember
2019-02-11Merge branch 'dialyzer/hasse/fix_bug_erl_bif_types/OTP-15570' into maintHans Bolinder
* dialyzer/hasse/fix_bug_erl_bif_types/OTP-15570: 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-08dialyzer: Fix a bug affecting keyfind/keysearch/keymemberHans Bolinder
2019-02-07Merge pull request #2135 from bjorng/bjorn/compiler/optimize-dominatorsBjörn Gustavsson
Optimize ssa_opt_sink for huge functions
2019-02-06erts: Fix faulty debug assert in enif_selectSverker Eriksson
2019-02-06erts: Add test for bug in enif_make_maps_from_arraysSverker Eriksson
2019-02-06Merge tag 'OTP-21.2' into sverker/map-from-ks-vs-bugSverker Eriksson
2019-02-06erts: Fix bug in erts_map_from_ks_and_vsSverker Eriksson
This sleeping bug was introduced in OTP 19.1 but not possible not provoke until OTP 21.0 when enif_make_map_from_arrays was introduced.
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-06Merge branch 'maint'Sverker Eriksson
2019-02-06Merge branch 'sverker/fix-compile-warning' into maintSverker Eriksson
* sverker/fix-compile-warning: erts: Fix compiler warning for IS_SSMALL
2019-02-06Merge PR-2127 from sverker/erts/enif_make_monitor_term/OTP-15362Sverker Eriksson
Add enif_make_monitor_term
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-05Merge branch 'maint'Lukas Larsson
2019-02-05Merge branch 'lukas/erts/cerl-etp-rr-support' into maintLukas Larsson
* lukas/erts/cerl-etp-rr-support: erts: Expand rr support in cerl and etp
2019-02-05erts: Expand rr support in cerl and etpLukas Larsson
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