summaryrefslogtreecommitdiff
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'maint'Dan Gudmundsson2017-12-193-4/+30
|\ | | | | | | | | | | | | * maint: Updated OTP version Prepare release mnesia: Fix checkpoint crash
| * Merge branch 'maint-20' into maintDan Gudmundsson2017-12-193-4/+30
| |\ | | | | | | | | | | | | | | | | | | * maint-20: Updated OTP version Prepare release mnesia: Fix checkpoint crash
| | * Prepare releaseErlang/OTP2017-12-182-2/+28
| | |
| | * Merge branch 'dgud/mnesia/checkpoint-crash/OTP-14841' into maint-20Erlang/OTP2017-12-181-2/+2
| | |\ | | | | | | | | | | | | | | | | * dgud/mnesia/checkpoint-crash/OTP-14841: mnesia: Fix checkpoint crash
| | | * mnesia: Fix checkpoint crashDan Gudmundsson2017-12-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bad timing can cause retain messages to go to a new process if checkpoint name is reused directly and the checkpoints contain different tables. Ignore those messages instead of crash.
| | * | Merge branch 'dgud/mnesia/slow-startup/OTP-14829' into maint-20Erlang/OTP2017-12-181-13/+3
| | |\ \ | | | |/ | | |/| | | | | | | | | * dgud/mnesia/slow-startup/OTP-14829: mnesia: Read schema user properties directly
* | | | Merge branch 'maint'Ingela Anderton Andin2017-12-191-2/+2
|\ \ \ \ | |/ / /
| * | | Merge branch 'ingela/inets/httpc-tests' into maintIngela Anderton Andin2017-12-191-2/+2
| |\ \ \ | | | | | | | | | | | | | | | | | | | | * ingela/inets/httpc-tests: inets: Add missing argument in httpc_SUITE
| | * | | inets: Add missing argument in httpc_SUITEIngela Anderton Andin2017-12-181-2/+2
| | | | |
* | | | | Merge branch 'maint'Ingela Anderton Andin2017-12-191-0/+37
|\ \ \ \ \ | |/ / / /
| * | | | Merge branch 'ingela/ssl/engin-ug-doc' into maintIngela Anderton Andin2017-12-191-0/+37
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * ingela/ssl/engin-ug-doc: ssl: Add engine use case to Users Guide
| | * | | | ssl: Add engine use case to Users GuideIngela Anderton Andin2017-12-151-0/+37
| | |/ / /
* | | | | Merge branch 'raimo/stdlib/rand-uniformity'Raimo Niskanen2017-12-191-1/+207
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * raimo/stdlib/rand-uniformity: Tweak statistics limits Improve check on normal distribution tail Test normal distribution
| * | | | | Tweak statistics limitsRaimo Niskanen2017-11-011-4/+4
| | | | | |
| * | | | | Improve check on normal distribution tailRaimo Niskanen2017-10-311-48/+51
| | | | | |
| * | | | | Test normal distributionRaimo Niskanen2017-10-271-1/+204
| | | | | |
* | | | | | Merge branch 'maint'Dan Gudmundsson2017-12-181-13/+3
|\ \ \ \ \ \ | | |/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * maint: Updated OTP version Prepare release mnesia: Read schema user properties directly ssh: testcases for space trailing Hello msg ssh: Don't remove trailing WS in Hello msg
| * | | | | Merge branch 'maint-19' into maintDan Gudmundsson2017-12-181-13/+3
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * maint-19: Updated OTP version Prepare release mnesia: Read schema user properties directly ssh: testcases for space trailing Hello msg ssh: Don't remove trailing WS in Hello msg
| | * | | | | Prepare releaseErlang/OTP2017-12-154-3/+46
| | | | | | |
| | * | | | | Merge branch 'dgud/mnesia/slow-startup/OTP-14829' into maint-19Erlang/OTP2017-12-151-13/+3
| | |\ \ \ \ \ | | | | |_|_|/ | | | |/| | | | | | | | | | | | | | | | | * dgud/mnesia/slow-startup/OTP-14829: mnesia: Read schema user properties directly
| | | * | | | mnesia: Read schema user properties directlyDan Gudmundsson2017-12-141-13/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing a proper transaction handling of user properties (in current implmenentation) caused schema_transactions to be quadratic which caused huge startup times for nodes with many tables since the merge schema is a schema_transaction. Do a direct read instead, cheap but implies that the plugin changes will not be visible until the changes are commited and cannot be used later in same transaction, which was possible before if undocumented functions where used.
| | * | | | | Merge branch 'dgud/mnesia/backup-error-handling/OTP-14776' into maint-19Erlang/OTP2017-12-151-2/+2
| | |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * dgud/mnesia/backup-error-handling/OTP-14776: mnesia: Fix error handling in abort write
| | * \ \ \ \ \ Merge branch 'hans/ssh/dont_remove_trailing_ws_19/OTP-14763' into maint-19Erlang/OTP2017-12-152-9/+26
| | |\ \ \ \ \ \ | | | |_|/ / / / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * hans/ssh/dont_remove_trailing_ws_19/OTP-14763: ssh: testcases for space trailing Hello msg ssh: Don't remove trailing WS in Hello msg
| | | * | | | | ssh: testcases for space trailing Hello msgHans Nilsson2017-11-101-0/+23
| | | | | | | |
| | | * | | | | ssh: Don't remove trailing WS in Hello msgHans Nilsson2017-11-091-9/+3
| | | | | | | |
* | | | | | | | Merge pull request #1658 from bjorng/bjorn/compiler/delay-stackframeBjörn Gustavsson2017-12-185-122/+521
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Delay creation of stack frames
| * | | | | | | | v3_codegen: Delay creation of stack framesBjörn Gustavsson2017-12-151-5/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v3_codegen currently wraps a stack frame around each clause in a function (unless the clause is simple without any 'case' or other complex constructions). Consider this function: f({a,X}) -> A = abs(X), case A of 0 -> {result,"0"}; _ -> {result,integer_to_list(A)} end; f(_) -> error. The first clause needs a stack frame because there is a function call to integer_to_list/1 not in the tail position. v3_codegen currently wraps the entire first clause in stack frame. We can delay the creation of the stack frame, and create a stack frame in each arm of the 'case' (if needed): f({a,X}) -> A = abs(X), case A of 0 -> %% Don't create a stack frame here. {result,"0"}; _ -> %% Create a stack frame here. {result,integer_to_list(A)} end; f(_) -> error. There are pros and cons of this approach. The cons are that the code size may increase if there are many 'case' clauses and each needs its own stack frame. The allocation instructions may also interfere with other optimizations, but the new optimizations introduced in previous commits will mitigate most of those issues. The pros are the following: * For some clauses in a 'case', there is no need to create any stack frame at all. * Often when moving an allocation instruction into a 'case' clause, the slightly cheaper 'allocate' instruction can be used instead of 'allocate_zero'. There is also the possibility that the allocate instruction can be be combined with a 'test_heap' instruction. * Each stack frame for each arm of the 'case' will have exactly as many slots as needed.
| * | | | | | | | beam_record: Try harder to avoid fetching the tag elementBjörn Gustavsson2017-12-151-50/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When rewriting tuple matching of the first element of a tuple to an is_tagged_tuple instruction, the get_tuple_element instruction that fetches the tag will be left unless the register that is fetched is subsequently killed. We can do better than that. If the register is referenced in an allocating instruction, but its value is never actually used, we can do one of two things: if the value is known to be defined earlier (using annotations added by beam_utils:anno_defs/1) the instruction can be removed altogether; if not, it can be replaced with a 'move nil TagRegister' instruction.
| * | | | | | | | beam_block: Improve moving of allocationsBjörn Gustavsson2017-12-151-29/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use annotations added by beam_utils:anno_defs/1 to move more allocations upwards in the instruction stream. That in turn allows us to optimize away more 'move' instructions.
| * | | | | | | | beam_utils: Add usage/3Björn Gustavsson2017-12-151-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To avoid having to call both is_killed/3 and is_not_used/3, add usage/3 to answer both questions in one call.
| * | | | | | | | beam_utils: Add anno_defs/1Björn Gustavsson2017-12-151-2/+225
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add beam_utils:anno_defs/1 which will add an annotation to the beginning of each block indicating which X registers that are defined. Having that information can improve some optimizations.
| * | | | | | | | beam_utils: Improve precision for is_not_used/3Björn Gustavsson2017-12-152-3/+58
| | | | | | | | |
| * | | | | | | | beam_util: Fix bug in is_not_used/3Björn Gustavsson2017-12-132-4/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 01835845579e9 fixed some problems, but introduced a bug where is_not_used/3 would report that a register was not used when it in fact was.
| * | | | | | | | v3_codegen: Eliminate unused function argumentsBjörn Gustavsson2017-12-091-28/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 758712d6294 changed the need_heap/2 function so that it stopped using its second argument. Remove the second argument from need_heap(), and update all callers to similarly remove unused arguments.
* | | | | | | | | Merge branch 'bjorn/compiler/coverage'Björn Gustavsson2017-12-154-108/+44
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bjorn/compiler/coverage: beam_utils: Refactor combine_alloc_lists() to cover more lines map_SUITE: Cover beam_utils:bif_to_test/3 beam_disasm: Remove support for obsolete instructions guard_SUITE: Test is_bitstring/1 and is_map/1 on literals
| * | | | | | | | | beam_utils: Refactor combine_alloc_lists() to cover more linesBjörn Gustavsson2017-12-141-25/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are four uncovered lines in combine_heap_needs/2 and combine_alloc_lists/2. There is no way to reach starting from Erlang source code using the standard compiler. However, they can be reached starting from BEAM assembly code, so we don't want to remove them. We could add a test case that covers the lines using assembly code, but an easier solution is to rewrite the code in a more generic way using sofs so that the code can be covered with existing test cases.
| * | | | | | | | | map_SUITE: Cover beam_utils:bif_to_test/3Björn Gustavsson2017-12-131-0/+20
| | | | | | | | | |
| * | | | | | | | | beam_disasm: Remove support for obsolete instructionsBjörn Gustavsson2017-12-081-82/+0
| | | | | | | | | |
| * | | | | | | | | guard_SUITE: Test is_bitstring/1 and is_map/1 on literalsBjörn Gustavsson2017-12-081-1/+3
| |/ / / / / / / /
* | | | | | | | | Merge branch 'maint'Hans Nilsson2017-12-154-11/+35
|\ \ \ \ \ \ \ \ \ | | |/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * maint: Updated OTP version Prepare release ssh: Special treatment of OpenSSH clients >= 7.2 rsa-sha2-* public keys Conflicts: OTP_VERSION
| * | | | | | | | Merge branch 'maint-20' into maintHans Nilsson2017-12-154-11/+35
| |\ \ \ \ \ \ \ \ | | |_|_|_|_|_|/ / | |/| | | | | | / | | | |_|_|_|_|/ | | |/| | | | | | | | | | | | | | | | | | | | | * maint-20: Updated OTP version Prepare release ssh: Special treatment of OpenSSH clients >= 7.2 rsa-sha2-* public keys
| | * | | | | | Prepare releaseErlang/OTP2017-12-142-1/+18
| | | | | | | |
| | * | | | | | ssh: Special treatment of OpenSSH clients >= 7.2 rsa-sha2-* public keysHans Nilsson2017-12-142-10/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thoose clients signs with sha instead of sha2-*. Try first to verify with the correct one, and if that fails, retry with sha1.
* | | | | | | | Merge branch 'maint'Ingela Anderton Andin2017-12-1511-26/+1668
|\ \ \ \ \ \ \ \ | |/ / / / / / /
| * | | | | | | inets: Add comparable benchmark testsIngela Anderton Andin2017-12-1412-16623/+1601
| | | | | | | |
| * | | | | | | inets: Create httpd benchmark framworkHans Nilsson2017-12-145-2/+16666
| | | | | | | |
* | | | | | | | Merge branch 'maint'Ingela Anderton Andin2017-12-144-11/+16
|\ \ \ \ \ \ \ \ | |/ / / / / / /
| * | | | | | | ssl: Align (with DTLS) and correct TLS_FALLBACK_SCSV handlingIngela Anderton Andin2017-12-143-11/+12
| | | | | | | |
| * | | | | | | Merge pull request #1650 from jabarszcz/doc_digraph_errorHans Bolinder2017-12-141-0/+4
| |\ \ \ \ \ \ \ | | |/ / / / / / | |/| | | | | | digraph: Document a bad_edge error
| | * | | | | | digraph: Document a bad_edge errorJean-Alexandre Barszcz2017-12-061-0/+4
| | | | | | | |