aboutsummaryrefslogtreecommitdiffstats
path: root/lib
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-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-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-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'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-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 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 '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
2018-11-20ssl: Fix property testsPéter Dimitrov
Replace hardcoded max size in 'choose' function with the length of supported groups. Change-Id: I4ac595cfee2c3cf0c9d9e1cffd0988940130a0d6
2018-11-20ssl: Improve the "start" and "negotiated" statesPéter Dimitrov
This change adds the capability to the TLS 1.3 server to process ClientHello messages and answer with ServerHello. Change-Id: I13f6cfac932574300338e7301c6162252a591c70
2018-11-20ssl: Improve TLS 1.3 state machinePéter Dimitrov
- Use internal event to transition to the first state of the TLS 1.3 state machine. - Add gen_handshake_1_3/4 and gen_info_1_3/4. Change-Id: I17f12110356c7be4a8dddf9a616df7f181b0ef37
2018-11-20ssl: Fix handling of "signature_algs" in ClientHelloPéter Dimitrov
Use signature schemes in the "signature_algs" extension when creating TLS 1.3 ClientHello extensions. Change-Id: I1402bec659c70352a4a2200146911fd4246d2fe2
2018-11-20ssl: Fix default values of "signature_algs"Péter Dimitrov
- Add function for special handling of default values of "signature_algs" in TLS 1.3. This change adds default values for "signature_algs" even for TLS 1.3 clients as they must send the "signature_algs" extension when a server authenticates itself via a certificate. - Use "signature schemes" as default instead of the old hash-signature algorithms tuple when using TLS 1.3. Change-Id: I296593b16610fd7a18a4ae3f3bac63c2fad06fbd
2018-11-20ssl: Auto generate build dependenciesPéter Dimitrov
- Order the list of input files - Auto generate build dependencies Change-Id: I0520725c98f4739fa73c8667c38ce1b00c494bc9
2018-11-19Merge branch 'maint'Hans Nilsson
* maint: public_key: Add Edward curves to the documentation public_key: Add ed25519 and ed448 sign/verify crypto: Add Edward curves to the documentation crypto: Add eddsa test case (ed25519 and ed448) crypto: Add ed25519 and ed448 sign/verify
2018-11-19Merge branch 'hans/crypto/eddsa/OTP-15419' into maintHans Nilsson
* hans/crypto/eddsa/OTP-15419: public_key: Add Edward curves to the documentation public_key: Add ed25519 and ed448 sign/verify crypto: Add Edward curves to the documentation crypto: Add eddsa test case (ed25519 and ed448) crypto: Add ed25519 and ed448 sign/verify
2018-11-19Merge branch 'maint'Hans Nilsson
* maint: ssh: Add Edward curves to the documentation ssh: Update test cases for eddsa ssh: Add public keys 'ssh-ed25519' and 'ssh-ed448'
2018-11-19Merge branch 'hans/ssh/eddsa/OTP-15094' into maintHans Nilsson
* hans/ssh/eddsa/OTP-15094: ssh: Add Edward curves to the documentation ssh: Update test cases for eddsa ssh: Add public keys 'ssh-ed25519' and 'ssh-ed448'
2018-11-19Merge branch 'maint'Hans Nilsson
* maint: ssh: Make host and user key pre-checking better ssh: Generalize unpublished test support option ssh: Cleaning and polishing of ssh_auth ssh: Add a common key_cb call function
2018-11-19ssh: Make host and user key pre-checking betterHans Nilsson
This will prevent crashes in ssh_file for public key types which have no passphrase option although being supported. Also centralize host key checking to avoid code duplication. This was already done for user keys.
2018-11-19ssh: Generalize unpublished test support optionHans Nilsson
Also rename the corresponding testcase in ssh_options_SUITE and add logging.
2018-11-19ssh: Cleaning and polishing of ssh_authHans Nilsson
No intentional api changes. Only to make the code less hard to read.
2018-11-19ssh: Add a common key_cb call functionHans Nilsson
2018-11-19public_key: Add Edward curves to the documentationHans Nilsson
2018-11-19public_key: Add ed25519 and ed448 sign/verifyHans Nilsson
2018-11-19crypto: Add Edward curves to the documentationHans Nilsson
2018-11-19crypto: Add eddsa test case (ed25519 and ed448)Hans Nilsson
2018-11-19crypto: Add ed25519 and ed448 sign/verifyHans Nilsson
2018-11-19ssh: Add Edward curves to the documentationHans Nilsson
2018-11-19ssh: Update test cases for eddsaHans Nilsson
2018-11-19ssh: Add public keys 'ssh-ed25519' and 'ssh-ed448'Hans Nilsson
Requires OpenSSL-1.1.1 https://tools.ietf.org/html/draft-ietf-curdle-ssh-ed25519-ed448-00
2018-11-19beam_ssa_pre_codegen: Improve reuse of Y registersBjörn Gustavsson
Enhance the copy_retval/1 optimization to allow Y registers to be reused in more circumstances. Reusing Y register can often reduce the size of the stack frame.
2018-11-19beam_ssa_codegen: Improve optimization of allocate instructionsBjörn Gustavsson
There could be `allocate_zero` instructions where `allocate` would suffice or superfluous `init` instructions because all possible initializations of Y registers were not taken into account. While at it, also add some more comments.
2018-11-18Add get_map_element to beam_ssa:no_side_effect/1Björn Gustavsson
The `get_map_element` instruction has no side effects, and should be removed if its value is not used.
2018-11-16erts: Fix offheap leak of ets catree tmp iteration keySverker Eriksson
Also fix erts_debug:get_internal_status(node_and_dist_references) for catree to also search route node keys for offheap stuff.
2018-11-16ssl: Fix encode/decode of ClientHello (TLS 1.3)Péter Dimitrov
- Fix handling of hello versions. TLS 1.3 ClientHello will use TLS 1.3 encoding. - Fix encoding/decoding of TLS records when record protection has not yet been engaged (NULL cipher). Change-Id: I7511d1a7751f1ec8c2f2f2fb3d21ddf80a3f428b
2018-11-16ssl: Change defaults for "supported_groups"Péter Dimitrov
Removed strongest Diffie-Hellman groups from defaults (ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192) in order to reduce the time spent with calculating the keys for the key_share extension. Change-Id: I1cc1914ea4c5093f694989b0153c1bd1c8840eef