Age | Commit message (Collapse) | Author |
|
|
|
Also handles code compiled by OTP 21 and earlier.
|
|
'sverker/erts/process-info-reductions-idle-proc/ERL-964/OTP-15865' into maint-22
* sverker/erts/process-info-reductions-idle-proc/ERL-964/OTP-15865:
erts: Improve test of process_info(reductions)
Revert "erts: Force process_info(reductions) as signal"
|
|
* sverker/erts/break-p-segv/ERL-965/OTP-15873:
erts: Fix SEGV crash on shell break (p)roc info
|
|
This commit only affects the implementation of ETS `ordered_set`
tables with the `write_concurrency` option enabled. Such tables are
implemented with a data structure that is called the contention
adapting search tree (CA tree). This commit introduces the following
changes:
* This commit causes a join to be triggered in one randomly selected
base node in about one of 1000 read unlock calls for base node
locks. No such joins happened before this commit. Before this
commit, operations that only acquired looks in read-mode never
triggered any contention adaptation. Therefore, the CA tree could
get stuck in a sub-optimal state in certain scenarios. This could
happen, for example, when a CA tree is first populated with parallel
inserts (which will cause splits of base nodes) and then only
read-only operations are applied to the data structure. Benchmark
results from the
`ets_SUITE:lookup_catree_par_vs_seq_init_benchmark/0` benchmark
function (which is included in this commit) shows that this change
can improve the throughput of the CA tree in the scenario described
above.
* Read-only operations will now also increase values of statistics
counters when they detect that they need to wait for other
operations. Only write operation changed statistics counters before
this commit. This improves the statistics that the adaptation
heuristics is based on.
* Additionally, this commit adds an upper and lower limit to the
contention statistics variables in the base nodes. Such limits did
not exist before this commit. This should, for example, make the CA
tree more responsive to contention after long periods of low
contention.
|
|
* maint:
erts: Fix bad loader optimization of get_tuple_element
beam_ssa_type: Fix incorrect bitstring unit determination
|
|
into maint
* john/erts/fix-bad-get_tuple_element-opt/OTP-15871/ERIERL-374:
erts: Fix bad loader optimization of get_tuple_element
|
|
|
|
'sverker/erts/process-info-reductions-idle-proc/ERL-964/OTP-15865' into maint
* sverker/erts/process-info-reductions-idle-proc/ERL-964/OTP-15865:
erts: Improve test of process_info(reductions)
Revert "erts: Force process_info(reductions) as signal"
|
|
|
|
* sverker/erts/break-p-segv/ERL-965/OTP-15873:
erts: Fix SEGV crash on shell break (p)roc info
|
|
The following sequence would be wrongly optimized into a
i_get_tuple_element2 instruction, reading an element from the
wrong tuple:
{get_tuple_element,{x,0},1,{x,0}}.
{get_tuple_element,{x,0},2,{x,1}}.
|
|
esdp==NULL if run by non scheduler thread.
|
|
This reverts commit 70dbf671a8196110d2aee2e7507afc2c2c75183f.
As the comment of 70dbf671a8 itself indicates, that "fix" is not really
necessary. It has, however, the bad effect of always consuming reductions of the
process you want to know reduction from, that is you can't meassure reduction
count without affecting it.
|
|
Only the dist_util code is using this function and it already
is compatible with a non-boolean value.
|
|
|
|
* sverker/seq-trace-label-old-heap-bug/ERL-700/OTP-15849:
erts: Fix faulty spec for seq_trace:set_token/2
erts: Fix seq_trace:print/2 for arbitrary labels
erts: Fix bug in seq_trace:set_token(label,_)
|
|
* bjorn/erts/fix-wrong-class/ERIERL-367/OTP-15834:
Fix sticky class in exception
|
|
|
|
I suspect XCOFF shenanigans.
|
|
|
|
Would raise badarg if Label was not atom or small integer.
|
|
If internal seq-trace tuple is on old heap
an incorrect ref from old to new heap was made.
|
|
jhogberg/john/erts/seq-trace-on-spawn/OTP-15232/ERL-700
Propagate seq_trace tokens to spawned processes
|
|
Without this I wasn't able to compile the debug emulator, the compilation
would fail with "section attribute is specified on redeclared variable" errors.
|
|
* john/misc-fixes-and-additions:
beam_validator: Fail when trying to set the type of a dead value
beam_validator: Fix bad comment formatting/wording
erts: Assert that GC should not be disabled twice
|
|
The erlang:phash2 functions did not yield even if the input was very
large and a call to one of the functions did only consume a single
reduction. This commit fixes these problems.
|
|
* maint:
Fix sticky class in exception
|
|
* bjorn/erts/fix-wrong-class/ERIERL-367/OTP-15834:
Fix sticky class in exception
|
|
|
|
When catching an exception re-throwing with a changed
class, the class could be changed to the original class
if the exception got caught and rethrown in (for example)
an after block:
sticky_class() ->
try
try
throw(reason)
catch
throw:Reason:Stack ->
erlang:raise(error, Reason, Stack)
end
after
ok
end.
|
|
BEAM has had a `swap` instruction for several releases, but it was not
known to the compiler. The loader would translate a sequence of three
`move` instructions to the `swap` instructions, but only when it was
possible to determine that it would be safe.
By making `swap` known to the compiler, it can be applied in more
situations since it is easier for the compiler than for the loader
to ensure that the usage is safe, and the loader shenanigans can be
eliminated.
|
|
This reverts revert-commit d293c3ff700c1a0992a32dc3da9ae18964893c23.
|
|
Always encode with 32-bit creation value.
This reverts revert-commit a99df168b6d7ce37cfff781347ca8a15aaab133b.
|
|
This reverts revert-commit 1ba8bf12eddb363481b1b5856af7c4d7c3313e52.
|
|
into maint
* john/erts/fix-xxx_to_existing_atom-overflow/ERL-944/OTP-15819:
erts: Fix buffer overflow in xxx_to_existing_atom
|
|
|
|
|
|
After calculating the length of a list, length/1 would accidentally
bump all remaining reductions, forcing the process to yield. Correct
the calculation.
|
|
* sverker/process_info-reductions-fix/OTP-15793:
erts: Force process_info(reductions) as signal
erts: Fix another bug in process_info(reductions)
|
|
|
|
* sverker/process_info-reductions-fix/OTP-15793:
erts: Force process_info(reductions) as signal
erts: Fix another bug in process_info(reductions)
|
|
Not 100% sure this is needed to get correct reductions
as the direct query is not done if process is RUNNING anyway.
|
|
* lukas/erts/distr-frag-fixes:
erts: Add documentation for distribution fragments
|
|
|
|
* sverker/tw-assert:
erts: Fix bug in timer wheel at cancel during bump yield
erts: Tidy up some harmless code typos
|
|
|
|
* lukas/erts/distr-frag-fixes:
Update run-dialyzer script to be more generic and aggressive
erts: Fix memory leak for down/exit message
|
|
* john/erts/alloc-header-packing-win64:
erts_alloc: Fix header packing on Win64
|
|
When a fragmented down/exit is sent to a non-existing process the message
would just be dropped without being deallocated.
|