Age | Commit message (Collapse) | Author |
|
The previous optimizations caused some code in beam_jump to
become uncovered. Add tests to cover more code. Also remove
a clause in beam_jump:opt/3 that does not seem possible to
cover anymore (this is safe, because the clause was an
optimization).
|
|
Eliminate a jump to a return sequence, replacing the jump with
the return sequence. This optimization always save execution time
and may also save code space.
|
|
181cfc4ef9d1 stopping used #st.index.
|
|
Some lines in beam_peep were no longer covered when the sharing optimization
was added to beam_ssa_opt. Also remove some code from beam_peep that no
longer seems possible to cover.
|
|
Share code for semantically equivalent blocks referred to to by `br`
and `switch` instructions.
A similar optimization is done in `beam_jump`, but doing it here as
well is beneficial as it may enable other optimizations. Also, if
there are many semantically equivalent clauses, this optimization can
substanstially decrease compilation times.
|
|
scripts/diffable: Optionally compile the Elixir standard library
|
|
* maint:
erts: fix attempt to start timer when executing on dirty scheduler
|
|
erts: fix attempt to start timer when executing on dirty scheduler
OTP-15446
|
|
Since OTP R20, there is a possibility for MAJOR garbage collection to
run on dirty scheduler. So DistEntry destructor is being called on
dirty scheduler as well. This, in turn, leads to an attempt to schedule
timer on a dirty scheduler too, which is impossible (and will assert
on debug build, but does succeed for release build, creating an
infinite busy loop, since aux work wakes scheduler up, but dirty
scheduler cannot execute aus work).
There is a similar method in erl_hl_timer, see erts_start_timer_callback.
|
|
* maint:
kernel: Fix bug in net_kernel for connection attempt from self
|
|
'sverker/kernel/net_kernel-failed-accept_pending/ERL-781/OTP-15438' into maint
* sverker/kernel/net_kernel-failed-accept_pending/ERL-781/OTP-15438:
kernel: Fix bug in net_kernel for connection attempt from self
|
|
|
|
* sverker/erts/atomics-counters/OTP-13468:
erts: Fix bug in counters
erts: Refactor erl_bif_counters.c
|
|
If Elixir is installed along the the Erlang/OTP repository, produce
diff-friendly output for the Elixir standard library.
|
|
* maint:
persistent_term.xml: Fix spelling
|
|
|
|
net_kernel crashed due to invalid return from handle_info.
Could only happen if erts_internal:new_connection fails
due to non-atom Node or if Node is the own node name.
|
|
Wow, that could have been embarrassing.
|
|
with more consistent naming.
|
|
* maint:
Updated OTP version
Prepare release
|
|
* maint-21:
Updated OTP version
Prepare release
|
|
|
|
|
|
into maint-21
* john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237:
Allow disabling retpoline in interpreter loop
Add a ./configure flag for spectre mitigation
|
|
* maint:
Allow disabling retpoline in interpreter loop
Add a ./configure flag for spectre mitigation
|
|
into maint
* john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237:
Allow disabling retpoline in interpreter loop
Add a ./configure flag for spectre mitigation
|
|
* maint:
Fix inadvertently suppressed warning for unused variable
|
|
Fix inadvertently suppressed warning for unused variable
OTP-15437
|
|
|
|
AGAIN
* sverker/erts/atomics-counters/OTP-13468:
erts: Add counters:put/3
|
|
* sverker/erts/erl_nif-docs:
erts: Clarify erl_nif docs about callback environments
|
|
* maint:
ssh: Add forgotten doc about the files ssh_host_ed*_key
|
|
* hans/ssh/eddsa/OTP-15094:
ssh: Add forgotten doc about the files ssh_host_ed*_key
|
|
|
|
|
|
|
|
* maint:
Fix internal consistency failure for is_function/2
Conflicts:
lib/compiler/src/beam_utils.erl
|
|
* bjorn/compiler/is_function/ERL-778/OTP-15435:
Fix internal consistency failure for is_function/2
|
|
Enhance compiler optimizations
|
|
Sort sequences of `move` instructions on the Y register.
When moving from X registers to Y registers, having the instructions
sorted on Y registers give the loader more opportunities to use
`move_window{3,4,5}` instructions. For examples, the following five
instructions:
move_xy x(2) y(0)
move_xy x(1) y(1)
move_xy x(0) y(2)
move_xy x(5) y(3)
move_xy x(4) y(4)
can be replaced with:
move_window5_xxxxxy x(2) x(1) x(0) x(5) x(4) y(0)
When the Y registers are not ordered so that `move_window5` can be
used, the loader would typically combine the first three moves to a
`move3_xyxyxy` instruction and the last two moves to a
`move2_par_xyxy` instruction.
When moving from Y registers to X registers, sorting on the Y
registers could potentially be more cache-friendly. It could also
be worthwhile investigating a new `move_window` instruction in
the BEAM interpreter that could move values from contiguous Y registers
to X registers.
Note that `scripts/diffable` can generate diffable dissambly files for
the loaded BEAM code:
$ scripts/diffable --dis 0
$ scripts/diffable --dis 1
$ diff -u 0 1
|
|
* peterdmv/ssl/first_client_hello/OTP-15373:
ssl: Fix property tests
ssl: Improve the "start" and "negotiated" states
ssl: Improve TLS 1.3 state machine
ssl: Fix handling of "signature_algs" in ClientHello
ssl: Fix default values of "signature_algs"
ssl: Auto generate build dependencies
ssl: Fix encode/decode of ClientHello (TLS 1.3)
ssl: Change defaults for "supported_groups"
ssl: Fix compilation warnings
ssl: Implement the 'key_share' extension
Change-Id: I31d5d376cee586f4824cd38703d56920d372ed2e
|
|
An external fun could inadvertently suppress warnings for
unused variables, such as in this example:
bug() ->
BugVar = foo(),
if true ->
fun m:f/1
end.
There would be no warning that `BugVar` was unused.
The bug was introduced in ff432e262e652, which was the commit
that extended external funs to allow variables.
https://bugs.erlang.org/browse/ERL-762
|
|
john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237
* john/erts/spectre-configure-flag/OTP-15430/ERIERL-237:
Allow disabling retpoline in interpreter loop
Add a ./configure flag for spectre mitigation
|
|
We only do this when the user has explicitly told us it's okay to
partially disable mitigation (spectre-mitigation=incomplete). The
macro is inert if it isn't.
|
|
Note that the ERTS_NO_RETPOLINE macro introduced by this commit is
completely inert unless spectre-mitigation is set to 'incomplete.'
This includes when mitigation has been manually enabled through
CFLAGS, so it should be impossible for it to unintentionally
disable mitigation.
|
|
|
|
* sverker/fixup-dev-runtime-deps:
Fix fixup of development runtime deps
|
|
|
|
Did fail on really slow unlucky machines.
|
|
There could be an internal consistency failure when using is_function/2,
because an optimization did not take into account that is_function/2 can fail.
https://bugs.erlang.org/browse/ERL-778
|