aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-09-13Implement Xoroshiro928**Raimo Niskanen
2018-09-13Improve handling of ref valsRaimo Niskanen
2018-09-13Merge branch 'maint'Hans Nilsson
* maint: crypto: sha3_224 and sha3_256 errors fixed
2018-09-13Merge branch 'hans/crypto/SHA3/OTP-15153' into maintHans Nilsson
2018-09-13Merge branch 'maint'Hans Nilsson
* maint: ssh: Use exported crypto types public_key: Generate refman from types and specs public_key: Rework -type and -spec Check existing specs with code and documentation and adjust. Prepare for doc generation public_key: Setup for doc generation public_key: Remove special type signature for one test crypto: Add missing documentation for enable_fips_mode/1 crypto: Generate refman from types and specs and fix links in engine chapter for generated crypto module refman crypto: Rework -type and -spec Check code and documentation and write -type/-spec or adjust existing. Prepare for doc generation crypto: Setup for doc generation crypto: A user's guide chapter on algorithm details Such as keylengths, blocksizes and IV lengths are hard to find otherwise
2018-09-13Merge branch 'hans/crypto/doc/OTP-15134' into maintHans Nilsson
* hans/crypto/doc/OTP-15134: ssh: Use exported crypto types public_key: Generate refman from types and specs public_key: Rework -type and -spec Check existing specs with code and documentation and adjust. Prepare for doc generation public_key: Setup for doc generation public_key: Remove special type signature for one test crypto: Add missing documentation for enable_fips_mode/1 crypto: Generate refman from types and specs and fix links in engine chapter for generated crypto module refman crypto: Rework -type and -spec Check code and documentation and write -type/-spec or adjust existing. Prepare for doc generation crypto: Setup for doc generation crypto: A user's guide chapter on algorithm details Such as keylengths, blocksizes and IV lengths are hard to find otherwise
2018-09-13ssh: Use exported crypto typesHans Nilsson
2018-09-13public_key: Generate refman from types and specsHans Nilsson
2018-09-13public_key: Rework -type and -specHans Nilsson
Check existing specs with code and documentation and adjust. Prepare for doc generation
2018-09-13public_key: Setup for doc generationHans Nilsson
2018-09-13public_key: Remove special type signature for one testHans Nilsson
2018-09-13crypto: Add missing documentation for enable_fips_mode/1Hans Nilsson
2018-09-13crypto: Generate refman from types and specsHans Nilsson
and fix links in engine chapter for generated crypto module refman
2018-09-13crypto: Rework -type and -specHans Nilsson
Check code and documentation and write -type/-spec or adjust existing. Prepare for doc generation
2018-09-13crypto: Setup for doc generationHans Nilsson
2018-09-13crypto: A user's guide chapter on algorithm detailsHans Nilsson
Such as keylengths, blocksizes and IV lengths are hard to find otherwise Conflicts: lib/crypto/doc/src/crypto.xml
2018-09-13Improve trapping in lists:reverse/2John Högberg
If the process had more free space than reductions it could run a lot longer than it was supposed to. It didn't honor the number of reductions going in either, nor did it bump reductions when returning its result or erroring out. This commit also removes this function from a work function in scheduler_SUITE as it's extremely sensitive to the number of reductions spent in the test, causing equal_and_high_with_part_time_max to fail on some machines.
2018-09-13Fix unsafe use of lists:reverse/1John Högberg
We said reverse/2 but used reverse/1 which is unsafe to use in preloaded modules. This didn't have any effect in practice as the affected functions weren't used before the code server was started, but it's still an error.
2018-09-12[error_logger] Handle report_cb with arity 2Siri Hansen
2018-09-12[proc_lib] Improve crash reports for single line loggingSiri Hansen
2018-09-12[logger] Include single_line option to report_cbSiri Hansen
If the report callback function has two arguments, the second argument is a map with options to limit the size of the log event. To even allow a better formatting when the event shall be printed on a single line, the new option single_line is now included in this argument.
2018-09-12[logger] Check for deadlock when removing filtersSiri Hansen
If a filter fails, it is removed by a call to logger:remove_filter/1,2. If the log event that caused the failure was issued on the logger process itself, this would earlier cause a deadlock due to a gen_server:call to self(). This is now prevented.
2018-09-12[logger] Fix spec for handler callbacks to always return okSiri Hansen
2018-09-12[logger] Increase timetrap timer for handler_requests_under_load testSiri Hansen
2018-09-12[logger] Improve code coverage in testSiri Hansen
2018-09-12[logger] Refactor, and add error detection for configurationSiri Hansen
2018-09-12[logger] Fix logger_disk_log_h_SUITE:sync and add som debug infoSiri Hansen
2018-09-12[logger] Update doc about file options in logger_std_hSiri Hansen
2018-09-12[logger] Remove encoding option from logger_formatterSiri Hansen
The encoding option was introduced in commit 270d909696a753af022df72a404c73f2895b4a02, to allow report callbacks to format according to a given encoding. There was, however, no connection between this encoding option, and the encoding of the device to which the logger handler was writing. Since a formatter is defined to return unicode:chardata(), and in order to avoid mismatch with the encoding of the device, the encoding option is now removed from the formatter. The handler itself must make sure that it does not write illegal data to its device.
2018-09-12Remove outdated reference to error loggersSiri Hansen
2018-09-12[logger] Refactor some logger internalsSiri Hansen
2018-09-12Merge branch 'maint'Rickard Green
* maint: Updated OTP version Update release notes Update version numbers erts: Fix "Prevent inconsistent node lists" fix Fix include-path regression caused by dd0a39c Restore default SIGTERM behaviour for port programs
2018-09-12Merge branch 'maint-21' into maintRickard Green
* maint-21: Updated OTP version Update release notes Update version numbers erts: Fix "Prevent inconsistent node lists" fix Fix include-path regression caused by dd0a39c Restore default SIGTERM behaviour for port programs
2018-09-12beam_ssa_opt: Don't do CSE for tuple_size/1Björn Gustavsson
Not doing CSE for tuple_size/1 seems to generate slightly better code in most cases.
2018-09-12beam_ssa_opt: Slightly optimize compile-time performance of CSEBjörn Gustavsson
2018-09-12beam_ssa_opt: Slightly optimize performance of live optimizationBjörn Gustavsson
Phi nodes with only literals are fairly common, so it's worthwhile to optimize this case.
2018-09-12beam_ssa_opt: Add an optimization of tuple_size/1Björn Gustavsson
This optimization working on the SSA format will replace the similar optimization in beam_dead. See the comment for an explanation of what the new optimization does.
2018-09-12beam_ssa_opt: Add simplification of switch listsBjörn Gustavsson
When the argument for a #b_switch{} comes from a phi node with only literal values, the switch list could be pruned to only contain the possible values. It could also be possible to eliminate the failure label. Also simplify a switch with a single value list or switch that can be replaced with an is_boolean test.
2018-09-12beam_ssa_opt: Add a pass for coalescing phi nodesBjörn Gustavsson
Nested cases can led to code such as this: 10: _1 = phi {literal value1, label 8}, {Var, label 9} br 11 11: _2 = phi {_1, label 10}, {literal false, label 3} The phi nodes can be coalesced like this: 11: _2 = phi {literal value1, label 8}, {Var, label 9}, {literal false, label 3} Coalescing can help other optimizations, and can in some cases reduce register shuffling (if the phi variables for two phi nodes happens to be allocated to different registers).
2018-09-12beam_ssa_opt: Fix liveness optimizationBjörn Gustavsson
Add more instructions to the list of functions that can be safely removed if their values are not used. This is necessary for correctness when doing more aggressive optimizations. Without this change, the 'succeeded' instruction could be optimized away leaving just the instruction followed by an unconditional branch, which the beam_ssa_codegen does not know how to handle. Here is an example: _3 = bs_start_match _1 br label 13 By adding bs_start_match to the list, the bs_start_match instruction will be removed too. (If the result of bs_start_match is actually used, the succeeded instruction would not be removed.) While we are it, rename the misnamed function is_pure/1 to no_side_effect/1 and move it to beam_ssa. is_pure/1 is a bad name because bif:get has no side effect, but is not pure.
2018-09-12beam_peep: Add is_boolean optimization of select_valBjörn Gustavsson
A select_val instruction that test whether a register is a boolean like this: {select_val,Reg,{f,Fail},{list,[{atom,true},Lbl,{atom,false},Lbl]}}. can be replaced with an is_boolean test: {test,is_boolean,{f,Fail},[Reg]}. {jump,{f,Lbl}}. This optimization is currently done in beam_dead. However, if done in the beam_peep, it can catch more opportunities to do the optimization, because after having run beam_jump, labels that were different have been coalesced.
2018-09-12Fix unsafe optimization in beam_deadBjörn Gustavsson
Those optimizations are unsafe if beam_dead has been run before.
2018-09-12Introduce the beam_jump:instr_labels/1 functionBjörn Gustavsson
This functionality will soon be needed.
2018-09-12Move two optimizations from beam_dead to beam_aBjörn Gustavsson
The 'move' instruction can be eliminated in code such as: {test,is_eq_exact,{f,42},[{x,0},{atom,value}]}. {move,{atom,value},{x,0}}. Move that optimization from beam_dead to beam_a. The optimization will be simpler because the 'move' instruction has not yet been moved into a block. Getting rid of 'move' earlier will also save work for later passes. Also move the optimization that eliminates instructions such as from beam_dead to beam_a: {test_is_eq_exact,{f,42},[{x,0},{x,0}]}.
2018-09-12beam_ssa: Optimize linearize/1 and rpo/2Björn Gustavsson
It is faster to use cerl_sets instead of gb_sets to keep track of seen blocks.
2018-09-12beam_ssa: Add trim_unreachable/1Björn Gustavsson
Add trim_unreachable/1 to remove unreachable blocks and adjust phi nodes.
2018-09-12beam_ssa: Extend linearize/1 to also adjust phi nodesBjörn Gustavsson
Since beam_ssa:linearize/1 may remove blocks that are unreachable, adjust phi nodes to make sure that they don't refer to discarded blocks or to blocks that no longer branch to the phi node in question.
2018-09-12Use beam_ssa:normalize/1 in beam_ssa_typeBjörn Gustavsson
2018-09-12Optimize 'and' and 'or' instructionsBjörn Gustavsson
2018-09-12beam_ssa: Add normalize/1Björn Gustavsson
Add normalize/1 to simplify optimizations.