aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2018-03-02beam_type: Refactor simplifications of instructionsBjörn Gustavsson
2018-03-02beam_type: Refactor updating of the type databaseBjörn Gustavsson
The function tdb_update/2 is problematic. It does not distinguish between assigning a register with a new value and updating information about a register that is used a as source in a test instruction. That was not a problem in practice when there were very few types, but bugs started to be noticed as more types were added. (For example, when a register was overwritten with a new value, the type for the old value stored in the same register could linger in some cases.) Introduce separate functions tdb_store/3 and tdb_meet/3 for assigning a new value to a register and for updating type information for a register referenced as as source, respectively. Also stricten verification of the types that gets stored into the type database.
2018-03-02beam_block: Fix unsafe sinking of get_tuple_element/3Björn Gustavsson
In the following code: {get_tuple_element,{x,0},0,{x,1}}. {put_tuple,2,{x,1}}. {put,{atom,badmap}}. {put,{x,0}}. {move,{x,1},{x,0}}. beam_block would move the get_tuple_element/3 instruction and eliminate the move/2 instruction: {put_tuple,2,{x,1}}. {put,{atom,badmap}}. {put,{x,0}}. {get_tuple_element,{x,0},0,{x,0}}. That is not correct, since the result of the tuple building in {x,1} is now ignored.
2018-02-26Merge branch 'maint'Lukas Larsson
2018-02-26Merge branch 'lukas/kernel/dist_SUITE_corefile_ignore' into maintLukas Larsson
* lukas/kernel/dist_SUITE_corefile_ignore: kernel: Ignore cores in erl_distribution_SUITE
2018-02-26Merge pull request #1719 from josevalim/jv-faster-dialyzer-md5Hans Bolinder
dialyzer: Compute MD5s using the .beam file (OTP-14937)
2018-02-23Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Correct a parameterized opaque types bug
2018-02-23Merge branch 'hasse/dialyzer/fix_opaque_bug/OTP-14925/ERL-565' into maintHans Bolinder
* hasse/dialyzer/fix_opaque_bug/OTP-14925/ERL-565: dialyzer: Correct a parameterized opaque types bug
2018-02-23Merge pull request #1723 from jhogberg/john/erts/ets-whereis/OTP-14884John Högberg
Add ets:whereis/1 for resolving table names -> tid()
2018-02-23Merge branch 'maint'Hans Bolinder
* maint: stdlib: Correct a minor epp bug
2018-02-23Merge branch 'hasse/stdlib/minor_fix_epp' into maintHans Bolinder
* hasse/stdlib/minor_fix_epp: stdlib: Correct a minor epp bug
2018-02-22Merge branch 'raimo/stdlib/rand-polish-stat-tests'Raimo Niskanen
* raimo/stdlib/rand-polish-stat-tests: Decrease tolerance a wee bit Repeat stat tests to only fail for systematic errors Fix histogram and outlier checks
2018-02-22Merge branch 'maint'Hans Nilsson
* maint: ssh: Fix hanging engine test case on an old outdated version
2018-02-22ssh: Fix hanging engine test case on an old outdated versionHans Nilsson
OpenSSL 1.0.1s-freebsd 1 Mar 2016
2018-02-22Merge branch 'maint'Hans Nilsson
* maint: Updated OTP version Prepare release ssh: Add option save_accepted_host ssh: No error message for signal kill ssh: Dont repeat supervisor defaults in map fields ssh: Move starting of channel child to ssh_channel_sup ssh: Test case for sup tree when shell server proc times out Conflicts: OTP_VERSION
2018-02-22Merge branch 'maint-20' into maintHans Nilsson
* maint-20: Updated OTP version Prepare release ssh: Add option save_accepted_host ssh: No error message for signal kill ssh: Dont repeat supervisor defaults in map fields ssh: Move starting of channel child to ssh_channel_sup ssh: Test case for sup tree when shell server proc times out
2018-02-22Clarify the named_table option to ets:new/2John Högberg
2018-02-22Add ets:whereis/1 for resolving table names -> tid()John Högberg
2018-02-21Compute MD5s in dialyzer using the .beam fileJosé Valim
The previous mechanism was based on the core file which meant that for every module in the PLT, we had to fetch its .beam file, retrieve Erlang AST, compile that down to core, serialize it into a binary and then get its MD5. In a project with stdlib, kernel, elixir and a small application in the PLT, relying only on the .beam sped up --check_plt from 10s to 0.8s.
2018-02-21Fix spec for beam_lib:all_chunks/1José Valim
2018-02-21Prepare releaseErlang/OTP
2018-02-21Merge branch 'hans/ssh/limit_knownhosts/OTP-14935' into maint-20Erlang/OTP
* hans/ssh/limit_knownhosts/OTP-14935: ssh: Add option save_accepted_host
2018-02-21Merge branch 'hans/ssh/no_error_for_kill/OTP-14930' into maint-20Erlang/OTP
* hans/ssh/no_error_for_kill/OTP-14930: ssh: No error message for signal kill
2018-02-21ssh: Add option save_accepted_hostHans Nilsson
2018-02-21stdlib: Correct a minor epp bugHans Bolinder
The bug was introduced in 87a0af4 (R18).
2018-02-21Merge branch 'maint'John Högberg
2018-02-21Merge branch 'john/runtime_tools/fix-sysinfo-to-file-formatting' into maintJohn Högberg
* john/runtime_tools/fix-sysinfo-to-file-formatting: Fix regression introduced in d468fcbb / OTP-14816
2018-02-21Decrease tolerance a wee bitRaimo Niskanen
2018-02-21Repeat stat tests to only fail for systematic errorsRaimo Niskanen
2018-02-21dialyzer: Correct a parameterized opaque types bugHans Bolinder
See also https://bugs.erlang.org/browse/ERL-565. To avoid loops, erl_types:t_is_subtype checks for equality using unopaqued types, but in (at least) one case something is lost: This fix makes sure that when forwarding arguments in dataflow, types with different parameters but equal when unopaqued are considered different. For example, dict:dict(0, {}) and dict:dict(0, []) are equal when unopaqued (due to how dict(_, _) is declared in module dict), but should be considered different when forwarding args.
2018-02-20Merge branch 'maint'Sverker Eriksson
2018-02-20Merge PR-1716 from sverker/slash-in-modules/ERL-564/OTP-14933Sverker Eriksson
Reject loading modules with slash in name
2018-02-20Fix regression introduced in d468fcbb / OTP-14816John Högberg
The ~p format specifier made file:consult/1 hysterically slow on one of our test machines that had a unicode character in the root of the code path; all paths were printed as lists and indented with way too much whitespace. Using ~w avoids this issue by never indenting.
2018-02-20ssh: No error message for signal killHans Nilsson
2018-02-20ssh: Dont repeat supervisor defaults in map fieldsHans Nilsson
2018-02-20ssh: Move starting of channel child to ssh_channel_supHans Nilsson
2018-02-20ssh: Test case for sup tree when shell server proc times outHans Nilsson
2018-02-19Merge branch 'maint'Péter Dimitrov
* maint: inets: Prepare for release inets: Fix httpc crash on keep-alive connections Change-Id: If066f788c3fcb8b5c5a943892d3c03c201590e40
2018-02-19Merge branch 'peterdmv/inets/httpc_manager_crash/ERL-559/OTP-14908' into maintPéter Dimitrov
* peterdmv/inets/httpc_manager_crash/ERL-559/OTP-14908: inets: Prepare for release inets: Fix httpc crash on keep-alive connections Change-Id: I5900a425ed2b9034b1a1bf6040ee45e068438a83
2018-02-19Merge branch 'maint'Lukas Larsson
2018-02-19stdlib: Correct documentation typoMartin Hässler
2018-02-16Merge pull request #1700 from bjorng/bjorn/compiler/beam_blockBjörn Gustavsson
Combine blocks when running beam_block the second time
2018-02-15Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Fix a crash
2018-02-15kernel: Reject load of module names with slashSverker Eriksson
or backslash on Windows. Purpose: Prevent tricks to get hostile code running.
2018-02-14beam_block: Combine blocks when running beam_block the second timeBjörn Gustavsson
1a029efd1ad47f started to run the beam_block pass a second time, but it did not attempt to combine adjacent blocks. Combining adjacent blocks leads to many more opportunities for optimizations. After doing some diffing in generated code, it turns out that there is no benefit for beam_split to split out line instructions from blocks. It seems that the only reason it was done was to slightly simplify the implementation of the no_line_info option in beam_clean.
2018-02-14Disable CSE for floating point operationsBjörn Gustavsson
As a preparation for combining blocks before running beam_block for the second time, disable CSE for floating point operations because it will generate invalid code.
2018-02-14dialyzer: Fix a crashHans Bolinder
2018-02-14Merge branch 'maint'Björn Gustavsson
* maint: Check that the stack is initialized when an exception may occur
2018-02-14Merge pull request #1712 from bjorng/bjorn/compiler/beam_validatorBjörn Gustavsson
Check that the stack is initialized when an exception may occur
2018-02-14Merge pull request #1713 from bjorng/bjorn/compiler/fix-unsafe-allocateBjörn Gustavsson
Fix unsafe use of 'allocate' where 'allocate_zero' should be used