aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-11-28Cover more code in beam_jumpBjörn Gustavsson
The previous optimizations caused some code in beam_jump to become uncovered. Add tests to cover more code. Also remove a clause in beam_jump:opt/3 that does not seem possible to cover anymore (this is safe, because the clause was an optimization).
2018-11-28beam_jump: Eliminate jumps to return instructionsBjörn Gustavsson
Eliminate a jump to a return sequence, replacing the jump with the return sequence. This optimization always save execution time and may also save code space.
2018-11-28beam_jump: Remove the unused #st.index fieldBjörn Gustavsson
181cfc4ef9d1 stopping used #st.index.
2018-11-28Cover some code in beam_peepBjörn Gustavsson
Some lines in beam_peep were no longer covered when the sharing optimization was added to beam_ssa_opt. Also remove some code from beam_peep that no longer seems possible to cover.
2018-11-28Share the code for semantically equivalent blocksBjörn Gustavsson
Share code for semantically equivalent blocks referred to to by `br` and `switch` instructions. A similar optimization is done in `beam_jump`, but doing it here as well is beneficial as it may enable other optimizations. Also, if there are many semantically equivalent clauses, this optimization can substanstially decrease compilation times.
2018-11-27Merge pull request #2031 from bjorng/bjorn/diffableBjörn Gustavsson
scripts/diffable: Optionally compile the Elixir standard library
2018-11-27Merge branch 'maint'John Högberg
* maint: erts: fix attempt to start timer when executing on dirty scheduler
2018-11-27Merge pull request #2024 from max-au/fix_aux_work_on_dcpu_schedJohn Högberg
erts: fix attempt to start timer when executing on dirty scheduler OTP-15446
2018-11-26erts: fix attempt to start timer when executing on dirty schedulerMaxim Fedorov
Since OTP R20, there is a possibility for MAJOR garbage collection to run on dirty scheduler. So DistEntry destructor is being called on dirty scheduler as well. This, in turn, leads to an attempt to schedule timer on a dirty scheduler too, which is impossible (and will assert on debug build, but does succeed for release build, creating an infinite busy loop, since aux work wakes scheduler up, but dirty scheduler cannot execute aus work). There is a similar method in erl_hl_timer, see erts_start_timer_callback.
2018-11-26Merge branch 'maint'Rickard Green
* maint: kernel: Fix bug in net_kernel for connection attempt from self
2018-11-26Merge branch ↵Rickard Green
'sverker/kernel/net_kernel-failed-accept_pending/ERL-781/OTP-15438' into maint * sverker/kernel/net_kernel-failed-accept_pending/ERL-781/OTP-15438: kernel: Fix bug in net_kernel for connection attempt from self
2018-11-26Merge branch 'maint'Sverker Eriksson
2018-11-26Merge branch 'sverker/erts/atomics-counters/OTP-13468' into maintSverker Eriksson
* sverker/erts/atomics-counters/OTP-13468: erts: Fix bug in counters erts: Refactor erl_bif_counters.c
2018-11-26scripts/diffable: Optionally compile the Elixir standard libraryBjörn Gustavsson
If Elixir is installed along the the Erlang/OTP repository, produce diff-friendly output for the Elixir standard library.
2018-11-26Merge branch 'maint'Björn Gustavsson
* maint: persistent_term.xml: Fix spelling
2018-11-26persistent_term.xml: Fix spellingBjörn Gustavsson
2018-11-23kernel: Fix bug in net_kernel for connection attempt from selfSverker Eriksson
net_kernel crashed due to invalid return from handle_info. Could only happen if erts_internal:new_connection fails due to non-atom Node or if Node is the own node name.
2018-11-23erts: Fix bug in countersSverker Eriksson
Wow, that could have been embarrassing.
2018-11-23erts: Refactor erl_bif_counters.cSverker Eriksson
with more consistent naming.
2018-11-23Merge branch 'maint'John Högberg
* maint: Updated OTP version Prepare release
2018-11-23Merge branch 'maint-21' into maintJohn Högberg
* maint-21: Updated OTP version Prepare release
2018-11-23Updated OTP versionOTP-21.1.3Erlang/OTP
2018-11-23Prepare releaseErlang/OTP
2018-11-23Merge branch 'john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237' ↵Erlang/OTP
into maint-21 * john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237: Allow disabling retpoline in interpreter loop Add a ./configure flag for spectre mitigation
2018-11-23Merge branch 'maint'John Högberg
* maint: Allow disabling retpoline in interpreter loop Add a ./configure flag for spectre mitigation
2018-11-23Merge branch 'john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237' ↵John Högberg
into maint * john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237: Allow disabling retpoline in interpreter loop Add a ./configure flag for spectre mitigation
2018-11-22Merge branch 'maint'Björn Gustavsson
* maint: Fix inadvertently suppressed warning for unused variable
2018-11-22Merge pull request #2026 from bjorng/bjorn/stdlib/fix-missing-warning/ERL-762Björn Gustavsson
Fix inadvertently suppressed warning for unused variable OTP-15437
2018-11-22Merge branch 'maint'Sverker Eriksson
2018-11-22Merge branch 'sverker/erts/atomics-counters/OTP-13468' into maintSverker Eriksson
AGAIN * sverker/erts/atomics-counters/OTP-13468: erts: Add counters:put/3
2018-11-22Merge branch 'sverker/erts/erl_nif-docs' into maintSverker Eriksson
* sverker/erts/erl_nif-docs: erts: Clarify erl_nif docs about callback environments
2018-11-22Merge branch 'maint'Hans Nilsson
* maint: ssh: Add forgotten doc about the files ssh_host_ed*_key
2018-11-22Merge branch 'hans/ssh/eddsa/OTP-15094' into maintHans Nilsson
* hans/ssh/eddsa/OTP-15094: ssh: Add forgotten doc about the files ssh_host_ed*_key
2018-11-21erts: Clarify erl_nif docs about callback environmentsSverker Eriksson
2018-11-21erts: Add counters:put/3Sverker Eriksson
2018-11-21ssh: Add forgotten doc about the files ssh_host_ed*_keyHans Nilsson
2018-11-21Merge branch 'maint'Björn Gustavsson
* maint: Fix internal consistency failure for is_function/2 Conflicts: lib/compiler/src/beam_utils.erl
2018-11-21Merge branch 'bjorn/compiler/is_function/ERL-778/OTP-15435' into maintBjörn Gustavsson
* bjorn/compiler/is_function/ERL-778/OTP-15435: Fix internal consistency failure for is_function/2
2018-11-21Merge pull request #2023 from bjorng/bjorn/compiler/misc-improvementsBjörn Gustavsson
Enhance compiler optimizations
2018-11-21Sort move instructions on the Y registerBjörn Gustavsson
Sort sequences of `move` instructions on the Y register. When moving from X registers to Y registers, having the instructions sorted on Y registers give the loader more opportunities to use `move_window{3,4,5}` instructions. For examples, the following five instructions: move_xy x(2) y(0) move_xy x(1) y(1) move_xy x(0) y(2) move_xy x(5) y(3) move_xy x(4) y(4) can be replaced with: move_window5_xxxxxy x(2) x(1) x(0) x(5) x(4) y(0) When the Y registers are not ordered so that `move_window5` can be used, the loader would typically combine the first three moves to a `move3_xyxyxy` instruction and the last two moves to a `move2_par_xyxy` instruction. When moving from Y registers to X registers, sorting on the Y registers could potentially be more cache-friendly. It could also be worthwhile investigating a new `move_window` instruction in the BEAM interpreter that could move values from contiguous Y registers to X registers. Note that `scripts/diffable` can generate diffable dissambly files for the loaded BEAM code: $ scripts/diffable --dis 0 $ scripts/diffable --dis 1 $ diff -u 0 1
2018-11-21Merge branch 'peterdmv/ssl/first_client_hello/OTP-15373'Péter Dimitrov
* peterdmv/ssl/first_client_hello/OTP-15373: ssl: Fix property tests ssl: Improve the "start" and "negotiated" states ssl: Improve TLS 1.3 state machine ssl: Fix handling of "signature_algs" in ClientHello ssl: Fix default values of "signature_algs" ssl: Auto generate build dependencies ssl: Fix encode/decode of ClientHello (TLS 1.3) ssl: Change defaults for "supported_groups" ssl: Fix compilation warnings ssl: Implement the 'key_share' extension Change-Id: I31d5d376cee586f4824cd38703d56920d372ed2e
2018-11-21Fix inadvertently suppressed warning for unused variableBjörn Gustavsson
An external fun could inadvertently suppress warnings for unused variables, such as in this example: bug() -> BugVar = foo(), if true -> fun m:f/1 end. There would be no warning that `BugVar` was unused. The bug was introduced in ff432e262e652, which was the commit that extended external funs to allow variables. https://bugs.erlang.org/browse/ERL-762
2018-11-20Merge branch 'john/erts/spectre-configure-flag/OTP-15430/ERIERL-237' into ↵John Högberg
john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237 * john/erts/spectre-configure-flag/OTP-15430/ERIERL-237: Allow disabling retpoline in interpreter loop Add a ./configure flag for spectre mitigation
2018-11-20Allow disabling retpoline in interpreter loopJohn Högberg
We only do this when the user has explicitly told us it's okay to partially disable mitigation (spectre-mitigation=incomplete). The macro is inert if it isn't.
2018-11-20Add a ./configure flag for spectre mitigationJohn Högberg
Note that the ERTS_NO_RETPOLINE macro introduced by this commit is completely inert unless spectre-mitigation is set to 'incomplete.' This includes when mitigation has been manually enabled through CFLAGS, so it should be impossible for it to unintentionally disable mitigation.
2018-11-20Merge branch 'maint'Sverker Eriksson
2018-11-20Merge branch 'sverker/fixup-dev-runtime-deps' into maintSverker Eriksson
* sverker/fixup-dev-runtime-deps: Fix fixup of development runtime deps
2018-11-20Merge branch 'sverker/ets-ordered-set-fixups'Sverker Eriksson
2018-11-20stdlib: Fix bug in ets_SUITE:smp_ordered_iterationSverker Eriksson
Did fail on really slow unlucky machines.
2018-11-20Fix internal consistency failure for is_function/2Björn Gustavsson
There could be an internal consistency failure when using is_function/2, because an optimization did not take into account that is_function/2 can fail. https://bugs.erlang.org/browse/ERL-778