Age | Commit message (Collapse) | Author |
|
* dgud/kernel/refc_sched_wall_time/OTP-11694:
test: spawn scheduler_wall_time flag holder
Turn on scheduler_wall_time in an alive process
Redirect system_flag(scheduler_wall_time,_) to kernel_refc
kernel: add a resource reference counter
|
|
Can not start via rpc any more without spawning a keep alive process,
since it will stop collecting when process dies.
|
|
scheduler_wall_time is ref-counted so it will turn off
if process dies, keep the process that turns it on alive.
|
|
|
|
* maint:
Updated OTP version
Prepare release
mnesia: Fix checkpoint crash
|
|
* maint-20:
Updated OTP version
Prepare release
mnesia: Fix checkpoint crash
|
|
|
|
* ingela/inets/httpc-tests:
inets: Add missing argument in httpc_SUITE
|
|
|
|
* ingela/ssl/engin-ug-doc:
ssl: Add engine use case to Users Guide
|
|
* raimo/stdlib/rand-uniformity:
Tweak statistics limits
Improve check on normal distribution tail
Test normal distribution
|
|
|
|
|
|
* dgud/mnesia/checkpoint-crash/OTP-14841:
mnesia: Fix checkpoint crash
|
|
* dgud/mnesia/slow-startup/OTP-14829:
mnesia: Read schema user properties directly
|
|
Bad timing can cause retain messages to go to a new process if
checkpoint name is reused directly and the checkpoints contain
different tables.
Ignore those messages instead of crash.
|
|
* maint:
Updated OTP version
Prepare release
mnesia: Read schema user properties directly
ssh: testcases for space trailing Hello msg
ssh: Don't remove trailing WS in Hello msg
|
|
* maint-19:
Updated OTP version
Prepare release
mnesia: Read schema user properties directly
ssh: testcases for space trailing Hello msg
ssh: Don't remove trailing WS in Hello msg
|
|
Delay creation of stack frames
|
|
|
|
|
|
|
|
* rickard/node-mon-proc-exit-race/OTP-14781:
Fix triggering of node monitors
|
|
* dgud/mnesia/slow-startup/OTP-14829:
mnesia: Read schema user properties directly
|
|
* dgud/mnesia/backup-error-handling/OTP-14776:
mnesia: Fix error handling in abort write
|
|
* john/erts/fix-close-eintr/OTP-14775:
Remove invalid EINTR loop around close(2)
|
|
* hans/ssh/dont_remove_trailing_ws_19/OTP-14763:
ssh: testcases for space trailing Hello msg
ssh: Don't remove trailing WS in Hello msg
|
|
|
|
* bjorn/compiler/coverage:
beam_utils: Refactor combine_alloc_lists() to cover more lines
map_SUITE: Cover beam_utils:bif_to_test/3
beam_disasm: Remove support for obsolete instructions
guard_SUITE: Test is_bitstring/1 and is_map/1 on literals
|
|
* maint:
Updated OTP version
Prepare release
ssh: Special treatment of OpenSSH clients >= 7.2 rsa-sha2-* public keys
Conflicts:
OTP_VERSION
|
|
* maint-20:
Updated OTP version
Prepare release
ssh: Special treatment of OpenSSH clients >= 7.2 rsa-sha2-* public keys
|
|
v3_codegen currently wraps a stack frame around each clause in
a function (unless the clause is simple without any 'case' or
other complex constructions).
Consider this function:
f({a,X}) ->
A = abs(X),
case A of
0 ->
{result,"0"};
_ ->
{result,integer_to_list(A)}
end;
f(_) ->
error.
The first clause needs a stack frame because there is a function
call to integer_to_list/1 not in the tail position. v3_codegen
currently wraps the entire first clause in stack frame.
We can delay the creation of the stack frame, and create a
stack frame in each arm of the 'case' (if needed):
f({a,X}) ->
A = abs(X),
case A of
0 ->
%% Don't create a stack frame here.
{result,"0"};
_ ->
%% Create a stack frame here.
{result,integer_to_list(A)}
end;
f(_) ->
error.
There are pros and cons of this approach.
The cons are that the code size may increase if there are many
'case' clauses and each needs its own stack frame. The allocation
instructions may also interfere with other optimizations, but
the new optimizations introduced in previous commits will mitigate
most of those issues.
The pros are the following:
* For some clauses in a 'case', there is no need to create any
stack frame at all.
* Often when moving an allocation instruction into a 'case' clause,
the slightly cheaper 'allocate' instruction can be used instead
of 'allocate_zero'. There is also the possibility that the
allocate instruction can be be combined with a 'test_heap'
instruction.
* Each stack frame for each arm of the 'case' will have exactly as
many slots as needed.
|
|
When rewriting tuple matching of the first element of a tuple to an
is_tagged_tuple instruction, the get_tuple_element instruction that
fetches the tag will be left unless the register that is fetched is
subsequently killed.
We can do better than that. If the register is referenced in an
allocating instruction, but its value is never actually used, we
can do one of two things: if the value is known to be defined earlier
(using annotations added by beam_utils:anno_defs/1) the instruction
can be removed altogether; if not, it can be replaced with a
'move nil TagRegister' instruction.
|
|
Use annotations added by beam_utils:anno_defs/1 to move more
allocations upwards in the instruction stream. That in turn
allows us to optimize away more 'move' instructions.
|
|
To avoid having to call both is_killed/3 and is_not_used/3,
add usage/3 to answer both questions in one call.
|
|
Add beam_utils:anno_defs/1 which will add an annotation to the
beginning of each block indicating which X registers that are
defined. Having that information can improve some optimizations.
|
|
|
|
|
|
* ingela/inets/http-benchmarks:
inets: Add comparable benchmark tests
inets: Create httpd benchmark framwork
|
|
|
|
|
|
|
|
|
|
maint-20
* hans/ssh/openssh_client_pubkey_sha2/ERL-531/OTP-14827:
ssh: Special treatment of OpenSSH clients >= 7.2 rsa-sha2-* public keys
|
|
Thoose clients signs with sha instead of sha2-*. Try first to verify with the correct one, and if that fails, retry with sha1.
|
|
|
|
* ingela/dtls/fallback-SCSV/OTP-14828:
ssl: Align (with DTLS) and correct TLS_FALLBACK_SCSV handling
|
|
|
|
Doing a proper transaction handling of user properties (in current
implmenentation) caused schema_transactions to be quadratic which
caused huge startup times for nodes with many tables since the merge schema
is a schema_transaction.
Do a direct read instead, cheap but implies that the plugin changes
will not be visible until the changes are commited and cannot be used
later in same transaction, which was possible before if undocumented
functions where used.
|
|
Add -MMD option to erlc
OTP-14830
|