Age | Commit message (Collapse) | Author |
|
* bjorn/compiler/misc:
sys_core_fold: Run optimizations to a fixpoint
sys_core_fold: Improve case optimization
sys_core_fold: Correct scope verification code
core_pp: Correct printing of map updates
Simplify handling of internal BIFs
v3_life: Eliminate special handling of guards
Simplify beam_utils
bs_match_SUITE: Add a test case for beam_utils
bif_SUITE: Cover the remaining uncovered lines
erl_bifs: Remove error_logger:warning_map/0 as a safe BIF
beam_validator: Correct reporting of y register number
beam_jump: Don't try to handle a label at the very end
beam_jump: Simplify eliminate_fallthroughs/2
beam_listing: Remove support for listing sys_pre_expand format
|
|
* nathanl/kernel/write_file-uses-writev/PR-1149/OTP-13909:
Let file:write_file/3 use writev
|
|
|
|
* siri/doc-add_pathsa-order/ERL-267/OTP-13920:
Document the order of directories added with code:add_pathsa/1
|
|
* maint:
parsetools: Correct handling of Unicode in Leex
Don't report error for shutdown exit tuple
|
|
* hasse/parsetools/fix_leex_unicode/OTP-13919:
parsetools: Correct handling of Unicode in Leex
|
|
code:add_pathsa/1 reverts the list of directories when adding it at
the beginning of the code path. The command line option '-pa' behaves
in the same way. This is now documented.
|
|
'legoscia/dynamic-child-shutdown-tuple/ERL-163/PR-1158/OTP-13907' into maint
* legoscia/dynamic-child-shutdown-tuple/ERL-163/PR-1158/OTP-13907:
Don't report error for shutdown exit tuple
|
|
|
|
|
|
|
|
|
|
|
|
* github/pr/1183:
Fix typos in public_key_app.xml
|
|
|
|
* ahmedshafeeq/inets-httpc-RFC-7231/PR-1172/OTP-13902:
Update test case docs with RFC-7231
Update behavior of httpc:request to match RFC-7231
|
|
The 'dfa_graph' option did not work with Unicode.
The testcase 'unicode' was not correct.
|
|
|
|
|
|
* maint:
stdlib: Add a testcase for Unicode expander
Support for unicode expander
|
|
* andrey/stdlib/fix_edlin_expand/ERL-1152:
stdlib: Add a testcase for Unicode expander
Support for unicode expander
|
|
|
|
* siri/ttb/ip-client-queue-size/OTP-13829:
[ttb] Add option <c>queue_size</c> to tracer/2
|
|
|
|
* siri/appups-19.1/OTP-13912:
Update appups in kernel and stdlib for OTP versions > 19.1
|
|
|
|
|
|
|
|
Run the optimizations until a fixpoint is reached, or until
the maximum iteration count is reached.
The hope is that in the future we can many small optimizations
instead of optimizations that try to do everything in one pass.
This change allows us to remove the ad-hoc calls to expr/2
to run more optimizations on a piece of code.
|
|
The optimization that avoids building a tuple in a case
expression would not work if any clause matched a tuple
as in the following example:
f(A, B) ->
case {A,B} of
{<<X>>,Y} ->
{X,Y}
end.
The generated Core Erlang code would look like this (note
the tuples in the case expression and the pattern):
'f'/2 =
fun (_cor1,_cor0) ->
case {_cor1,_cor0} of
<{#{#<X>(8,1,'integer',['unsigned'|['big']])}#,Y}>
when 'true' ->
{X,Y}
.
.
.
end
It is expected that the code should look like this (note
that tuples have been replaced with "values"):
'f'/2 =
fun (_cor1,_cor0) ->
%% Line 5
case <_cor1,_cor0> of
<#{#<X>(8,1,'integer',['unsigned'|['big']])}#,Y> ->
{X,Y}
.
.
.
end
While at it, also fix bugs in the handling of pattern with
aliases. The bindings were produced in the wrong order (creating
'let's with referring to free variables), but in most cases
the incorrect bindings were discarded later without causing any
harm.
|
|
703e8f4490bf broke the scope verification code (by calling
ordsets:is_subset/2 with an unsorted second argument).
While we are it, also optimize the verification function
by avoiding converting the map to a sorted list.
|
|
|
|
Previously, this function would turn any input into a single binary
before writing. This meant it could not take advantage of the `writev`
system call if it was given a list of binaries and told to write with
`raw` mode.
To see this, start an erlang shell on the parent commit, and also
start this dtrace script:
https://github.com/evanmiller/tracewrite
like this:
sudo dtrace -s tracewrite.d -p $(pgrep beam)
In the erlang shell, run the following:
file:write_file("/tmp/tmp.txt", [<<97,98>>, <<98,97>>], [raw]).
In the dtrace output, you will see that the system call used is `write`.
Now repeat with this commit, and you will see that `writev` is used.
|
|
|
|
This sets the maximum queue size for the IP trace driver which is used
when tracing to shell and/or <c>{local,File}</c>.
Also, change the default queue size set by dbg:trace_port/2 to 200.
|
|
* maint:
file_SUITE: Test file:write_file/3
|
|
* sverker/include-erl_nif/PR-1171:
Use more correct delimiters for erl_nif.h include
|
|
Extend file_SUITE:read_write_file/1 to test file:write_file/3
which was not tested at all.
While we are it, remove the superfluous roundtrips tests of
term_to_binary/1 and binary_to_term/1. Those BIFs are tested
in detail in other test suites (for example, binary_SUITE in
emulator_test).
|
|
* sverker/ets-load-factor:
erts: Unify reduction count for ets:select
stdlib: Cuddle ets_SUITE for valgrind
stdlib: Fix ets_SUITE:smp_select_delete
erts: Tweak ets grow/shrink to keep up at contention
erts: Fix ets_SUITE:memory
erts: Suppress failed ETS memory checks
erts: Reduce ets hash load factor
erts: Enable a smaller first hash segment for ets
erts: Redesign ets with separate segment tables
erts: Remove unnecessary access of 'is_resizing'
erts: Add ErtsSizeofMember macro
erts: Add ErtsContainerStruct_ for array members
|
|
Do a simpler translation of internal BIFs.
While we are it, also remove the dummy values of Index and Uniq
from the make_fun internal operation.
|
|
Remove the special handling #k_try{} in guards in v3_life. If we
introduce a new #k_protected{} record in v3_kernel, v3_life no longer
needs to know whether it is processing guards or bodies.
|
|
When beam_utils was first written, it did not have the functions
for testing whether a register was not used. Those were added
later, in sort of a hacky way.
Also, is_killed*() and is_not_used*() for Y registers would
return the same answer. Fix that to make the API more consistent
(an Y register can only be killed by a deallocate/1 instruction).
We will need to change beam_trim to call beam_utils:is_not_used/3
instead of beam_utils:is_killed/3.
|
|
During development, a bug in beam_utils caused a compiler failure
in xmerl. If the bug reappears, make sure that we catch it when
compiling the compiler test suite.
|
|
|
|
There is no need to list every obscure safe BIF in erl_bifs:is_safe/3.
The purpose of erl_bifs:is_safe/3 is merely to warn when the
return value of one of the safe BIFs is ignored.
|
|
The error would be:
{multiple_match_contexts,[{x,0},2]}
instead of:
{multiple_match_contexts,[{x,0},{y,2}]}
|
|
Since the beam_a pass has always been run and have removed any
unused label, there can never be a label as the very last
instruction in a function.
|
|
eliminate_fallthroughs/2 has special code to handle two labels next to
each other, but that does not seem to ever happen and there was one
line uncovered in is_label/1. Since inserting an extra jump between
two labels would not cause any real problems, remove the extra
handling of two consecutive labels.
|
|
The compiler stopped using sys_pre_expand in ae3e177c514c354831.
|
|
=== OTP-19.1 ===
Changed Applications:
- asn1-4.0.4
- common_test-1.12.3
- compiler-7.0.2
- crypto-3.7.1
- debugger-4.2.1
- dialyzer-3.0.2
- diameter-1.12.1
- edoc-0.8
- erl_docgen-0.6
- erl_interface-3.9.1
- erts-8.1
- eunit-2.3.1
- gs-1.6.2
- hipe-3.15.2
- ic-4.4.2
- inets-6.3.3
- jinterface-1.7.1
- kernel-5.1
- mnesia-4.14.1
- observer-2.2.2
- odbc-2.11.3
- parsetools-2.1.3
- reltool-0.7.2
- runtime_tools-1.10.1
- sasl-3.0.1
- snmp-5.2.4
- ssh-4.3.2
- ssl-8.0.2
- stdlib-3.1
- syntax_tools-2.1
- tools-2.8.6
- wx-1.7.1
- xmerl-1.3.12
Unchanged Applications:
- cosEvent-2.2.1
- cosEventDomain-1.2.1
- cosFileTransfer-1.2.1
- cosNotification-1.2.2
- cosProperty-1.2.1
- cosTime-1.2.2
- cosTransactions-1.3.2
- eldap-1.2.2
- et-1.6
- megaco-3.18.1
- orber-3.8.2
- os_mon-2.4.1
- otp_mibs-1.1.1
- percept-0.9
- public_key-1.2
- typer-0.9.11
Conflicts:
OTP_VERSION
lib/gs/doc/src/notes.xml
lib/gs/vsn.mk
|