Age | Commit message (Collapse) | Author |
|
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.
|
|
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.
|
|
|
|
* lukas/kernel/dist_SUITE_corefile_ignore:
kernel: Ignore cores in erl_distribution_SUITE
|
|
dialyzer: Compute MD5s using the .beam file (OTP-14937)
|
|
* maint:
dialyzer: Correct a parameterized opaque types bug
|
|
* hasse/dialyzer/fix_opaque_bug/OTP-14925/ERL-565:
dialyzer: Correct a parameterized opaque types bug
|
|
Add ets:whereis/1 for resolving table names -> tid()
|
|
* maint:
stdlib: Correct a minor epp bug
|
|
* hasse/stdlib/minor_fix_epp:
stdlib: Correct a minor epp bug
|
|
* 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
|
|
* maint:
ssh: Fix hanging engine test case on an old outdated version
|
|
OpenSSL 1.0.1s-freebsd 1 Mar 2016
|
|
* 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
|
|
* 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
|
|
|
|
|
|
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.
|
|
|
|
|
|
* hans/ssh/limit_knownhosts/OTP-14935:
ssh: Add option save_accepted_host
|
|
* hans/ssh/no_error_for_kill/OTP-14930:
ssh: No error message for signal kill
|
|
|
|
The bug was introduced in 87a0af4 (R18).
|
|
|
|
* john/runtime_tools/fix-sysinfo-to-file-formatting:
Fix regression introduced in d468fcbb / OTP-14816
|
|
|
|
|
|
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.
|
|
|
|
Reject loading modules with slash in name
|
|
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.
|
|
|
|
|
|
|
|
|
|
* maint:
inets: Prepare for release
inets: Fix httpc crash on keep-alive connections
Change-Id: If066f788c3fcb8b5c5a943892d3c03c201590e40
|
|
* peterdmv/inets/httpc_manager_crash/ERL-559/OTP-14908:
inets: Prepare for release
inets: Fix httpc crash on keep-alive connections
Change-Id: I5900a425ed2b9034b1a1bf6040ee45e068438a83
|
|
|
|
|
|
Combine blocks when running beam_block the second time
|
|
* maint:
dialyzer: Fix a crash
|
|
or backslash on Windows.
Purpose: Prevent tricks to get hostile code running.
|
|
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.
|
|
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.
|
|
|
|
* maint:
Check that the stack is initialized when an exception may occur
|
|
Check that the stack is initialized when an exception may occur
|
|
Fix unsafe use of 'allocate' where 'allocate_zero' should be used
|
|
* maint:
Updated OTP version
Update release notes
Update version numbers
kernel: Add os:cmd/2 with max_size option
# Conflicts:
# OTP_VERSION
# lib/kernel/doc/src/os.xml
# lib/kernel/src/os.erl
|