aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2017-12-20Merge branch 'ingela/dtls-cuddling' into maintIngela Anderton Andin
* ingela/dtls-cuddling: dtls: Correct UDP listener cleanup dtls: Correct return value in UDP listener initialization
2017-12-20Merge branch 'maint'Ingela Anderton Andin
2017-12-20Merge branch 'ingela/DTLS/retransmission-timers' into maintIngela Anderton Andin
* ingela/DTLS/retransmission-timers: dtls: Use repeat_state to make sure retransmission timer is reset
2017-12-20Merge branch 'maint'Ingela Anderton Andin
2017-12-20Merge branch 'ingela/Jxck/PR-1656/OTP-14843' into maintIngela Anderton Andin
* ingela/Jxck/PR-1656/OTP-14843: remove duplicate operation for decode certificate
2017-12-20Reduce register shuffling in receive clausesBjörn Gustavsson
Handle a few more instructions in beam_utils. That will allow beam_reorder to reorder more instructions, delaying get_tuple_element instructions and reducing register shuffling in receive clauses.
2017-12-20Merge pull request #1659 from bjorng/bjorn/compiler/avoid-stackframeBjörn Gustavsson
v3_codegen: Don't let exit BIFs force a stack frame
2017-12-20Merge branch 'maint'Ingela Anderton Andin
2017-12-19remove duplicate operation for decode certificateJxck
completely deprecated operation with no effect.
2017-12-19Merge pull request #1660 from bitnitdit/ssl_doc_duplicate_wordIngela Andin
Remove one of the duplicate word "use"
2017-12-19Merge branch 'dgud/kernel/refc_sched_wall_time/OTP-11694'Dan Gudmundsson
* dgud/kernel/refc_sched_wall_time/OTP-11694: test: spawn scheduler_wall_time flag holder Turn on scheduler_wall_time in an alive process Redirect system_flag(scheduler_wall_time,_) to kernel_refc kernel: add a resource reference counter
2017-12-19test: spawn scheduler_wall_time flag holderDan Gudmundsson
Can not start via rpc any more without spawning a keep alive process, since it will stop collecting when process dies.
2017-12-19Turn on scheduler_wall_time in an alive processDan Gudmundsson
scheduler_wall_time is ref-counted so it will turn off if process dies, keep the process that turns it on alive.
2017-12-19Redirect system_flag(scheduler_wall_time,_) to kernel_refcRickard Green
2017-12-19Merge branch 'maint'Dan Gudmundsson
* maint: Updated OTP version Prepare release mnesia: Fix checkpoint crash
2017-12-19Merge branch 'maint-20' into maintDan Gudmundsson
* maint-20: Updated OTP version Prepare release mnesia: Fix checkpoint crash
2017-12-19Merge branch 'maint'Ingela Anderton Andin
2017-12-19Merge branch 'ingela/inets/httpc-tests' into maintIngela Anderton Andin
* ingela/inets/httpc-tests: inets: Add missing argument in httpc_SUITE
2017-12-19Merge branch 'maint'Ingela Anderton Andin
2017-12-19Merge branch 'ingela/ssl/engin-ug-doc' into maintIngela Anderton Andin
* ingela/ssl/engin-ug-doc: ssl: Add engine use case to Users Guide
2017-12-19Merge branch 'raimo/stdlib/rand-uniformity'Raimo Niskanen
* raimo/stdlib/rand-uniformity: Tweak statistics limits Improve check on normal distribution tail Test normal distribution
2017-12-19Remove one of the duplicate word "use"bitnitdit
2017-12-18Prepare releaseErlang/OTP
2017-12-18Merge branch 'dgud/mnesia/checkpoint-crash/OTP-14841' into maint-20Erlang/OTP
* dgud/mnesia/checkpoint-crash/OTP-14841: mnesia: Fix checkpoint crash
2017-12-18Merge branch 'dgud/mnesia/slow-startup/OTP-14829' into maint-20Erlang/OTP
* dgud/mnesia/slow-startup/OTP-14829: mnesia: Read schema user properties directly
2017-12-18mnesia: Fix checkpoint crashDan Gudmundsson
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.
2017-12-18dtls: Use repeat_state to make sure retransmission timer is resetIngela Anderton Andin
2017-12-18v3_codegen: Don't let exit BIFs force a stack frameBjörn Gustavsson
This is an enhancement of the optimization added in 2e5d6201bb044, where we tried to avoid forcing a stack frame for functions that don't really need them. That optimization would not suppress the stack frame for this function: f(A) -> Res = case A of a -> x; b -> y end, {ok,Res}. The reason is that internally the compiler would rewrite the code to something like this: f(A) -> Res = case A of a -> x; b -> y; Other -> error({case_clause,Other}) end, {ok,Res}. The call to error/1 would force creation of a stack frame, even though it is not really needed because error/1 causes an exception. Handle calls to exit BIFs specially to allow suppressing the stack frame.
2017-12-18Merge branch 'maint'Dan Gudmundsson
* 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
2017-12-18Merge branch 'maint-19' into maintDan Gudmundsson
* 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
2017-12-18Merge pull request #1658 from bjorng/bjorn/compiler/delay-stackframeBjörn Gustavsson
Delay creation of stack frames
2017-12-18inets: Add missing argument in httpc_SUITEIngela Anderton Andin
2017-12-15dtls: Correct UDP listener cleanupIngela Anderton Andin
2017-12-15dtls: Correct return value in UDP listener initializationIngela Anderton Andin
2017-12-15Prepare releaseErlang/OTP
2017-12-15Merge branch 'dgud/mnesia/slow-startup/OTP-14829' into maint-19Erlang/OTP
* dgud/mnesia/slow-startup/OTP-14829: mnesia: Read schema user properties directly
2017-12-15Merge branch 'dgud/mnesia/backup-error-handling/OTP-14776' into maint-19Erlang/OTP
* dgud/mnesia/backup-error-handling/OTP-14776: mnesia: Fix error handling in abort write
2017-12-15Merge branch 'hans/ssh/dont_remove_trailing_ws_19/OTP-14763' into maint-19Erlang/OTP
* 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
2017-12-15ssl: Add engine use case to Users GuideIngela Anderton Andin
2017-12-15Merge branch 'bjorn/compiler/coverage'Björn Gustavsson
* 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
2017-12-15Merge branch 'maint'Hans Nilsson
* maint: Updated OTP version Prepare release ssh: Special treatment of OpenSSH clients >= 7.2 rsa-sha2-* public keys Conflicts: OTP_VERSION
2017-12-15Merge branch 'maint-20' into maintHans Nilsson
* maint-20: Updated OTP version Prepare release ssh: Special treatment of OpenSSH clients >= 7.2 rsa-sha2-* public keys
2017-12-15v3_codegen: Delay creation of stack framesBjörn Gustavsson
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.
2017-12-15beam_record: Try harder to avoid fetching the tag elementBjörn Gustavsson
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.
2017-12-15beam_block: Improve moving of allocationsBjörn Gustavsson
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.
2017-12-15beam_utils: Add usage/3Björn Gustavsson
To avoid having to call both is_killed/3 and is_not_used/3, add usage/3 to answer both questions in one call.
2017-12-15beam_utils: Add anno_defs/1Björn Gustavsson
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.
2017-12-15beam_utils: Improve precision for is_not_used/3Björn Gustavsson
2017-12-15Merge branch 'maint'Ingela Anderton Andin
2017-12-14inets: Add comparable benchmark testsIngela Anderton Andin